1pub type nto_job_t = ::sync_t;
2
3s! {
4    pub struct intrspin {
5        pub value: ::c_uint, // volatile
6    }
7
8    pub struct iov_t {
9        pub iov_base: *mut ::c_void,  // union
10        pub iov_len: ::size_t,
11    }
12
13    pub struct _itimer {
14        pub nsec: u64,
15        pub interval_nsec: u64,
16    }
17
18    pub struct _msg_info64 {
19        pub nd: u32,
20        pub srcnd: u32,
21        pub pid: ::pid_t,
22        pub tid: i32,
23        pub chid: i32,
24        pub scoid: i32,
25        pub coid: i32,
26        pub priority: i16,
27        pub flags: i16,
28        pub msglen: isize,
29        pub srcmsglen: isize,
30        pub dstmsglen: isize,
31        pub type_id: u32,
32        reserved: u32,
33    }
34
35    pub struct _cred_info {
36        pub ruid: ::uid_t,
37        pub euid: ::uid_t,
38        pub suid: ::uid_t,
39        pub rgid: ::gid_t,
40        pub egid: ::gid_t,
41        pub sgid: ::gid_t,
42        pub ngroups: u32,
43        pub grouplist: [::gid_t; 8],
44    }
45
46    pub struct _client_info {
47        pub nd: u32,
48        pub pid: ::pid_t,
49        pub sid: ::pid_t,
50        pub flags: u32,
51        pub cred: ::_cred_info,
52    }
53
54    pub struct _client_able {
55        pub ability: u32,
56        pub flags: u32,
57        pub range_lo: u64,
58        pub range_hi: u64,
59    }
60
61    pub struct nto_channel_config {
62        pub event: ::sigevent,
63        pub num_pulses: ::c_uint,
64        pub rearm_threshold: ::c_uint,
65        pub options: ::c_uint,
66        reserved: [::c_uint; 3],
67    }
68
69    // TODO: The following structures are defined in a header file which doesn't
70    //       appear as part of the default headers found in a standard installation
71    //       of Neutrino 7.1 SDP.  Commented out for now.
72    //pub struct _asyncmsg_put_header {
73    //    pub err: ::c_int,
74    //    pub iov: *mut ::iov_t,
75    //    pub parts: ::c_int,
76    //    pub handle: ::c_uint,
77    //    pub cb: ::Option<
78    //        unsafe extern "C" fn(
79    //            err: ::c_int,
80    //            buf: *mut ::c_void,
81    //            handle: ::c_uint,
82    //        ) -> ::c_int>,
83    //    pub put_hdr_flags: ::c_uint,
84    //}
85
86    //pub struct _asyncmsg_connection_attr {
87    //    pub call_back: ::Option<
88    //        unsafe extern "C" fn(
89    //            err: ::c_int,
90    //            buff: *mut ::c_void,
91    //            handle: ::c_uint,
92    //        ) -> ::c_int>,
93    //    pub buffer_size: ::size_t,
94    //    pub max_num_buffer: ::c_uint,
95    //    pub trigger_num_msg: ::c_uint,
96    //    pub trigger_time: ::_itimer,
97    //    reserve: ::c_uint,
98    //}
99
100    //pub struct _asyncmsg_connection_descriptor {
101    //    pub flags: ::c_uint,
102    //    pub sendq_size: ::c_uint,
103    //    pub sendq_head: ::c_uint,
104    //    pub sendq_tail: ::c_uint,
105    //    pub sendq_free: ::c_uint,
106    //    pub err: ::c_int,
107    //    pub ev: ::sigevent,
108    //    pub num_curmsg: ::c_uint,
109    //    pub ttimer: ::timer_t,
110    //    pub block_con: ::pthread_cond_t,
111    //    pub mu: ::pthread_mutex_t,
112    //    reserved: ::c_uint,
113    //    pub attr: ::_asyncmsg_connection_attr,
114    //    pub reserves: [::c_uint; 3],
115    //    pub sendq: [::_asyncmsg_put_header; 1], // flexarray
116    //}
117
118    pub struct __c_anonymous_struct_ev {
119        pub event: ::sigevent,
120        pub coid: ::c_int,
121    }
122
123    pub struct _channel_connect_attr {  // union
124        pub ev: ::__c_anonymous_struct_ev,
125    }
126
127    pub struct _sighandler_info {
128        pub siginfo: ::siginfo_t,
129        pub handler: ::Option<unsafe extern "C" fn(value: ::c_int)>,
130        pub context: *mut ::c_void,
131    }
132
133    pub struct __c_anonymous_struct_time {
134        pub length: ::c_uint,
135        pub scale: ::c_uint,
136    }
137
138    pub struct _idle_hook {
139        pub hook_size: ::c_uint,
140        pub cmd: ::c_uint,
141        pub mode: ::c_uint,
142        pub latency: ::c_uint,
143        pub next_fire: u64,
144        pub curr_time: u64,
145        pub tod_adjust: u64,
146        pub resp: ::c_uint,
147        pub time: __c_anonymous_struct_time,
148        pub trigger: ::sigevent,
149        pub intrs: *mut ::c_uint,
150        pub block_stack_size: ::c_uint,
151    }
152
153    pub struct _clockadjust {
154        pub tick_count: u32,
155        pub tick_nsec_inc: i32,
156    }
157
158    pub struct qtime_entry {
159        pub cycles_per_sec: u64,
160        pub nsec_tod_adjust: u64, // volatile
161        pub nsec: u64,            // volatile
162        pub nsec_inc: u32,
163        pub boot_time: u32,
164        pub adjust: _clockadjust,
165        pub timer_rate: u32,
166        pub timer_scale: i32,
167        pub timer_load: u32,
168        pub intr: i32,
169        pub epoch: u32,
170        pub flags: u32,
171        pub rr_interval_mul: u32,
172        pub timer_load_hi: u32,
173        pub nsec_stable: u64,      // volatile
174        pub timer_load_max: u64,
175        pub timer_prog_time: u32,
176        spare: [u32; 7],
177    }
178
179    pub struct _sched_info {
180        pub priority_min: ::c_int,
181        pub priority_max: ::c_int,
182        pub interval: u64,
183        pub priority_priv: ::c_int,
184        reserved: [::c_int; 11],
185    }
186
187    pub struct _timer_info {
188        pub itime: ::_itimer,
189        pub otime: ::_itimer,
190        pub flags: u32,
191        pub tid: i32,
192        pub notify: i32,
193        pub clockid: ::clockid_t,
194        pub overruns: u32,
195        pub event: ::sigevent, // union
196    }
197
198    pub struct _clockperiod {
199        pub nsec: u32,
200        pub fract: i32,
201    }
202}
203
204s_no_extra_traits! {
205    pub struct syspage_entry_info {
206        pub entry_off: u16,
207        pub entry_size: u16,
208    }
209
210    pub struct syspage_array_info {
211        entry_off: u16,
212        entry_size: u16,
213        element_size: u16,
214    }
215
216    #[repr(align(8))]
217    pub struct syspage_entry {
218        pub size: u16,
219        pub total_size: u16,
220        pub type_: u16,
221        pub num_cpu: u16,
222        pub system_private: syspage_entry_info,
223        pub old_asinfo: syspage_entry_info,
224        pub __mangle_name_to_cause_compilation_errs_meminfo: syspage_entry_info,
225        pub hwinfo: syspage_entry_info,
226        pub old_cpuinfo: syspage_entry_info,
227        pub old_cacheattr: syspage_entry_info,
228        pub qtime: syspage_entry_info,
229        pub callout: syspage_entry_info,
230        pub callin: syspage_entry_info,
231        pub typed_strings: syspage_entry_info,
232        pub strings: syspage_entry_info,
233        pub old_intrinfo: syspage_entry_info,
234        pub smp: syspage_entry_info,
235        pub pminfo: syspage_entry_info,
236        pub old_mdriver: syspage_entry_info,
237        spare0: [u32; 1],
238        __reserved: [u8; 160], // anonymous union with architecture dependent structs
239        pub new_asinfo: syspage_array_info,
240        pub new_cpuinfo: syspage_array_info,
241        pub new_cacheattr: syspage_array_info,
242        pub new_intrinfo: syspage_array_info,
243        pub new_mdriver: syspage_array_info,
244    }
245}
246
247pub const SYSMGR_PID: u32 = 1;
248pub const SYSMGR_CHID: u32 = 1;
249pub const SYSMGR_COID: u32 = _NTO_SIDE_CHANNEL;
250pub const SYSMGR_HANDLE: u32 = 0;
251
252pub const STATE_DEAD: ::c_int = 0x00;
253pub const STATE_RUNNING: ::c_int = 0x01;
254pub const STATE_READY: ::c_int = 0x02;
255pub const STATE_STOPPED: ::c_int = 0x03;
256pub const STATE_SEND: ::c_int = 0x04;
257pub const STATE_RECEIVE: ::c_int = 0x05;
258pub const STATE_REPLY: ::c_int = 0x06;
259pub const STATE_STACK: ::c_int = 0x07;
260pub const STATE_WAITTHREAD: ::c_int = 0x08;
261pub const STATE_WAITPAGE: ::c_int = 0x09;
262pub const STATE_SIGSUSPEND: ::c_int = 0x0a;
263pub const STATE_SIGWAITINFO: ::c_int = 0x0b;
264pub const STATE_NANOSLEEP: ::c_int = 0x0c;
265pub const STATE_MUTEX: ::c_int = 0x0d;
266pub const STATE_CONDVAR: ::c_int = 0x0e;
267pub const STATE_JOIN: ::c_int = 0x0f;
268pub const STATE_INTR: ::c_int = 0x10;
269pub const STATE_SEM: ::c_int = 0x11;
270pub const STATE_WAITCTX: ::c_int = 0x12;
271pub const STATE_NET_SEND: ::c_int = 0x13;
272pub const STATE_NET_REPLY: ::c_int = 0x14;
273pub const STATE_MAX: ::c_int = 0x18;
274
275pub const _NTO_TIMEOUT_RECEIVE: i32 = 1 << STATE_RECEIVE;
276pub const _NTO_TIMEOUT_SEND: i32 = 1 << STATE_SEND;
277pub const _NTO_TIMEOUT_REPLY: i32 = 1 << STATE_REPLY;
278pub const _NTO_TIMEOUT_SIGSUSPEND: i32 = 1 << STATE_SIGSUSPEND;
279pub const _NTO_TIMEOUT_SIGWAITINFO: i32 = 1 << STATE_SIGWAITINFO;
280pub const _NTO_TIMEOUT_NANOSLEEP: i32 = 1 << STATE_NANOSLEEP;
281pub const _NTO_TIMEOUT_MUTEX: i32 = 1 << STATE_MUTEX;
282pub const _NTO_TIMEOUT_CONDVAR: i32 = 1 << STATE_CONDVAR;
283pub const _NTO_TIMEOUT_JOIN: i32 = 1 << STATE_JOIN;
284pub const _NTO_TIMEOUT_INTR: i32 = 1 << STATE_INTR;
285pub const _NTO_TIMEOUT_SEM: i32 = 1 << STATE_SEM;
286
287pub const _NTO_MI_ENDIAN_BIG: u32 = 1;
288pub const _NTO_MI_ENDIAN_DIFF: u32 = 2;
289pub const _NTO_MI_UNBLOCK_REQ: u32 = 256;
290pub const _NTO_MI_NET_CRED_DIRTY: u32 = 512;
291pub const _NTO_MI_CONSTRAINED: u32 = 1024;
292pub const _NTO_MI_CHROOT: u32 = 2048;
293pub const _NTO_MI_BITS_64: u32 = 4096;
294pub const _NTO_MI_BITS_DIFF: u32 = 8192;
295pub const _NTO_MI_SANDBOX: u32 = 16384;
296
297pub const _NTO_CI_ENDIAN_BIG: u32 = 1;
298pub const _NTO_CI_BKGND_PGRP: u32 = 4;
299pub const _NTO_CI_ORPHAN_PGRP: u32 = 8;
300pub const _NTO_CI_STOPPED: u32 = 128;
301pub const _NTO_CI_UNABLE: u32 = 256;
302pub const _NTO_CI_TYPE_ID: u32 = 512;
303pub const _NTO_CI_CHROOT: u32 = 2048;
304pub const _NTO_CI_BITS_64: u32 = 4096;
305pub const _NTO_CI_SANDBOX: u32 = 16384;
306pub const _NTO_CI_LOADER: u32 = 32768;
307pub const _NTO_CI_FULL_GROUPS: u32 = 2147483648;
308
309pub const _NTO_TI_ACTIVE: u32 = 1;
310pub const _NTO_TI_ABSOLUTE: u32 = 2;
311pub const _NTO_TI_EXPIRED: u32 = 4;
312pub const _NTO_TI_TOD_BASED: u32 = 8;
313pub const _NTO_TI_TARGET_PROCESS: u32 = 16;
314pub const _NTO_TI_REPORT_TOLERANCE: u32 = 32;
315pub const _NTO_TI_PRECISE: u32 = 64;
316pub const _NTO_TI_TOLERANT: u32 = 128;
317pub const _NTO_TI_WAKEUP: u32 = 256;
318pub const _NTO_TI_PROCESS_TOLERANT: u32 = 512;
319pub const _NTO_TI_HIGH_RESOLUTION: u32 = 1024;
320
321pub const _PULSE_TYPE: u32 = 0;
322pub const _PULSE_SUBTYPE: u32 = 0;
323pub const _PULSE_CODE_UNBLOCK: i32 = -32;
324pub const _PULSE_CODE_DISCONNECT: i32 = -33;
325pub const _PULSE_CODE_THREADDEATH: i32 = -34;
326pub const _PULSE_CODE_COIDDEATH: i32 = -35;
327pub const _PULSE_CODE_NET_ACK: i32 = -36;
328pub const _PULSE_CODE_NET_UNBLOCK: i32 = -37;
329pub const _PULSE_CODE_NET_DETACH: i32 = -38;
330pub const _PULSE_CODE_RESTART: i32 = -39;
331pub const _PULSE_CODE_NORESTART: i32 = -40;
332pub const _PULSE_CODE_UNBLOCK_RESTART: i32 = -41;
333pub const _PULSE_CODE_UNBLOCK_TIMER: i32 = -42;
334pub const _PULSE_CODE_MINAVAIL: u32 = 0;
335pub const _PULSE_CODE_MAXAVAIL: u32 = 127;
336
337pub const _NTO_HARD_FLAGS_END: u32 = 1;
338
339pub const _NTO_PULSE_IF_UNIQUE: u32 = 4096;
340pub const _NTO_PULSE_REPLACE: u32 = 8192;
341
342pub const _NTO_PF_NOCLDSTOP: u32 = 1;
343pub const _NTO_PF_LOADING: u32 = 2;
344pub const _NTO_PF_TERMING: u32 = 4;
345pub const _NTO_PF_ZOMBIE: u32 = 8;
346pub const _NTO_PF_NOZOMBIE: u32 = 16;
347pub const _NTO_PF_FORKED: u32 = 32;
348pub const _NTO_PF_ORPHAN_PGRP: u32 = 64;
349pub const _NTO_PF_STOPPED: u32 = 128;
350pub const _NTO_PF_DEBUG_STOPPED: u32 = 256;
351pub const _NTO_PF_BKGND_PGRP: u32 = 512;
352pub const _NTO_PF_NOISYNC: u32 = 1024;
353pub const _NTO_PF_CONTINUED: u32 = 2048;
354pub const _NTO_PF_CHECK_INTR: u32 = 4096;
355pub const _NTO_PF_COREDUMP: u32 = 8192;
356pub const _NTO_PF_RING0: u32 = 32768;
357pub const _NTO_PF_SLEADER: u32 = 65536;
358pub const _NTO_PF_WAITINFO: u32 = 131072;
359pub const _NTO_PF_DESTROYALL: u32 = 524288;
360pub const _NTO_PF_NOCOREDUMP: u32 = 1048576;
361pub const _NTO_PF_WAITDONE: u32 = 4194304;
362pub const _NTO_PF_TERM_WAITING: u32 = 8388608;
363pub const _NTO_PF_ASLR: u32 = 16777216;
364pub const _NTO_PF_EXECED: u32 = 33554432;
365pub const _NTO_PF_APP_STOPPED: u32 = 67108864;
366pub const _NTO_PF_64BIT: u32 = 134217728;
367pub const _NTO_PF_NET: u32 = 268435456;
368pub const _NTO_PF_NOLAZYSTACK: u32 = 536870912;
369pub const _NTO_PF_NOEXEC_STACK: u32 = 1073741824;
370pub const _NTO_PF_LOADER_PERMS: u32 = 2147483648;
371
372pub const _NTO_TF_INTR_PENDING: u32 = 65536;
373pub const _NTO_TF_DETACHED: u32 = 131072;
374pub const _NTO_TF_SHR_MUTEX: u32 = 262144;
375pub const _NTO_TF_SHR_MUTEX_EUID: u32 = 524288;
376pub const _NTO_TF_THREADS_HOLD: u32 = 1048576;
377pub const _NTO_TF_UNBLOCK_REQ: u32 = 4194304;
378pub const _NTO_TF_ALIGN_FAULT: u32 = 16777216;
379pub const _NTO_TF_SSTEP: u32 = 33554432;
380pub const _NTO_TF_ALLOCED_STACK: u32 = 67108864;
381pub const _NTO_TF_NOMULTISIG: u32 = 134217728;
382pub const _NTO_TF_LOW_LATENCY: u32 = 268435456;
383pub const _NTO_TF_IOPRIV: u32 = 2147483648;
384
385pub const _NTO_TCTL_IO_PRIV: u32 = 1;
386pub const _NTO_TCTL_THREADS_HOLD: u32 = 2;
387pub const _NTO_TCTL_THREADS_CONT: u32 = 3;
388pub const _NTO_TCTL_RUNMASK: u32 = 4;
389pub const _NTO_TCTL_ALIGN_FAULT: u32 = 5;
390pub const _NTO_TCTL_RUNMASK_GET_AND_SET: u32 = 6;
391pub const _NTO_TCTL_PERFCOUNT: u32 = 7;
392pub const _NTO_TCTL_ONE_THREAD_HOLD: u32 = 8;
393pub const _NTO_TCTL_ONE_THREAD_CONT: u32 = 9;
394pub const _NTO_TCTL_RUNMASK_GET_AND_SET_INHERIT: u32 = 10;
395pub const _NTO_TCTL_NAME: u32 = 11;
396pub const _NTO_TCTL_RCM_GET_AND_SET: u32 = 12;
397pub const _NTO_TCTL_SHR_MUTEX: u32 = 13;
398pub const _NTO_TCTL_IO: u32 = 14;
399pub const _NTO_TCTL_NET_KIF_GET_AND_SET: u32 = 15;
400pub const _NTO_TCTL_LOW_LATENCY: u32 = 16;
401pub const _NTO_TCTL_ADD_EXIT_EVENT: u32 = 17;
402pub const _NTO_TCTL_DEL_EXIT_EVENT: u32 = 18;
403pub const _NTO_TCTL_IO_LEVEL: u32 = 19;
404pub const _NTO_TCTL_RESERVED: u32 = 2147483648;
405pub const _NTO_TCTL_IO_LEVEL_INHERIT: u32 = 1073741824;
406pub const _NTO_IO_LEVEL_NONE: u32 = 1;
407pub const _NTO_IO_LEVEL_1: u32 = 2;
408pub const _NTO_IO_LEVEL_2: u32 = 3;
409
410pub const _NTO_THREAD_NAME_MAX: u32 = 100;
411
412pub const _NTO_CHF_FIXED_PRIORITY: u32 = 1;
413pub const _NTO_CHF_UNBLOCK: u32 = 2;
414pub const _NTO_CHF_THREAD_DEATH: u32 = 4;
415pub const _NTO_CHF_DISCONNECT: u32 = 8;
416pub const _NTO_CHF_NET_MSG: u32 = 16;
417pub const _NTO_CHF_SENDER_LEN: u32 = 32;
418pub const _NTO_CHF_COID_DISCONNECT: u32 = 64;
419pub const _NTO_CHF_REPLY_LEN: u32 = 128;
420pub const _NTO_CHF_PULSE_POOL: u32 = 256;
421pub const _NTO_CHF_ASYNC_NONBLOCK: u32 = 512;
422pub const _NTO_CHF_ASYNC: u32 = 1024;
423pub const _NTO_CHF_GLOBAL: u32 = 2048;
424pub const _NTO_CHF_PRIVATE: u32 = 4096;
425pub const _NTO_CHF_MSG_PAUSING: u32 = 8192;
426pub const _NTO_CHF_INHERIT_RUNMASK: u32 = 16384;
427pub const _NTO_CHF_UNBLOCK_TIMER: u32 = 32768;
428
429pub const _NTO_CHO_CUSTOM_EVENT: u32 = 1;
430
431pub const _NTO_COF_CLOEXEC: u32 = 1;
432pub const _NTO_COF_DEAD: u32 = 2;
433pub const _NTO_COF_NOSHARE: u32 = 64;
434pub const _NTO_COF_NETCON: u32 = 128;
435pub const _NTO_COF_NONBLOCK: u32 = 256;
436pub const _NTO_COF_ASYNC: u32 = 512;
437pub const _NTO_COF_GLOBAL: u32 = 1024;
438pub const _NTO_COF_NOEVENT: u32 = 2048;
439pub const _NTO_COF_INSECURE: u32 = 4096;
440pub const _NTO_COF_REG_EVENTS: u32 = 8192;
441pub const _NTO_COF_UNREG_EVENTS: u32 = 16384;
442pub const _NTO_COF_MASK: u32 = 65535;
443
444pub const _NTO_SIDE_CHANNEL: u32 = 1073741824;
445
446pub const _NTO_CONNECTION_SCOID: u32 = 65536;
447pub const _NTO_GLOBAL_CHANNEL: u32 = 1073741824;
448
449pub const _NTO_TIMEOUT_MASK: u32 = (1 << STATE_MAX) - 1;
450pub const _NTO_TIMEOUT_ACTIVE: u32 = 1 << STATE_MAX;
451pub const _NTO_TIMEOUT_IMMEDIATE: u32 = 1 << (STATE_MAX + 1);
452
453pub const _NTO_IC_LATENCY: u32 = 0;
454
455pub const _NTO_INTR_FLAGS_END: u32 = 1;
456pub const _NTO_INTR_FLAGS_NO_UNMASK: u32 = 2;
457pub const _NTO_INTR_FLAGS_PROCESS: u32 = 4;
458pub const _NTO_INTR_FLAGS_TRK_MSK: u32 = 8;
459pub const _NTO_INTR_FLAGS_ARRAY: u32 = 16;
460pub const _NTO_INTR_FLAGS_EXCLUSIVE: u32 = 32;
461pub const _NTO_INTR_FLAGS_FPU: u32 = 64;
462
463pub const _NTO_INTR_CLASS_EXTERNAL: u32 = 0;
464pub const _NTO_INTR_CLASS_SYNTHETIC: u32 = 2147418112;
465
466pub const _NTO_INTR_SPARE: u32 = 2147483647;
467
468pub const _NTO_HOOK_IDLE: u32 = 2147418113;
469pub const _NTO_HOOK_OVERDRIVE: u32 = 2147418114;
470pub const _NTO_HOOK_LAST: u32 = 2147418114;
471pub const _NTO_HOOK_IDLE2_FLAG: u32 = 32768;
472
473pub const _NTO_IH_CMD_SLEEP_SETUP: u32 = 1;
474pub const _NTO_IH_CMD_SLEEP_BLOCK: u32 = 2;
475pub const _NTO_IH_CMD_SLEEP_WAKEUP: u32 = 4;
476pub const _NTO_IH_CMD_SLEEP_ONLINE: u32 = 8;
477pub const _NTO_IH_RESP_NEEDS_BLOCK: u32 = 1;
478pub const _NTO_IH_RESP_NEEDS_WAKEUP: u32 = 2;
479pub const _NTO_IH_RESP_NEEDS_ONLINE: u32 = 4;
480pub const _NTO_IH_RESP_SYNC_TIME: u32 = 16;
481pub const _NTO_IH_RESP_SYNC_TLB: u32 = 32;
482pub const _NTO_IH_RESP_SUGGEST_OFFLINE: u32 = 256;
483pub const _NTO_IH_RESP_SLEEP_MODE_REACHED: u32 = 512;
484pub const _NTO_IH_RESP_DELIVER_INTRS: u32 = 1024;
485
486pub const _NTO_READIOV_SEND: u32 = 0;
487pub const _NTO_READIOV_REPLY: u32 = 1;
488
489pub const _NTO_KEYDATA_VTID: u32 = 2147483648;
490
491pub const _NTO_KEYDATA_PATHSIGN: u32 = 32768;
492pub const _NTO_KEYDATA_OP_MASK: u32 = 255;
493pub const _NTO_KEYDATA_VERIFY: u32 = 0;
494pub const _NTO_KEYDATA_CALCULATE: u32 = 1;
495pub const _NTO_KEYDATA_CALCULATE_REUSE: u32 = 2;
496pub const _NTO_KEYDATA_PATHSIGN_VERIFY: u32 = 32768;
497pub const _NTO_KEYDATA_PATHSIGN_CALCULATE: u32 = 32769;
498pub const _NTO_KEYDATA_PATHSIGN_CALCULATE_REUSE: u32 = 32770;
499
500pub const _NTO_SCTL_SETPRIOCEILING: u32 = 1;
501pub const _NTO_SCTL_GETPRIOCEILING: u32 = 2;
502pub const _NTO_SCTL_SETEVENT: u32 = 3;
503pub const _NTO_SCTL_MUTEX_WAKEUP: u32 = 4;
504pub const _NTO_SCTL_MUTEX_CONSISTENT: u32 = 5;
505pub const _NTO_SCTL_SEM_VALUE: u32 = 6;
506
507pub const _NTO_CLIENTINFO_GETGROUPS: u32 = 1;
508pub const _NTO_CLIENTINFO_GETTYPEID: u32 = 2;
509
510extern "C" {
511    pub fn ChannelCreate(__flags: ::c_uint) -> ::c_int;
512    pub fn ChannelCreate_r(__flags: ::c_uint) -> ::c_int;
513    pub fn ChannelCreatePulsePool(
514        __flags: ::c_uint,
515        __config: *const nto_channel_config,
516    ) -> ::c_int;
517    pub fn ChannelCreateExt(
518        __flags: ::c_uint,
519        __mode: ::mode_t,
520        __bufsize: usize,
521        __maxnumbuf: ::c_uint,
522        __ev: *const ::sigevent,
523        __cred: *mut _cred_info,
524    ) -> ::c_int;
525    pub fn ChannelDestroy(__chid: ::c_int) -> ::c_int;
526    pub fn ChannelDestroy_r(__chid: ::c_int) -> ::c_int;
527    pub fn ConnectAttach(
528        __nd: u32,
529        __pid: ::pid_t,
530        __chid: ::c_int,
531        __index: ::c_uint,
532        __flags: ::c_int,
533    ) -> ::c_int;
534    pub fn ConnectAttach_r(
535        __nd: u32,
536        __pid: ::pid_t,
537        __chid: ::c_int,
538        __index: ::c_uint,
539        __flags: ::c_int,
540    ) -> ::c_int;
541
542    // TODO: The following function uses a structure defined in a header file
543    //       which doesn't appear as part of the default headers found in a
544    //       standard installation of Neutrino 7.1 SDP.  Commented out for now.
545    //pub fn ConnectAttachExt(
546    //    __nd: u32,
547    //    __pid: ::pid_t,
548    //    __chid: ::c_int,
549    //    __index: ::c_uint,
550    //    __flags: ::c_int,
551    //    __cd: *mut _asyncmsg_connection_descriptor,
552    //) -> ::c_int;
553    pub fn ConnectDetach(__coid: ::c_int) -> ::c_int;
554    pub fn ConnectDetach_r(__coid: ::c_int) -> ::c_int;
555    pub fn ConnectServerInfo(__pid: ::pid_t, __coid: ::c_int, __info: *mut _msg_info64) -> ::c_int;
556    pub fn ConnectServerInfo_r(
557        __pid: ::pid_t,
558        __coid: ::c_int,
559        __info: *mut _msg_info64,
560    ) -> ::c_int;
561    pub fn ConnectClientInfoExtraArgs(
562        __scoid: ::c_int,
563        __info_pp: *mut _client_info,
564        __ngroups: ::c_int,
565        __abilities: *mut _client_able,
566        __nable: ::c_int,
567        __type_id: *mut ::c_uint,
568    ) -> ::c_int;
569    pub fn ConnectClientInfoExtraArgs_r(
570        __scoid: ::c_int,
571        __info_pp: *mut _client_info,
572        __ngroups: ::c_int,
573        __abilities: *mut _client_able,
574        __nable: ::c_int,
575        __type_id: *mut ::c_uint,
576    ) -> ::c_int;
577    pub fn ConnectClientInfo(
578        __scoid: ::c_int,
579        __info: *mut _client_info,
580        __ngroups: ::c_int,
581    ) -> ::c_int;
582    pub fn ConnectClientInfo_r(
583        __scoid: ::c_int,
584        __info: *mut _client_info,
585        __ngroups: ::c_int,
586    ) -> ::c_int;
587    pub fn ConnectClientInfoExt(
588        __scoid: ::c_int,
589        __info_pp: *mut *mut _client_info,
590        flags: ::c_int,
591    ) -> ::c_int;
592    pub fn ClientInfoExtFree(__info_pp: *mut *mut _client_info) -> ::c_int;
593    pub fn ConnectClientInfoAble(
594        __scoid: ::c_int,
595        __info_pp: *mut *mut _client_info,
596        flags: ::c_int,
597        abilities: *mut _client_able,
598        nable: ::c_int,
599    ) -> ::c_int;
600    pub fn ConnectFlags(
601        __pid: ::pid_t,
602        __coid: ::c_int,
603        __mask: ::c_uint,
604        __bits: ::c_uint,
605    ) -> ::c_int;
606    pub fn ConnectFlags_r(
607        __pid: ::pid_t,
608        __coid: ::c_int,
609        __mask: ::c_uint,
610        __bits: ::c_uint,
611    ) -> ::c_int;
612    pub fn ChannelConnectAttr(
613        __id: ::c_uint,
614        __old_attr: *mut _channel_connect_attr,
615        __new_attr: *mut _channel_connect_attr,
616        __flags: ::c_uint,
617    ) -> ::c_int;
618    pub fn MsgSend(
619        __coid: ::c_int,
620        __smsg: *const ::c_void,
621        __sbytes: usize,
622        __rmsg: *mut ::c_void,
623        __rbytes: usize,
624    ) -> ::c_long;
625    pub fn MsgSend_r(
626        __coid: ::c_int,
627        __smsg: *const ::c_void,
628        __sbytes: usize,
629        __rmsg: *mut ::c_void,
630        __rbytes: usize,
631    ) -> ::c_long;
632    pub fn MsgSendnc(
633        __coid: ::c_int,
634        __smsg: *const ::c_void,
635        __sbytes: usize,
636        __rmsg: *mut ::c_void,
637        __rbytes: usize,
638    ) -> ::c_long;
639    pub fn MsgSendnc_r(
640        __coid: ::c_int,
641        __smsg: *const ::c_void,
642        __sbytes: usize,
643        __rmsg: *mut ::c_void,
644        __rbytes: usize,
645    ) -> ::c_long;
646    pub fn MsgSendsv(
647        __coid: ::c_int,
648        __smsg: *const ::c_void,
649        __sbytes: usize,
650        __riov: *const ::iovec,
651        __rparts: usize,
652    ) -> ::c_long;
653    pub fn MsgSendsv_r(
654        __coid: ::c_int,
655        __smsg: *const ::c_void,
656        __sbytes: usize,
657        __riov: *const ::iovec,
658        __rparts: usize,
659    ) -> ::c_long;
660    pub fn MsgSendsvnc(
661        __coid: ::c_int,
662        __smsg: *const ::c_void,
663        __sbytes: usize,
664        __riov: *const ::iovec,
665        __rparts: usize,
666    ) -> ::c_long;
667    pub fn MsgSendsvnc_r(
668        __coid: ::c_int,
669        __smsg: *const ::c_void,
670        __sbytes: usize,
671        __riov: *const ::iovec,
672        __rparts: usize,
673    ) -> ::c_long;
674    pub fn MsgSendvs(
675        __coid: ::c_int,
676        __siov: *const ::iovec,
677        __sparts: usize,
678        __rmsg: *mut ::c_void,
679        __rbytes: usize,
680    ) -> ::c_long;
681    pub fn MsgSendvs_r(
682        __coid: ::c_int,
683        __siov: *const ::iovec,
684        __sparts: usize,
685        __rmsg: *mut ::c_void,
686        __rbytes: usize,
687    ) -> ::c_long;
688    pub fn MsgSendvsnc(
689        __coid: ::c_int,
690        __siov: *const ::iovec,
691        __sparts: usize,
692        __rmsg: *mut ::c_void,
693        __rbytes: usize,
694    ) -> ::c_long;
695    pub fn MsgSendvsnc_r(
696        __coid: ::c_int,
697        __siov: *const ::iovec,
698        __sparts: usize,
699        __rmsg: *mut ::c_void,
700        __rbytes: usize,
701    ) -> ::c_long;
702    pub fn MsgSendv(
703        __coid: ::c_int,
704        __siov: *const ::iovec,
705        __sparts: usize,
706        __riov: *const ::iovec,
707        __rparts: usize,
708    ) -> ::c_long;
709    pub fn MsgSendv_r(
710        __coid: ::c_int,
711        __siov: *const ::iovec,
712        __sparts: usize,
713        __riov: *const ::iovec,
714        __rparts: usize,
715    ) -> ::c_long;
716    pub fn MsgSendvnc(
717        __coid: ::c_int,
718        __siov: *const ::iovec,
719        __sparts: usize,
720        __riov: *const ::iovec,
721        __rparts: usize,
722    ) -> ::c_long;
723    pub fn MsgSendvnc_r(
724        __coid: ::c_int,
725        __siov: *const ::iovec,
726        __sparts: usize,
727        __riov: *const ::iovec,
728        __rparts: usize,
729    ) -> ::c_long;
730    pub fn MsgReceive(
731        __chid: ::c_int,
732        __msg: *mut ::c_void,
733        __bytes: usize,
734        __info: *mut _msg_info64,
735    ) -> ::c_int;
736    pub fn MsgReceive_r(
737        __chid: ::c_int,
738        __msg: *mut ::c_void,
739        __bytes: usize,
740        __info: *mut _msg_info64,
741    ) -> ::c_int;
742    pub fn MsgReceivev(
743        __chid: ::c_int,
744        __iov: *const ::iovec,
745        __parts: usize,
746        __info: *mut _msg_info64,
747    ) -> ::c_int;
748    pub fn MsgReceivev_r(
749        __chid: ::c_int,
750        __iov: *const ::iovec,
751        __parts: usize,
752        __info: *mut _msg_info64,
753    ) -> ::c_int;
754    pub fn MsgReceivePulse(
755        __chid: ::c_int,
756        __pulse: *mut ::c_void,
757        __bytes: usize,
758        __info: *mut _msg_info64,
759    ) -> ::c_int;
760    pub fn MsgReceivePulse_r(
761        __chid: ::c_int,
762        __pulse: *mut ::c_void,
763        __bytes: usize,
764        __info: *mut _msg_info64,
765    ) -> ::c_int;
766    pub fn MsgReceivePulsev(
767        __chid: ::c_int,
768        __iov: *const ::iovec,
769        __parts: usize,
770        __info: *mut _msg_info64,
771    ) -> ::c_int;
772    pub fn MsgReceivePulsev_r(
773        __chid: ::c_int,
774        __iov: *const ::iovec,
775        __parts: usize,
776        __info: *mut _msg_info64,
777    ) -> ::c_int;
778    pub fn MsgReply(
779        __rcvid: ::c_int,
780        __status: ::c_long,
781        __msg: *const ::c_void,
782        __bytes: usize,
783    ) -> ::c_int;
784    pub fn MsgReply_r(
785        __rcvid: ::c_int,
786        __status: ::c_long,
787        __msg: *const ::c_void,
788        __bytes: usize,
789    ) -> ::c_int;
790    pub fn MsgReplyv(
791        __rcvid: ::c_int,
792        __status: ::c_long,
793        __iov: *const ::iovec,
794        __parts: usize,
795    ) -> ::c_int;
796    pub fn MsgReplyv_r(
797        __rcvid: ::c_int,
798        __status: ::c_long,
799        __iov: *const ::iovec,
800        __parts: usize,
801    ) -> ::c_int;
802    pub fn MsgReadiov(
803        __rcvid: ::c_int,
804        __iov: *const ::iovec,
805        __parts: usize,
806        __offset: usize,
807        __flags: ::c_int,
808    ) -> isize;
809    pub fn MsgReadiov_r(
810        __rcvid: ::c_int,
811        __iov: *const ::iovec,
812        __parts: usize,
813        __offset: usize,
814        __flags: ::c_int,
815    ) -> isize;
816    pub fn MsgRead(
817        __rcvid: ::c_int,
818        __msg: *mut ::c_void,
819        __bytes: usize,
820        __offset: usize,
821    ) -> isize;
822    pub fn MsgRead_r(
823        __rcvid: ::c_int,
824        __msg: *mut ::c_void,
825        __bytes: usize,
826        __offset: usize,
827    ) -> isize;
828    pub fn MsgReadv(
829        __rcvid: ::c_int,
830        __iov: *const ::iovec,
831        __parts: usize,
832        __offset: usize,
833    ) -> isize;
834    pub fn MsgReadv_r(
835        __rcvid: ::c_int,
836        __iov: *const ::iovec,
837        __parts: usize,
838        __offset: usize,
839    ) -> isize;
840    pub fn MsgWrite(
841        __rcvid: ::c_int,
842        __msg: *const ::c_void,
843        __bytes: usize,
844        __offset: usize,
845    ) -> isize;
846    pub fn MsgWrite_r(
847        __rcvid: ::c_int,
848        __msg: *const ::c_void,
849        __bytes: usize,
850        __offset: usize,
851    ) -> isize;
852    pub fn MsgWritev(
853        __rcvid: ::c_int,
854        __iov: *const ::iovec,
855        __parts: usize,
856        __offset: usize,
857    ) -> isize;
858    pub fn MsgWritev_r(
859        __rcvid: ::c_int,
860        __iov: *const ::iovec,
861        __parts: usize,
862        __offset: usize,
863    ) -> isize;
864    pub fn MsgSendPulse(
865        __coid: ::c_int,
866        __priority: ::c_int,
867        __code: ::c_int,
868        __value: ::c_int,
869    ) -> ::c_int;
870    pub fn MsgSendPulse_r(
871        __coid: ::c_int,
872        __priority: ::c_int,
873        __code: ::c_int,
874        __value: ::c_int,
875    ) -> ::c_int;
876    pub fn MsgSendPulsePtr(
877        __coid: ::c_int,
878        __priority: ::c_int,
879        __code: ::c_int,
880        __value: *mut ::c_void,
881    ) -> ::c_int;
882    pub fn MsgSendPulsePtr_r(
883        __coid: ::c_int,
884        __priority: ::c_int,
885        __code: ::c_int,
886        __value: *mut ::c_void,
887    ) -> ::c_int;
888    pub fn MsgDeliverEvent(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
889    pub fn MsgDeliverEvent_r(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
890    pub fn MsgVerifyEvent(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
891    pub fn MsgVerifyEvent_r(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
892    pub fn MsgRegisterEvent(__event: *mut ::sigevent, __coid: ::c_int) -> ::c_int;
893    pub fn MsgRegisterEvent_r(__event: *mut ::sigevent, __coid: ::c_int) -> ::c_int;
894    pub fn MsgUnregisterEvent(__event: *const ::sigevent) -> ::c_int;
895    pub fn MsgUnregisterEvent_r(__event: *const ::sigevent) -> ::c_int;
896    pub fn MsgInfo(__rcvid: ::c_int, __info: *mut _msg_info64) -> ::c_int;
897    pub fn MsgInfo_r(__rcvid: ::c_int, __info: *mut _msg_info64) -> ::c_int;
898    pub fn MsgKeyData(
899        __rcvid: ::c_int,
900        __oper: ::c_int,
901        __key: u32,
902        __newkey: *mut u32,
903        __iov: *const ::iovec,
904        __parts: ::c_int,
905    ) -> ::c_int;
906    pub fn MsgKeyData_r(
907        __rcvid: ::c_int,
908        __oper: ::c_int,
909        __key: u32,
910        __newkey: *mut u32,
911        __iov: *const ::iovec,
912        __parts: ::c_int,
913    ) -> ::c_int;
914    pub fn MsgError(__rcvid: ::c_int, __err: ::c_int) -> ::c_int;
915    pub fn MsgError_r(__rcvid: ::c_int, __err: ::c_int) -> ::c_int;
916    pub fn MsgCurrent(__rcvid: ::c_int) -> ::c_int;
917    pub fn MsgCurrent_r(__rcvid: ::c_int) -> ::c_int;
918    pub fn MsgSendAsyncGbl(
919        __coid: ::c_int,
920        __smsg: *const ::c_void,
921        __sbytes: usize,
922        __msg_prio: ::c_uint,
923    ) -> ::c_int;
924    pub fn MsgSendAsync(__coid: ::c_int) -> ::c_int;
925    pub fn MsgReceiveAsyncGbl(
926        __chid: ::c_int,
927        __rmsg: *mut ::c_void,
928        __rbytes: usize,
929        __info: *mut _msg_info64,
930        __coid: ::c_int,
931    ) -> ::c_int;
932    pub fn MsgReceiveAsync(__chid: ::c_int, __iov: *const ::iovec, __parts: ::c_uint) -> ::c_int;
933    pub fn MsgPause(__rcvid: ::c_int, __cookie: ::c_uint) -> ::c_int;
934    pub fn MsgPause_r(__rcvid: ::c_int, __cookie: ::c_uint) -> ::c_int;
935
936    pub fn SignalKill(
937        __nd: u32,
938        __pid: ::pid_t,
939        __tid: ::c_int,
940        __signo: ::c_int,
941        __code: ::c_int,
942        __value: ::c_int,
943    ) -> ::c_int;
944    pub fn SignalKill_r(
945        __nd: u32,
946        __pid: ::pid_t,
947        __tid: ::c_int,
948        __signo: ::c_int,
949        __code: ::c_int,
950        __value: ::c_int,
951    ) -> ::c_int;
952    pub fn SignalKillSigval(
953        __nd: u32,
954        __pid: ::pid_t,
955        __tid: ::c_int,
956        __signo: ::c_int,
957        __code: ::c_int,
958        __value: *const ::sigval,
959    ) -> ::c_int;
960    pub fn SignalKillSigval_r(
961        __nd: u32,
962        __pid: ::pid_t,
963        __tid: ::c_int,
964        __signo: ::c_int,
965        __code: ::c_int,
966        __value: *const ::sigval,
967    ) -> ::c_int;
968    pub fn SignalReturn(__info: *mut _sighandler_info) -> ::c_int;
969    pub fn SignalFault(__sigcode: ::c_uint, __regs: *mut ::c_void, __refaddr: usize) -> ::c_int;
970    pub fn SignalAction(
971        __pid: ::pid_t,
972        __sigstub: unsafe extern "C" fn(),
973        __signo: ::c_int,
974        __act: *const ::sigaction,
975        __oact: *mut ::sigaction,
976    ) -> ::c_int;
977    pub fn SignalAction_r(
978        __pid: ::pid_t,
979        __sigstub: unsafe extern "C" fn(),
980        __signo: ::c_int,
981        __act: *const ::sigaction,
982        __oact: *mut ::sigaction,
983    ) -> ::c_int;
984    pub fn SignalProcmask(
985        __pid: ::pid_t,
986        __tid: ::c_int,
987        __how: ::c_int,
988        __set: *const ::sigset_t,
989        __oldset: *mut ::sigset_t,
990    ) -> ::c_int;
991    pub fn SignalProcmask_r(
992        __pid: ::pid_t,
993        __tid: ::c_int,
994        __how: ::c_int,
995        __set: *const ::sigset_t,
996        __oldset: *mut ::sigset_t,
997    ) -> ::c_int;
998    pub fn SignalSuspend(__set: *const ::sigset_t) -> ::c_int;
999    pub fn SignalSuspend_r(__set: *const ::sigset_t) -> ::c_int;
1000    pub fn SignalWaitinfo(__set: *const ::sigset_t, __info: *mut ::siginfo_t) -> ::c_int;
1001    pub fn SignalWaitinfo_r(__set: *const ::sigset_t, __info: *mut ::siginfo_t) -> ::c_int;
1002    pub fn SignalWaitinfoMask(
1003        __set: *const ::sigset_t,
1004        __info: *mut ::siginfo_t,
1005        __mask: *const ::sigset_t,
1006    ) -> ::c_int;
1007    pub fn SignalWaitinfoMask_r(
1008        __set: *const ::sigset_t,
1009        __info: *mut ::siginfo_t,
1010        __mask: *const ::sigset_t,
1011    ) -> ::c_int;
1012    pub fn ThreadCreate(
1013        __pid: ::pid_t,
1014        __func: unsafe extern "C" fn(__arg: *mut ::c_void) -> *mut ::c_void,
1015        __arg: *mut ::c_void,
1016        __attr: *const ::_thread_attr,
1017    ) -> ::c_int;
1018    pub fn ThreadCreate_r(
1019        __pid: ::pid_t,
1020        __func: unsafe extern "C" fn(__arg: *mut ::c_void) -> *mut ::c_void,
1021        __arg: *mut ::c_void,
1022        __attr: *const ::_thread_attr,
1023    ) -> ::c_int;
1024
1025    pub fn ThreadDestroy(__tid: ::c_int, __priority: ::c_int, __status: *mut ::c_void) -> ::c_int;
1026    pub fn ThreadDestroy_r(__tid: ::c_int, __priority: ::c_int, __status: *mut ::c_void)
1027        -> ::c_int;
1028    pub fn ThreadDetach(__tid: ::c_int) -> ::c_int;
1029    pub fn ThreadDetach_r(__tid: ::c_int) -> ::c_int;
1030    pub fn ThreadJoin(__tid: ::c_int, __status: *mut *mut ::c_void) -> ::c_int;
1031    pub fn ThreadJoin_r(__tid: ::c_int, __status: *mut *mut ::c_void) -> ::c_int;
1032    pub fn ThreadCancel(__tid: ::c_int, __canstub: unsafe extern "C" fn()) -> ::c_int;
1033    pub fn ThreadCancel_r(__tid: ::c_int, __canstub: unsafe extern "C" fn()) -> ::c_int;
1034    pub fn ThreadCtl(__cmd: ::c_int, __data: *mut ::c_void) -> ::c_int;
1035    pub fn ThreadCtl_r(__cmd: ::c_int, __data: *mut ::c_void) -> ::c_int;
1036    pub fn ThreadCtlExt(
1037        __pid: ::pid_t,
1038        __tid: ::c_int,
1039        __cmd: ::c_int,
1040        __data: *mut ::c_void,
1041    ) -> ::c_int;
1042    pub fn ThreadCtlExt_r(
1043        __pid: ::pid_t,
1044        __tid: ::c_int,
1045        __cmd: ::c_int,
1046        __data: *mut ::c_void,
1047    ) -> ::c_int;
1048
1049    pub fn InterruptHookTrace(
1050        __handler: ::Option<unsafe extern "C" fn(arg1: ::c_int) -> *const ::sigevent>,
1051        __flags: ::c_uint,
1052    ) -> ::c_int;
1053    pub fn InterruptHookIdle(
1054        __handler: ::Option<unsafe extern "C" fn(arg1: *mut u64, arg2: *mut qtime_entry)>,
1055        __flags: ::c_uint,
1056    ) -> ::c_int;
1057    pub fn InterruptHookIdle2(
1058        __handler: ::Option<
1059            unsafe extern "C" fn(arg1: ::c_uint, arg2: *mut syspage_entry, arg3: *mut _idle_hook),
1060        >,
1061        __flags: ::c_uint,
1062    ) -> ::c_int;
1063    pub fn InterruptHookOverdriveEvent(__event: *const ::sigevent, __flags: ::c_uint) -> ::c_int;
1064    pub fn InterruptAttachEvent(
1065        __intr: ::c_int,
1066        __event: *const ::sigevent,
1067        __flags: ::c_uint,
1068    ) -> ::c_int;
1069    pub fn InterruptAttachEvent_r(
1070        __intr: ::c_int,
1071        __event: *const ::sigevent,
1072        __flags: ::c_uint,
1073    ) -> ::c_int;
1074    pub fn InterruptAttach(
1075        __intr: ::c_int,
1076        __handler: ::Option<
1077            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const ::sigevent,
1078        >,
1079        __area: *const ::c_void,
1080        __size: ::c_int,
1081        __flags: ::c_uint,
1082    ) -> ::c_int;
1083    pub fn InterruptAttach_r(
1084        __intr: ::c_int,
1085        __handler: ::Option<
1086            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const ::sigevent,
1087        >,
1088        __area: *const ::c_void,
1089        __size: ::c_int,
1090        __flags: ::c_uint,
1091    ) -> ::c_int;
1092    pub fn InterruptAttachArray(
1093        __intr: ::c_int,
1094        __handler: ::Option<
1095            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const *const ::sigevent,
1096        >,
1097        __area: *const ::c_void,
1098        __size: ::c_int,
1099        __flags: ::c_uint,
1100    ) -> ::c_int;
1101    pub fn InterruptAttachArray_r(
1102        __intr: ::c_int,
1103        __handler: ::Option<
1104            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const *const ::sigevent,
1105        >,
1106        __area: *const ::c_void,
1107        __size: ::c_int,
1108        __flags: ::c_uint,
1109    ) -> ::c_int;
1110    pub fn InterruptDetach(__id: ::c_int) -> ::c_int;
1111    pub fn InterruptDetach_r(__id: ::c_int) -> ::c_int;
1112    pub fn InterruptWait(__flags: ::c_int, __timeout: *const u64) -> ::c_int;
1113    pub fn InterruptWait_r(__flags: ::c_int, __timeout: *const u64) -> ::c_int;
1114    pub fn InterruptCharacteristic(
1115        __type: ::c_int,
1116        __id: ::c_int,
1117        __new: *mut ::c_uint,
1118        __old: *mut ::c_uint,
1119    ) -> ::c_int;
1120    pub fn InterruptCharacteristic_r(
1121        __type: ::c_int,
1122        __id: ::c_int,
1123        __new: *mut ::c_uint,
1124        __old: *mut ::c_uint,
1125    ) -> ::c_int;
1126
1127    pub fn SchedGet(__pid: ::pid_t, __tid: ::c_int, __param: *mut ::sched_param) -> ::c_int;
1128    pub fn SchedGet_r(__pid: ::pid_t, __tid: ::c_int, __param: *mut ::sched_param) -> ::c_int;
1129    pub fn SchedGetCpuNum() -> ::c_uint;
1130    pub fn SchedSet(
1131        __pid: ::pid_t,
1132        __tid: ::c_int,
1133        __algorithm: ::c_int,
1134        __param: *const ::sched_param,
1135    ) -> ::c_int;
1136    pub fn SchedSet_r(
1137        __pid: ::pid_t,
1138        __tid: ::c_int,
1139        __algorithm: ::c_int,
1140        __param: *const ::sched_param,
1141    ) -> ::c_int;
1142    pub fn SchedInfo(__pid: ::pid_t, __algorithm: ::c_int, __info: *mut ::_sched_info) -> ::c_int;
1143    pub fn SchedInfo_r(__pid: ::pid_t, __algorithm: ::c_int, __info: *mut ::_sched_info)
1144        -> ::c_int;
1145    pub fn SchedYield() -> ::c_int;
1146    pub fn SchedYield_r() -> ::c_int;
1147    pub fn SchedCtl(__cmd: ::c_int, __data: *mut ::c_void, __length: usize) -> ::c_int;
1148    pub fn SchedCtl_r(__cmd: ::c_int, __data: *mut ::c_void, __length: usize) -> ::c_int;
1149    pub fn SchedJobCreate(__job: *mut nto_job_t) -> ::c_int;
1150    pub fn SchedJobCreate_r(__job: *mut nto_job_t) -> ::c_int;
1151    pub fn SchedJobDestroy(__job: *mut nto_job_t) -> ::c_int;
1152    pub fn SchedJobDestroy_r(__job: *mut nto_job_t) -> ::c_int;
1153    pub fn SchedWaypoint(
1154        __job: *mut nto_job_t,
1155        __new: *const i64,
1156        __max: *const i64,
1157        __old: *mut i64,
1158    ) -> ::c_int;
1159    pub fn SchedWaypoint_r(
1160        __job: *mut nto_job_t,
1161        __new: *const i64,
1162        __max: *const i64,
1163        __old: *mut i64,
1164    ) -> ::c_int;
1165
1166    pub fn TimerCreate(__id: ::clockid_t, __notify: *const ::sigevent) -> ::c_int;
1167    pub fn TimerCreate_r(__id: ::clockid_t, __notify: *const ::sigevent) -> ::c_int;
1168    pub fn TimerDestroy(__id: ::timer_t) -> ::c_int;
1169    pub fn TimerDestroy_r(__id: ::timer_t) -> ::c_int;
1170    pub fn TimerSettime(
1171        __id: ::timer_t,
1172        __flags: ::c_int,
1173        __itime: *const ::_itimer,
1174        __oitime: *mut ::_itimer,
1175    ) -> ::c_int;
1176    pub fn TimerSettime_r(
1177        __id: ::timer_t,
1178        __flags: ::c_int,
1179        __itime: *const ::_itimer,
1180        __oitime: *mut ::_itimer,
1181    ) -> ::c_int;
1182    pub fn TimerInfo(
1183        __pid: ::pid_t,
1184        __id: ::timer_t,
1185        __flags: ::c_int,
1186        __info: *mut ::_timer_info,
1187    ) -> ::c_int;
1188    pub fn TimerInfo_r(
1189        __pid: ::pid_t,
1190        __id: ::timer_t,
1191        __flags: ::c_int,
1192        __info: *mut ::_timer_info,
1193    ) -> ::c_int;
1194    pub fn TimerAlarm(
1195        __id: ::clockid_t,
1196        __itime: *const ::_itimer,
1197        __otime: *mut ::_itimer,
1198    ) -> ::c_int;
1199    pub fn TimerAlarm_r(
1200        __id: ::clockid_t,
1201        __itime: *const ::_itimer,
1202        __otime: *mut ::_itimer,
1203    ) -> ::c_int;
1204    pub fn TimerTimeout(
1205        __id: ::clockid_t,
1206        __flags: ::c_int,
1207        __notify: *const ::sigevent,
1208        __ntime: *const u64,
1209        __otime: *mut u64,
1210    ) -> ::c_int;
1211    pub fn TimerTimeout_r(
1212        __id: ::clockid_t,
1213        __flags: ::c_int,
1214        __notify: *const ::sigevent,
1215        __ntime: *const u64,
1216        __otime: *mut u64,
1217    ) -> ::c_int;
1218
1219    pub fn SyncTypeCreate(
1220        __type: ::c_uint,
1221        __sync: *mut ::sync_t,
1222        __attr: *const ::_sync_attr,
1223    ) -> ::c_int;
1224    pub fn SyncTypeCreate_r(
1225        __type: ::c_uint,
1226        __sync: *mut ::sync_t,
1227        __attr: *const ::_sync_attr,
1228    ) -> ::c_int;
1229    pub fn SyncDestroy(__sync: *mut ::sync_t) -> ::c_int;
1230    pub fn SyncDestroy_r(__sync: *mut ::sync_t) -> ::c_int;
1231    pub fn SyncCtl(__cmd: ::c_int, __sync: *mut ::sync_t, __data: *mut ::c_void) -> ::c_int;
1232    pub fn SyncCtl_r(__cmd: ::c_int, __sync: *mut ::sync_t, __data: *mut ::c_void) -> ::c_int;
1233    pub fn SyncMutexEvent(__sync: *mut ::sync_t, event: *const ::sigevent) -> ::c_int;
1234    pub fn SyncMutexEvent_r(__sync: *mut ::sync_t, event: *const ::sigevent) -> ::c_int;
1235    pub fn SyncMutexLock(__sync: *mut ::sync_t) -> ::c_int;
1236    pub fn SyncMutexLock_r(__sync: *mut ::sync_t) -> ::c_int;
1237    pub fn SyncMutexUnlock(__sync: *mut ::sync_t) -> ::c_int;
1238    pub fn SyncMutexUnlock_r(__sync: *mut ::sync_t) -> ::c_int;
1239    pub fn SyncMutexRevive(__sync: *mut ::sync_t) -> ::c_int;
1240    pub fn SyncMutexRevive_r(__sync: *mut ::sync_t) -> ::c_int;
1241    pub fn SyncCondvarWait(__sync: *mut ::sync_t, __mutex: *mut ::sync_t) -> ::c_int;
1242    pub fn SyncCondvarWait_r(__sync: *mut ::sync_t, __mutex: *mut ::sync_t) -> ::c_int;
1243    pub fn SyncCondvarSignal(__sync: *mut ::sync_t, __all: ::c_int) -> ::c_int;
1244    pub fn SyncCondvarSignal_r(__sync: *mut ::sync_t, __all: ::c_int) -> ::c_int;
1245    pub fn SyncSemPost(__sync: *mut ::sync_t) -> ::c_int;
1246    pub fn SyncSemPost_r(__sync: *mut ::sync_t) -> ::c_int;
1247    pub fn SyncSemWait(__sync: *mut ::sync_t, __tryto: ::c_int) -> ::c_int;
1248    pub fn SyncSemWait_r(__sync: *mut ::sync_t, __tryto: ::c_int) -> ::c_int;
1249
1250    pub fn ClockTime(__id: ::clockid_t, _new: *const u64, __old: *mut u64) -> ::c_int;
1251    pub fn ClockTime_r(__id: ::clockid_t, _new: *const u64, __old: *mut u64) -> ::c_int;
1252    pub fn ClockAdjust(
1253        __id: ::clockid_t,
1254        _new: *const ::_clockadjust,
1255        __old: *mut ::_clockadjust,
1256    ) -> ::c_int;
1257    pub fn ClockAdjust_r(
1258        __id: ::clockid_t,
1259        _new: *const ::_clockadjust,
1260        __old: *mut ::_clockadjust,
1261    ) -> ::c_int;
1262    pub fn ClockPeriod(
1263        __id: ::clockid_t,
1264        _new: *const ::_clockperiod,
1265        __old: *mut ::_clockperiod,
1266        __reserved: ::c_int,
1267    ) -> ::c_int;
1268    pub fn ClockPeriod_r(
1269        __id: ::clockid_t,
1270        _new: *const ::_clockperiod,
1271        __old: *mut ::_clockperiod,
1272        __reserved: ::c_int,
1273    ) -> ::c_int;
1274    pub fn ClockId(__pid: ::pid_t, __tid: ::c_int) -> ::c_int;
1275    pub fn ClockId_r(__pid: ::pid_t, __tid: ::c_int) -> ::c_int;
1276
1277    //
1278    //TODO: The following commented out functions are implemented in assembly.
1279    //      We can implmement them either via a C stub or rust's inline assembly.
1280    //
1281    //pub fn InterruptEnable();
1282    //pub fn InterruptDisable();
1283    pub fn InterruptMask(__intr: ::c_int, __id: ::c_int) -> ::c_int;
1284    pub fn InterruptUnmask(__intr: ::c_int, __id: ::c_int) -> ::c_int;
1285    //pub fn InterruptLock(__spin: *mut ::intrspin);
1286    //pub fn InterruptUnlock(__spin: *mut ::intrspin);
1287    //pub fn InterruptStatus() -> ::c_uint;
1288}
1289