| xf.li | bdd93d5 | 2023-05-12 07:10:14 -0700 | [diff] [blame] | 1 | /* Standard header for all Mach programs. | 
|  | 2 | Copyright (C) 1993-2016 Free Software Foundation, Inc. | 
|  | 3 | This file is part of the GNU C Library. | 
|  | 4 |  | 
|  | 5 | The GNU C Library is free software; you can redistribute it and/or | 
|  | 6 | modify it under the terms of the GNU Lesser General Public | 
|  | 7 | License as published by the Free Software Foundation; either | 
|  | 8 | version 2.1 of the License, or (at your option) any later version. | 
|  | 9 |  | 
|  | 10 | The GNU C Library is distributed in the hope that it will be useful, | 
|  | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | 13 | Lesser General Public License for more details. | 
|  | 14 |  | 
|  | 15 | You should have received a copy of the GNU Lesser General Public | 
|  | 16 | License along with the GNU C Library; if not, see | 
|  | 17 | <http://www.gnu.org/licenses/>.  */ | 
|  | 18 |  | 
|  | 19 | #ifndef	_MACH_H | 
|  | 20 |  | 
|  | 21 | #define	_MACH_H	1 | 
|  | 22 |  | 
|  | 23 | /* We must include this before using __need_FILE with <stdio.h> below.  */ | 
|  | 24 | #include <features.h> | 
|  | 25 |  | 
|  | 26 |  | 
|  | 27 | /* Get the basic types used by Mach.  */ | 
|  | 28 | #include <mach/mach_types.h> | 
|  | 29 |  | 
|  | 30 | /* This declares the basic variables and macros everything needs.  */ | 
|  | 31 | #include <mach_init.h> | 
|  | 32 |  | 
|  | 33 | /* This declares all the real system call functions.  */ | 
|  | 34 | #include <mach/mach_traps.h> | 
|  | 35 |  | 
|  | 36 | /* These are MiG-generated headers for the kernel interfaces commonly used.  */ | 
|  | 37 | #include <mach/mach_interface.h> /* From <mach/mach.defs>.  */ | 
|  | 38 | #include <mach/mach_port.h> | 
|  | 39 | #include <mach/mach_host.h> | 
|  | 40 |  | 
|  | 41 | /* For the kernel RPCs which have system call shortcut versions, | 
|  | 42 | the MiG-generated header in fact declares `CALL_rpc' rather than `CALL'. | 
|  | 43 | This file declares the simple `CALL' functions.  */ | 
|  | 44 | #include <mach-shortcuts.h> | 
|  | 45 |  | 
|  | 46 |  | 
|  | 47 | /* Receive RPC request messages on RCV_NAME and pass them to DEMUX, which | 
|  | 48 | decodes them and produces reply messages.  MAX_SIZE is the maximum size | 
|  | 49 | (in bytes) of the request and reply buffers.  */ | 
|  | 50 | extern mach_msg_return_t | 
|  | 51 | __mach_msg_server (boolean_t (*__demux) (mach_msg_header_t *__request, | 
|  | 52 | mach_msg_header_t *__reply), | 
|  | 53 | mach_msg_size_t __max_size, | 
|  | 54 | mach_port_t __rcv_name), | 
|  | 55 | mach_msg_server (boolean_t (*__demux) (mach_msg_header_t *__request, | 
|  | 56 | mach_msg_header_t *__reply), | 
|  | 57 | mach_msg_size_t __max_size, | 
|  | 58 | mach_port_t __rcv_name); | 
|  | 59 |  | 
|  | 60 | /* Just like `mach_msg_server', but the OPTION and TIMEOUT parameters are | 
|  | 61 | passed on to `mach_msg'.  */ | 
|  | 62 | extern mach_msg_return_t | 
|  | 63 | __mach_msg_server_timeout (boolean_t (*__demux) (mach_msg_header_t *__request, | 
|  | 64 | mach_msg_header_t *__reply), | 
|  | 65 | mach_msg_size_t __max_size, | 
|  | 66 | mach_port_t __rcv_name, | 
|  | 67 | mach_msg_option_t __option, | 
|  | 68 | mach_msg_timeout_t __timeout), | 
|  | 69 | mach_msg_server_timeout (boolean_t (*__demux) (mach_msg_header_t *__request, | 
|  | 70 | mach_msg_header_t *__reply), | 
|  | 71 | mach_msg_size_t __max_size, | 
|  | 72 | mach_port_t __rcv_name, | 
|  | 73 | mach_msg_option_t __option, | 
|  | 74 | mach_msg_timeout_t __timeout); | 
|  | 75 |  | 
|  | 76 |  | 
|  | 77 | /* Deallocate all port rights and out-of-line memory in MSG. */ | 
|  | 78 | extern void | 
|  | 79 | __mach_msg_destroy (mach_msg_header_t *msg), | 
|  | 80 | mach_msg_destroy (mach_msg_header_t *msg); | 
|  | 81 |  | 
|  | 82 |  | 
|  | 83 | #define __need_FILE | 
|  | 84 | #include <stdio.h> | 
|  | 85 |  | 
|  | 86 | /* Open a stream on a Mach device.  */ | 
|  | 87 | extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode); | 
|  | 88 |  | 
|  | 89 | /* Give THREAD a stack and set it to run at PC when resumed. | 
|  | 90 | If *STACK_SIZE is nonzero, that size of stack is allocated. | 
|  | 91 | If *STACK_BASE is nonzero, that stack location is used. | 
|  | 92 | If STACK_BASE is not null it is filled in with the chosen stack base. | 
|  | 93 | If STACK_SIZE is not null it is filled in with the chosen stack size. | 
|  | 94 | Regardless, an extra page of red zone is allocated off the end; this | 
|  | 95 | is not included in *STACK_SIZE.  */ | 
|  | 96 | kern_return_t __mach_setup_thread (task_t task, thread_t thread, void *pc, | 
|  | 97 | vm_address_t *stack_base, | 
|  | 98 | vm_size_t *stack_size); | 
|  | 99 | kern_return_t mach_setup_thread (task_t task, thread_t thread, void *pc, | 
|  | 100 | vm_address_t *stack_base, | 
|  | 101 | vm_size_t *stack_size); | 
|  | 102 |  | 
|  | 103 |  | 
|  | 104 | #endif	/* mach.h */ |