Root/
Source at commit 1084 created 13 years 1 month ago. By meklort, BiosDisk Read() function working. Write() complete but untested | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 2000-2007 Apple Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * This file contains Original Code and/or Modifications of Original Code␊ |
7 | * as defined in and that are subject to the Apple Public Source License␊ |
8 | * Version 2.0 (the 'License'). You may not use this file except in␊ |
9 | * compliance with the License. The rights granted to you under the License␊ |
10 | * may not be used to create, or enable the creation or redistribution of,␊ |
11 | * unlawful or unlicensed copies of an Apple operating system, or to␊ |
12 | * circumvent, violate, or enable the circumvention or violation of, any␊ |
13 | * terms of an Apple operating system software license agreement.␊ |
14 | * ␊ |
15 | * Please obtain a copy of the License at␊ |
16 | * http://www.opensource.apple.com/apsl/ and read it before using this file.␊ |
17 | * ␊ |
18 | * The Original Code and all software distributed under the License are␊ |
19 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
20 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
21 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
22 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.␊ |
23 | * Please see the License for the specific language governing rights and␊ |
24 | * limitations under the License.␊ |
25 | * ␊ |
26 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@␊ |
27 | */␊ |
28 | /*␊ |
29 | * @OSF_COPYRIGHT@␊ |
30 | */␊ |
31 | ␊ |
32 | /*␊ |
33 | * Mach MIG Subsystem Interfaces␊ |
34 | */␊ |
35 | ␊ |
36 | #ifndef␉_MACH_MIG_H_␊ |
37 | #define _MACH_MIG_H_␊ |
38 | ␊ |
39 | #include <stdint.h>␊ |
40 | #include <mach/port.h>␊ |
41 | #include <mach/message.h>␊ |
42 | #include <mach/vm_types.h>␊ |
43 | ␊ |
44 | #include <sys/cdefs.h>␊ |
45 | ␊ |
46 | #if defined(MACH_KERNEL)␊ |
47 | ␊ |
48 | #if defined(BSMALL_LATER)␊ |
49 | /* Really small configurations don't need type checking */␊ |
50 | #define __MigTypeCheck 0␊ |
51 | #else␊ |
52 | /* Turn MIG type checking on by default for kernel */␊ |
53 | #define __MigTypeCheck 1␊ |
54 | #endif␊ |
55 | #define __MigKernelSpecificCode 1␊ |
56 | #define _MIG_KERNEL_SPECIFIC_CODE_ 1␊ |
57 | ␊ |
58 | /* Otherwise check legacy setting (temporary) */␊ |
59 | #elif defined(TypeCheck) ␊ |
60 | ␊ |
61 | #define __MigTypeCheck TypeCheck␊ |
62 | ␊ |
63 | #elif !defined(__MigTypeCheck)␊ |
64 | ␊ |
65 | /* otherwise, default MIG type checking on - except in small configurations */␊ |
66 | #if defined(BSMALL)␊ |
67 | #define __MigTypeCheck 0␊ |
68 | #else␊ |
69 | #define __MigTypeCheck 1␊ |
70 | #endif␊ |
71 | ␊ |
72 | #endif /* !defined(__MigTypeCheck) */␊ |
73 | ␊ |
74 | /*␊ |
75 | * Pack MIG message structs.␊ |
76 | * This is an indicator of the need to view shared structs in a␊ |
77 | * binary-compatible format - and MIG message structs are no different.␊ |
78 | */␊ |
79 | #define __MigPackStructs 1␊ |
80 | ␊ |
81 | /*␊ |
82 | * Definition for MIG-generated server stub routines. These routines␊ |
83 | * unpack the request message, call the server procedure, and pack the␊ |
84 | * reply message.␊ |
85 | */␊ |
86 | typedef void␉(*mig_stub_routine_t) (mach_msg_header_t *InHeadP,␊ |
87 | ␉␉␉␉ mach_msg_header_t *OutHeadP);␊ |
88 | ␊ |
89 | typedef mig_stub_routine_t mig_routine_t;␊ |
90 | ␊ |
91 | /*␊ |
92 | * Definition for MIG-generated server routine. This routine takes a␊ |
93 | * message, and returns the appropriate stub function for handling that␊ |
94 | * message.␊ |
95 | */␊ |
96 | typedef mig_routine_t (*mig_server_routine_t) (mach_msg_header_t *InHeadP);␊ |
97 | ␊ |
98 | /*␊ |
99 | * Generic definition for implementation routines. These routines do␊ |
100 | * the real work associated with this request. This generic type is␊ |
101 | * used for keeping the pointers in the subsystem array.␊ |
102 | */␊ |
103 | typedef kern_return_t (*mig_impl_routine_t)(void);␊ |
104 | ␊ |
105 | typedef mach_msg_type_descriptor_t routine_arg_descriptor;␊ |
106 | typedef mach_msg_type_descriptor_t *routine_arg_descriptor_t;␊ |
107 | typedef mach_msg_type_descriptor_t *mig_routine_arg_descriptor_t;␊ |
108 | ␊ |
109 | #define MIG_ROUTINE_ARG_DESCRIPTOR_NULL ((mig_routine_arg_descriptor_t)0)␊ |
110 | ␊ |
111 | struct routine_descriptor {␊ |
112 | ␉mig_impl_routine_t␉impl_routine;␉/* Server work func pointer */␊ |
113 | ␉mig_stub_routine_t␉stub_routine;␉/* Unmarshalling func pointer */␊ |
114 | ␉unsigned int␉␉argc;␉␉␉/* Number of argument words */␊ |
115 | ␉unsigned int␉␉descr_count;␉/* Number complex descriptors */␊ |
116 | ␉routine_arg_descriptor_t␊ |
117 | ␉␉␉␉␉␉arg_descr;␉␉/* pointer to descriptor array*/␊ |
118 | ␉unsigned int␉␉max_reply_msg;␉/* Max size for reply msg */␊ |
119 | };␊ |
120 | typedef struct routine_descriptor *routine_descriptor_t;␊ |
121 | ␊ |
122 | typedef struct routine_descriptor mig_routine_descriptor;␊ |
123 | typedef mig_routine_descriptor *mig_routine_descriptor_t;␊ |
124 | ␊ |
125 | #define MIG_ROUTINE_DESCRIPTOR_NULL ((mig_routine_descriptor_t)0)␊ |
126 | ␊ |
127 | typedef struct mig_subsystem {␊ |
128 | ␉mig_server_routine_t server;␉␉/* pointer to demux routine␉*/␊ |
129 | ␉mach_msg_id_t␉␉ start;␉␉␉/* Min routine number␉ */␊ |
130 | ␉mach_msg_id_t␉␉ end;␉␉␉/* Max routine number + 1 */␊ |
131 | ␉mach_msg_size_t␉␉ maxsize;␉␉/* Max reply message size */␊ |
132 | ␉vm_address_t␉␉ reserved;␉␉/* reserved for MIG use␉ */␊ |
133 | ␉mig_routine_descriptor␊ |
134 | ␉␉␉␉␉␉ routine[1];␉/* Routine descriptor array */␊ |
135 | } *mig_subsystem_t;␊ |
136 | ␊ |
137 | #define MIG_SUBSYSTEM_NULL␉␉((mig_subsystem_t)0)␊ |
138 | ␊ |
139 | typedef struct mig_symtab {␊ |
140 | ␉char␉␉␉␉*ms_routine_name;␊ |
141 | ␉int␉␉␉␉␉ms_routine_number;␊ |
142 | ␉void ␉␉␉(*ms_routine)(void);␉/* Since the functions in the␊ |
143 | ␉␉␉␉␉ ␉␉␉␉␉␉␉ * symbol table have unknown␊ |
144 | ␉␉␉␉␉␉␉␉␉␉␉␉ * signatures, this is the best␊ |
145 | ␉␉␉␉␉ ␉␉␉␉␉␉␉ * we can do...␊ |
146 | ␉␉␉␉␉ ␉␉␉␉␉␉␉ */␊ |
147 | } mig_symtab_t;␊ |
148 | ␊ |
149 | ␊ |
150 | __BEGIN_DECLS␊ |
151 | ␊ |
152 | /* Client side reply port allocate */␊ |
153 | extern mach_port_t mig_get_reply_port(void);␊ |
154 | ␊ |
155 | /* Client side reply port deallocate */␊ |
156 | extern void mig_dealloc_reply_port(mach_port_t reply_port);␊ |
157 | ␊ |
158 | /* Client side reply port "deallocation" */␊ |
159 | extern void mig_put_reply_port(mach_port_t reply_port);␊ |
160 | ␊ |
161 | /* Bounded string copy */␊ |
162 | extern int mig_strncpy(char␉*dest, const char *src,␉int␉len);␊ |
163 | ␊ |
164 | ␊ |
165 | /* Allocate memory for out-of-line mig structures */␊ |
166 | extern void mig_allocate(vm_address_t *, vm_size_t);␊ |
167 | ␊ |
168 | /* Deallocate memory used for out-of-line mig structures */␊ |
169 | extern void mig_deallocate(vm_address_t, vm_size_t);␊ |
170 | ␊ |
171 | ␊ |
172 | __END_DECLS␊ |
173 | ␊ |
174 | #endif␉/* _MACH_MIG_H_ */␊ |
175 |