Root/
Source at commit 1146 created 12 years 11 months ago. By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing). | |
---|---|
1 | #ifndef␉_ledger_user_␊ |
2 | #define␉_ledger_user_␊ |
3 | ␊ |
4 | /* Module ledger */␊ |
5 | ␊ |
6 | #include <string.h>␊ |
7 | #include <mach/ndr.h>␊ |
8 | #include <mach/boolean.h>␊ |
9 | #include <mach/kern_return.h>␊ |
10 | #include <mach/notify.h>␊ |
11 | #include <mach/mach_types.h>␊ |
12 | #include <mach/message.h>␊ |
13 | #include <mach/mig_errors.h>␊ |
14 | #include <mach/port.h>␊ |
15 | ␊ |
16 | #ifdef AUTOTEST␊ |
17 | #ifndef FUNCTION_PTR_T␊ |
18 | #define FUNCTION_PTR_T␊ |
19 | typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);␊ |
20 | typedef struct {␊ |
21 | char *name;␊ |
22 | function_ptr_t function;␊ |
23 | } function_table_entry;␊ |
24 | typedef function_table_entry *function_table_t;␊ |
25 | #endif /* FUNCTION_PTR_T */␊ |
26 | #endif /* AUTOTEST */␊ |
27 | ␊ |
28 | #ifndef␉ledger_MSG_COUNT␊ |
29 | #define␉ledger_MSG_COUNT␉4␊ |
30 | #endif␉/* ledger_MSG_COUNT */␊ |
31 | ␊ |
32 | #include <mach/std_types.h>␊ |
33 | #include <mach/mig.h>␊ |
34 | #include <mach/mach_types.h>␊ |
35 | ␊ |
36 | #ifdef __BeforeMigUserHeader␊ |
37 | __BeforeMigUserHeader␊ |
38 | #endif /* __BeforeMigUserHeader */␊ |
39 | ␊ |
40 | #include <sys/cdefs.h>␊ |
41 | __BEGIN_DECLS␊ |
42 | ␊ |
43 | ␊ |
44 | /* Routine ledger_create */␊ |
45 | #ifdef␉mig_external␊ |
46 | mig_external␊ |
47 | #else␊ |
48 | extern␊ |
49 | #endif␉/* mig_external */␊ |
50 | kern_return_t ledger_create␊ |
51 | (␊ |
52 | ␉ledger_t parent_ledger,␊ |
53 | ␉ledger_t ledger_ledger,␊ |
54 | ␉ledger_t *new_ledger,␊ |
55 | ␉ledger_item_t transfer␊ |
56 | );␊ |
57 | ␊ |
58 | /* Routine ledger_terminate */␊ |
59 | #ifdef␉mig_external␊ |
60 | mig_external␊ |
61 | #else␊ |
62 | extern␊ |
63 | #endif␉/* mig_external */␊ |
64 | kern_return_t ledger_terminate␊ |
65 | (␊ |
66 | ␉ledger_t ledger␊ |
67 | );␊ |
68 | ␊ |
69 | /* Routine ledger_transfer */␊ |
70 | #ifdef␉mig_external␊ |
71 | mig_external␊ |
72 | #else␊ |
73 | extern␊ |
74 | #endif␉/* mig_external */␊ |
75 | kern_return_t ledger_transfer␊ |
76 | (␊ |
77 | ␉ledger_t parent_ledger,␊ |
78 | ␉ledger_t child_ledger,␊ |
79 | ␉ledger_item_t transfer␊ |
80 | );␊ |
81 | ␊ |
82 | /* Routine ledger_read */␊ |
83 | #ifdef␉mig_external␊ |
84 | mig_external␊ |
85 | #else␊ |
86 | extern␊ |
87 | #endif␉/* mig_external */␊ |
88 | kern_return_t ledger_read␊ |
89 | (␊ |
90 | ␉ledger_t ledger,␊ |
91 | ␉ledger_item_t *balance,␊ |
92 | ␉ledger_item_t *limit␊ |
93 | );␊ |
94 | ␊ |
95 | __END_DECLS␊ |
96 | ␊ |
97 | /********************** Caution **************************/␊ |
98 | /* The following data types should be used to calculate */␊ |
99 | /* maximum message sizes only. The actual message may be */␊ |
100 | /* smaller, and the position of the arguments within the */␊ |
101 | /* message layout may vary from what is presented here. */␊ |
102 | /* For example, if any of the arguments are variable- */␊ |
103 | /* sized, and less than the maximum is sent, the data */␊ |
104 | /* will be packed tight in the actual message to reduce */␊ |
105 | /* the presence of holes. */␊ |
106 | /********************** Caution **************************/␊ |
107 | ␊ |
108 | /* typedefs for all requests */␊ |
109 | ␊ |
110 | #ifndef __Request__ledger_subsystem__defined␊ |
111 | #define __Request__ledger_subsystem__defined␊ |
112 | ␊ |
113 | #ifdef __MigPackStructs␊ |
114 | #pragma pack(4)␊ |
115 | #endif␊ |
116 | ␉typedef struct {␊ |
117 | ␉␉mach_msg_header_t Head;␊ |
118 | ␉␉/* start of the kernel processed data */␊ |
119 | ␉␉mach_msg_body_t msgh_body;␊ |
120 | ␉␉mach_msg_port_descriptor_t ledger_ledger;␊ |
121 | ␉␉/* end of the kernel processed data */␊ |
122 | ␉␉NDR_record_t NDR;␊ |
123 | ␉␉ledger_item_t transfer;␊ |
124 | ␉} __Request__ledger_create_t;␊ |
125 | #ifdef __MigPackStructs␊ |
126 | #pragma pack()␊ |
127 | #endif␊ |
128 | ␊ |
129 | #ifdef __MigPackStructs␊ |
130 | #pragma pack(4)␊ |
131 | #endif␊ |
132 | ␉typedef struct {␊ |
133 | ␉␉mach_msg_header_t Head;␊ |
134 | ␉} __Request__ledger_terminate_t;␊ |
135 | #ifdef __MigPackStructs␊ |
136 | #pragma pack()␊ |
137 | #endif␊ |
138 | ␊ |
139 | #ifdef __MigPackStructs␊ |
140 | #pragma pack(4)␊ |
141 | #endif␊ |
142 | ␉typedef struct {␊ |
143 | ␉␉mach_msg_header_t Head;␊ |
144 | ␉␉/* start of the kernel processed data */␊ |
145 | ␉␉mach_msg_body_t msgh_body;␊ |
146 | ␉␉mach_msg_port_descriptor_t child_ledger;␊ |
147 | ␉␉/* end of the kernel processed data */␊ |
148 | ␉␉NDR_record_t NDR;␊ |
149 | ␉␉ledger_item_t transfer;␊ |
150 | ␉} __Request__ledger_transfer_t;␊ |
151 | #ifdef __MigPackStructs␊ |
152 | #pragma pack()␊ |
153 | #endif␊ |
154 | ␊ |
155 | #ifdef __MigPackStructs␊ |
156 | #pragma pack(4)␊ |
157 | #endif␊ |
158 | ␉typedef struct {␊ |
159 | ␉␉mach_msg_header_t Head;␊ |
160 | ␉} __Request__ledger_read_t;␊ |
161 | #ifdef __MigPackStructs␊ |
162 | #pragma pack()␊ |
163 | #endif␊ |
164 | #endif /* !__Request__ledger_subsystem__defined */␊ |
165 | ␊ |
166 | /* union of all requests */␊ |
167 | ␊ |
168 | #ifndef __RequestUnion__ledger_subsystem__defined␊ |
169 | #define __RequestUnion__ledger_subsystem__defined␊ |
170 | union __RequestUnion__ledger_subsystem {␊ |
171 | ␉__Request__ledger_create_t Request_ledger_create;␊ |
172 | ␉__Request__ledger_terminate_t Request_ledger_terminate;␊ |
173 | ␉__Request__ledger_transfer_t Request_ledger_transfer;␊ |
174 | ␉__Request__ledger_read_t Request_ledger_read;␊ |
175 | };␊ |
176 | #endif /* !__RequestUnion__ledger_subsystem__defined */␊ |
177 | /* typedefs for all replies */␊ |
178 | ␊ |
179 | #ifndef __Reply__ledger_subsystem__defined␊ |
180 | #define __Reply__ledger_subsystem__defined␊ |
181 | ␊ |
182 | #ifdef __MigPackStructs␊ |
183 | #pragma pack(4)␊ |
184 | #endif␊ |
185 | ␉typedef struct {␊ |
186 | ␉␉mach_msg_header_t Head;␊ |
187 | ␉␉/* start of the kernel processed data */␊ |
188 | ␉␉mach_msg_body_t msgh_body;␊ |
189 | ␉␉mach_msg_port_descriptor_t new_ledger;␊ |
190 | ␉␉/* end of the kernel processed data */␊ |
191 | ␉} __Reply__ledger_create_t;␊ |
192 | #ifdef __MigPackStructs␊ |
193 | #pragma pack()␊ |
194 | #endif␊ |
195 | ␊ |
196 | #ifdef __MigPackStructs␊ |
197 | #pragma pack(4)␊ |
198 | #endif␊ |
199 | ␉typedef struct {␊ |
200 | ␉␉mach_msg_header_t Head;␊ |
201 | ␉␉NDR_record_t NDR;␊ |
202 | ␉␉kern_return_t RetCode;␊ |
203 | ␉} __Reply__ledger_terminate_t;␊ |
204 | #ifdef __MigPackStructs␊ |
205 | #pragma pack()␊ |
206 | #endif␊ |
207 | ␊ |
208 | #ifdef __MigPackStructs␊ |
209 | #pragma pack(4)␊ |
210 | #endif␊ |
211 | ␉typedef struct {␊ |
212 | ␉␉mach_msg_header_t Head;␊ |
213 | ␉␉NDR_record_t NDR;␊ |
214 | ␉␉kern_return_t RetCode;␊ |
215 | ␉} __Reply__ledger_transfer_t;␊ |
216 | #ifdef __MigPackStructs␊ |
217 | #pragma pack()␊ |
218 | #endif␊ |
219 | ␊ |
220 | #ifdef __MigPackStructs␊ |
221 | #pragma pack(4)␊ |
222 | #endif␊ |
223 | ␉typedef struct {␊ |
224 | ␉␉mach_msg_header_t Head;␊ |
225 | ␉␉NDR_record_t NDR;␊ |
226 | ␉␉kern_return_t RetCode;␊ |
227 | ␉␉ledger_item_t balance;␊ |
228 | ␉␉ledger_item_t limit;␊ |
229 | ␉} __Reply__ledger_read_t;␊ |
230 | #ifdef __MigPackStructs␊ |
231 | #pragma pack()␊ |
232 | #endif␊ |
233 | #endif /* !__Reply__ledger_subsystem__defined */␊ |
234 | ␊ |
235 | /* union of all replies */␊ |
236 | ␊ |
237 | #ifndef __ReplyUnion__ledger_subsystem__defined␊ |
238 | #define __ReplyUnion__ledger_subsystem__defined␊ |
239 | union __ReplyUnion__ledger_subsystem {␊ |
240 | ␉__Reply__ledger_create_t Reply_ledger_create;␊ |
241 | ␉__Reply__ledger_terminate_t Reply_ledger_terminate;␊ |
242 | ␉__Reply__ledger_transfer_t Reply_ledger_transfer;␊ |
243 | ␉__Reply__ledger_read_t Reply_ledger_read;␊ |
244 | };␊ |
245 | #endif /* !__RequestUnion__ledger_subsystem__defined */␊ |
246 | ␊ |
247 | #ifndef subsystem_to_name_map_ledger␊ |
248 | #define subsystem_to_name_map_ledger \␊ |
249 | { "ledger_create", 5000 },\␊ |
250 | { "ledger_terminate", 5001 },\␊ |
251 | { "ledger_transfer", 5002 },\␊ |
252 | { "ledger_read", 5003 }␊ |
253 | #endif␊ |
254 | ␊ |
255 | #ifdef __AfterMigUserHeader␊ |
256 | __AfterMigUserHeader␊ |
257 | #endif /* __AfterMigUserHeader */␊ |
258 | ␊ |
259 | #endif␉ /* _ledger_user_ */␊ |
260 |