1*fdd8201dSApple OSS Distributions /* 2*fdd8201dSApple OSS Distributions * Copyright (c) 2005-2020 Apple Computer, Inc. All rights reserved. 3*fdd8201dSApple OSS Distributions * 4*fdd8201dSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*fdd8201dSApple OSS Distributions * 6*fdd8201dSApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*fdd8201dSApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*fdd8201dSApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*fdd8201dSApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*fdd8201dSApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*fdd8201dSApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*fdd8201dSApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*fdd8201dSApple OSS Distributions * terms of an Apple operating system software license agreement. 14*fdd8201dSApple OSS Distributions * 15*fdd8201dSApple OSS Distributions * Please obtain a copy of the License at 16*fdd8201dSApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*fdd8201dSApple OSS Distributions * 18*fdd8201dSApple OSS Distributions * The Original Code and all software distributed under the License are 19*fdd8201dSApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*fdd8201dSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*fdd8201dSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*fdd8201dSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*fdd8201dSApple OSS Distributions * Please see the License for the specific language governing rights and 24*fdd8201dSApple OSS Distributions * limitations under the License. 25*fdd8201dSApple OSS Distributions * 26*fdd8201dSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*fdd8201dSApple OSS Distributions */ 28*fdd8201dSApple OSS Distributions /* 29*fdd8201dSApple OSS Distributions * @OSF_COPYRIGHT@ 30*fdd8201dSApple OSS Distributions */ 31*fdd8201dSApple OSS Distributions /* 32*fdd8201dSApple OSS Distributions * @APPLE_FREE_COPYRIGHT@ 33*fdd8201dSApple OSS Distributions */ 34*fdd8201dSApple OSS Distributions 35*fdd8201dSApple OSS Distributions #ifndef _CONSOLE_SERIAL_PROTOS_H_ 36*fdd8201dSApple OSS Distributions #define _CONSOLE_SERIAL_PROTOS_H_ 37*fdd8201dSApple OSS Distributions 38*fdd8201dSApple OSS Distributions #ifdef __cplusplus 39*fdd8201dSApple OSS Distributions extern "C" { 40*fdd8201dSApple OSS Distributions #endif 41*fdd8201dSApple OSS Distributions 42*fdd8201dSApple OSS Distributions #include <stdbool.h> 43*fdd8201dSApple OSS Distributions 44*fdd8201dSApple OSS Distributions void serial_keyboard_init(void); 45*fdd8201dSApple OSS Distributions void serial_keyboard_start(void) __dead2; 46*fdd8201dSApple OSS Distributions void serial_keyboard_poll(void) __dead2; 47*fdd8201dSApple OSS Distributions 48*fdd8201dSApple OSS Distributions extern uint32_t serialmode; 49*fdd8201dSApple OSS Distributions 50*fdd8201dSApple OSS Distributions #define SERIALMODE_OUTPUT 0x01 51*fdd8201dSApple OSS Distributions #define SERIALMODE_INPUT 0x02 52*fdd8201dSApple OSS Distributions #define SERIALMODE_SYNCDRAIN 0x04 53*fdd8201dSApple OSS Distributions #define SERIALMODE_BASE_TTY 0x08 /* Load Base/Recovery/FVUnlock TTY */ 54*fdd8201dSApple OSS Distributions #define SERIALMODE_NO_IOLOG 0x10 /* prevent IOLogs writing to serial */ 55*fdd8201dSApple OSS Distributions 56*fdd8201dSApple OSS Distributions extern uint32_t cons_ops_index; 57*fdd8201dSApple OSS Distributions extern const uint32_t nconsops; 58*fdd8201dSApple OSS Distributions extern bool disable_serial_output; 59*fdd8201dSApple OSS Distributions extern bool disable_iolog_serial_output; 60*fdd8201dSApple OSS Distributions 61*fdd8201dSApple OSS Distributions void console_init(void); 62*fdd8201dSApple OSS Distributions 63*fdd8201dSApple OSS Distributions int _serial_getc(bool wait); 64*fdd8201dSApple OSS Distributions int _vcgetc(bool wait); 65*fdd8201dSApple OSS Distributions 66*fdd8201dSApple OSS Distributions struct console_ops { 67*fdd8201dSApple OSS Distributions void (*putc)(char, bool); 68*fdd8201dSApple OSS Distributions int (*getc)(bool); 69*fdd8201dSApple OSS Distributions }; 70*fdd8201dSApple OSS Distributions 71*fdd8201dSApple OSS Distributions boolean_t console_is_serial(void); 72*fdd8201dSApple OSS Distributions int switch_to_serial_console(void); 73*fdd8201dSApple OSS Distributions int switch_to_video_console(void); 74*fdd8201dSApple OSS Distributions void switch_to_old_console(int old_console); 75*fdd8201dSApple OSS Distributions 76*fdd8201dSApple OSS Distributions #define SERIAL_CONS_OPS 0 77*fdd8201dSApple OSS Distributions #define VC_CONS_OPS 1 78*fdd8201dSApple OSS Distributions 79*fdd8201dSApple OSS Distributions #ifdef XNU_KERNEL_PRIVATE 80*fdd8201dSApple OSS Distributions 81*fdd8201dSApple OSS Distributions #define SERIAL_CONS_BUF_SIZE 256 82*fdd8201dSApple OSS Distributions struct console_printbuf_state { 83*fdd8201dSApple OSS Distributions int pos; 84*fdd8201dSApple OSS Distributions int total; 85*fdd8201dSApple OSS Distributions int flags; 86*fdd8201dSApple OSS Distributions #define CONS_PB_WRITE_NEWLINE 0x1 87*fdd8201dSApple OSS Distributions #define CONS_PB_CANBLOCK 0x2 88*fdd8201dSApple OSS Distributions char str[SERIAL_CONS_BUF_SIZE]; 89*fdd8201dSApple OSS Distributions }; 90*fdd8201dSApple OSS Distributions 91*fdd8201dSApple OSS Distributions extern int console_printbuf_drain_initialized; 92*fdd8201dSApple OSS Distributions void console_printbuf_state_init(struct console_printbuf_state * data, int write_on_newline, int can_block); 93*fdd8201dSApple OSS Distributions void console_printbuf_putc(int ch, void *arg); 94*fdd8201dSApple OSS Distributions void console_printbuf_clear(struct console_printbuf_state * info); 95*fdd8201dSApple OSS Distributions int console_write_try(char * str, int size); 96*fdd8201dSApple OSS Distributions 97*fdd8201dSApple OSS Distributions 98*fdd8201dSApple OSS Distributions #endif /* XNU_KERNEL_PRIVATE */ 99*fdd8201dSApple OSS Distributions 100*fdd8201dSApple OSS Distributions #ifdef __cplusplus 101*fdd8201dSApple OSS Distributions } 102*fdd8201dSApple OSS Distributions #endif 103*fdd8201dSApple OSS Distributions 104*fdd8201dSApple OSS Distributions 105*fdd8201dSApple OSS Distributions #endif /* _CONSOLE_SERIAL_PROTOS_H_ */ 106