chromium/third_party/rust/chromium_crates_io/vendor/libc-0.2.158/src/unix/nto/neutrino.rs

pub type nto_job_t = ::sync_t;

s! {
    pub struct syspage_entry_info {
        pub entry_off: u16,
        pub entry_size: u16,
    }
    pub struct syspage_array_info {
        entry_off: u16,
        entry_size: u16,
        element_size: u16,
    }

    pub struct intrspin {
        pub value: ::c_uint, // volatile
    }

    pub struct iov_t {
        pub iov_base: *mut ::c_void,  // union
        pub iov_len: ::size_t,
    }

    pub struct _itimer {
        pub nsec: u64,
        pub interval_nsec: u64,
    }

    pub struct _msg_info64 {
        pub nd: u32,
        pub srcnd: u32,
        pub pid: ::pid_t,
        pub tid: i32,
        pub chid: i32,
        pub scoid: i32,
        pub coid: i32,
        pub priority: i16,
        pub flags: i16,
        pub msglen: isize,
        pub srcmsglen: isize,
        pub dstmsglen: isize,
        pub type_id: u32,
        reserved: u32,
    }

    pub struct _cred_info {
        pub ruid: ::uid_t,
        pub euid: ::uid_t,
        pub suid: ::uid_t,
        pub rgid: ::gid_t,
        pub egid: ::gid_t,
        pub sgid: ::gid_t,
        pub ngroups: u32,
        pub grouplist: [::gid_t; 8],
    }

    pub struct _client_info {
        pub nd: u32,
        pub pid: ::pid_t,
        pub sid: ::pid_t,
        pub flags: u32,
        pub cred: ::_cred_info,
    }

    pub struct _client_able {
        pub ability: u32,
        pub flags: u32,
        pub range_lo: u64,
        pub range_hi: u64,
    }

    pub struct nto_channel_config {
        pub event: ::sigevent,
        pub num_pulses: ::c_uint,
        pub rearm_threshold: ::c_uint,
        pub options: ::c_uint,
        reserved: [::c_uint; 3],
    }

    // TODO: The following structures are defined in a header file which doesn't
    //       appear as part of the default headers found in a standard installation
    //       of Neutrino 7.1 SDP.  Commented out for now.
    //pub struct _asyncmsg_put_header {
    //    pub err: ::c_int,
    //    pub iov: *mut ::iov_t,
    //    pub parts: ::c_int,
    //    pub handle: ::c_uint,
    //    pub cb: ::Option<
    //        unsafe extern "C" fn(
    //            err: ::c_int,
    //            buf: *mut ::c_void,
    //            handle: ::c_uint,
    //        ) -> ::c_int>,
    //    pub put_hdr_flags: ::c_uint,
    //}

    //pub struct _asyncmsg_connection_attr {
    //    pub call_back: ::Option<
    //        unsafe extern "C" fn(
    //            err: ::c_int,
    //            buff: *mut ::c_void,
    //            handle: ::c_uint,
    //        ) -> ::c_int>,
    //    pub buffer_size: ::size_t,
    //    pub max_num_buffer: ::c_uint,
    //    pub trigger_num_msg: ::c_uint,
    //    pub trigger_time: ::_itimer,
    //    reserve: ::c_uint,
    //}

    //pub struct _asyncmsg_connection_descriptor {
    //    pub flags: ::c_uint,
    //    pub sendq_size: ::c_uint,
    //    pub sendq_head: ::c_uint,
    //    pub sendq_tail: ::c_uint,
    //    pub sendq_free: ::c_uint,
    //    pub err: ::c_int,
    //    pub ev: ::sigevent,
    //    pub num_curmsg: ::c_uint,
    //    pub ttimer: ::timer_t,
    //    pub block_con: ::pthread_cond_t,
    //    pub mu: ::pthread_mutex_t,
    //    reserved: ::c_uint,
    //    pub attr: ::_asyncmsg_connection_attr,
    //    pub reserves: [::c_uint; 3],
    //    pub sendq: [::_asyncmsg_put_header; 1], // flexarray
    //}

    pub struct __c_anonymous_struct_ev {
        pub event: ::sigevent,
        pub coid: ::c_int,
    }

    pub struct _channel_connect_attr {  // union
        pub ev: ::__c_anonymous_struct_ev,
    }

    pub struct _sighandler_info {
        pub siginfo: ::siginfo_t,
        pub handler: ::Option<unsafe extern "C" fn(value: ::c_int)>,
        pub context: *mut ::c_void,
    }

    pub struct __c_anonymous_struct_time {
        pub length: ::c_uint,
        pub scale: ::c_uint,
    }

    pub struct _idle_hook {
        pub hook_size: ::c_uint,
        pub cmd: ::c_uint,
        pub mode: ::c_uint,
        pub latency: ::c_uint,
        pub next_fire: u64,
        pub curr_time: u64,
        pub tod_adjust: u64,
        pub resp: ::c_uint,
        pub time: __c_anonymous_struct_time,
        pub trigger: ::sigevent,
        pub intrs: *mut ::c_uint,
        pub block_stack_size: ::c_uint,
    }

    pub struct _clockadjust {
        pub tick_count: u32,
        pub tick_nsec_inc: i32,
    }

    pub struct qtime_entry {
        pub cycles_per_sec: u64,
        pub nsec_tod_adjust: u64, // volatile
        pub nsec: u64,            // volatile
        pub nsec_inc: u32,
        pub boot_time: u32,
        pub adjust: _clockadjust,
        pub timer_rate: u32,
        pub timer_scale: i32,
        pub timer_load: u32,
        pub intr: i32,
        pub epoch: u32,
        pub flags: u32,
        pub rr_interval_mul: u32,
        pub timer_load_hi: u32,
        pub nsec_stable: u64,      // volatile
        pub timer_load_max: u64,
        pub timer_prog_time: u32,
        spare: [u32; 7],
    }

    pub struct _sched_info {
        pub priority_min: ::c_int,
        pub priority_max: ::c_int,
        pub interval: u64,
        pub priority_priv: ::c_int,
        reserved: [::c_int; 11],
    }

    pub struct _timer_info {
        pub itime: ::_itimer,
        pub otime: ::_itimer,
        pub flags: u32,
        pub tid: i32,
        pub notify: i32,
        pub clockid: ::clockid_t,
        pub overruns: u32,
        pub event: ::sigevent, // union
    }

    pub struct _clockperiod {
        pub nsec: u32,
        pub fract: i32,
    }
}

s_no_extra_traits! {

    #[repr(align(8))]
    pub struct syspage_entry {
        pub size: u16,
        pub total_size: u16,
        pub type_: u16,
        pub num_cpu: u16,
        pub system_private: syspage_entry_info,
        pub old_asinfo: syspage_entry_info,
        pub __mangle_name_to_cause_compilation_errs_meminfo: syspage_entry_info,
        pub hwinfo: syspage_entry_info,
        pub old_cpuinfo: syspage_entry_info,
        pub old_cacheattr: syspage_entry_info,
        pub qtime: syspage_entry_info,
        pub callout: syspage_entry_info,
        pub callin: syspage_entry_info,
        pub typed_strings: syspage_entry_info,
        pub strings: syspage_entry_info,
        pub old_intrinfo: syspage_entry_info,
        pub smp: syspage_entry_info,
        pub pminfo: syspage_entry_info,
        pub old_mdriver: syspage_entry_info,
        spare0: [u32; 1],
        __reserved: [u8; 160], // anonymous union with architecture dependent structs
        pub new_asinfo: syspage_array_info,
        pub new_cpuinfo: syspage_array_info,
        pub new_cacheattr: syspage_array_info,
        pub new_intrinfo: syspage_array_info,
        pub new_mdriver: syspage_array_info,
    }
}

pub const SYSMGR_PID: u32 = 1;
pub const SYSMGR_CHID: u32 = 1;
pub const SYSMGR_COID: u32 = _NTO_SIDE_CHANNEL;
pub const SYSMGR_HANDLE: u32 = 0;

pub const STATE_DEAD: ::c_int = 0x00;
pub const STATE_RUNNING: ::c_int = 0x01;
pub const STATE_READY: ::c_int = 0x02;
pub const STATE_STOPPED: ::c_int = 0x03;
pub const STATE_SEND: ::c_int = 0x04;
pub const STATE_RECEIVE: ::c_int = 0x05;
pub const STATE_REPLY: ::c_int = 0x06;
pub const STATE_STACK: ::c_int = 0x07;
pub const STATE_WAITTHREAD: ::c_int = 0x08;
pub const STATE_WAITPAGE: ::c_int = 0x09;
pub const STATE_SIGSUSPEND: ::c_int = 0x0a;
pub const STATE_SIGWAITINFO: ::c_int = 0x0b;
pub const STATE_NANOSLEEP: ::c_int = 0x0c;
pub const STATE_MUTEX: ::c_int = 0x0d;
pub const STATE_CONDVAR: ::c_int = 0x0e;
pub const STATE_JOIN: ::c_int = 0x0f;
pub const STATE_INTR: ::c_int = 0x10;
pub const STATE_SEM: ::c_int = 0x11;
pub const STATE_WAITCTX: ::c_int = 0x12;
pub const STATE_NET_SEND: ::c_int = 0x13;
pub const STATE_NET_REPLY: ::c_int = 0x14;
pub const STATE_MAX: ::c_int = 0x18;

pub const _NTO_TIMEOUT_RECEIVE: i32 = 1 << STATE_RECEIVE;
pub const _NTO_TIMEOUT_SEND: i32 = 1 << STATE_SEND;
pub const _NTO_TIMEOUT_REPLY: i32 = 1 << STATE_REPLY;
pub const _NTO_TIMEOUT_SIGSUSPEND: i32 = 1 << STATE_SIGSUSPEND;
pub const _NTO_TIMEOUT_SIGWAITINFO: i32 = 1 << STATE_SIGWAITINFO;
pub const _NTO_TIMEOUT_NANOSLEEP: i32 = 1 << STATE_NANOSLEEP;
pub const _NTO_TIMEOUT_MUTEX: i32 = 1 << STATE_MUTEX;
pub const _NTO_TIMEOUT_CONDVAR: i32 = 1 << STATE_CONDVAR;
pub const _NTO_TIMEOUT_JOIN: i32 = 1 << STATE_JOIN;
pub const _NTO_TIMEOUT_INTR: i32 = 1 << STATE_INTR;
pub const _NTO_TIMEOUT_SEM: i32 = 1 << STATE_SEM;

pub const _NTO_MI_ENDIAN_BIG: u32 = 1;
pub const _NTO_MI_ENDIAN_DIFF: u32 = 2;
pub const _NTO_MI_UNBLOCK_REQ: u32 = 256;
pub const _NTO_MI_NET_CRED_DIRTY: u32 = 512;
pub const _NTO_MI_CONSTRAINED: u32 = 1024;
pub const _NTO_MI_CHROOT: u32 = 2048;
pub const _NTO_MI_BITS_64: u32 = 4096;
pub const _NTO_MI_BITS_DIFF: u32 = 8192;
pub const _NTO_MI_SANDBOX: u32 = 16384;

pub const _NTO_CI_ENDIAN_BIG: u32 = 1;
pub const _NTO_CI_BKGND_PGRP: u32 = 4;
pub const _NTO_CI_ORPHAN_PGRP: u32 = 8;
pub const _NTO_CI_STOPPED: u32 = 128;
pub const _NTO_CI_UNABLE: u32 = 256;
pub const _NTO_CI_TYPE_ID: u32 = 512;
pub const _NTO_CI_CHROOT: u32 = 2048;
pub const _NTO_CI_BITS_64: u32 = 4096;
pub const _NTO_CI_SANDBOX: u32 = 16384;
pub const _NTO_CI_LOADER: u32 = 32768;
pub const _NTO_CI_FULL_GROUPS: u32 = 2147483648;

pub const _NTO_TI_ACTIVE: u32 = 1;
pub const _NTO_TI_ABSOLUTE: u32 = 2;
pub const _NTO_TI_EXPIRED: u32 = 4;
pub const _NTO_TI_TOD_BASED: u32 = 8;
pub const _NTO_TI_TARGET_PROCESS: u32 = 16;
pub const _NTO_TI_REPORT_TOLERANCE: u32 = 32;
pub const _NTO_TI_PRECISE: u32 = 64;
pub const _NTO_TI_TOLERANT: u32 = 128;
pub const _NTO_TI_WAKEUP: u32 = 256;
pub const _NTO_TI_PROCESS_TOLERANT: u32 = 512;
pub const _NTO_TI_HIGH_RESOLUTION: u32 = 1024;

pub const _PULSE_TYPE: u32 = 0;
pub const _PULSE_SUBTYPE: u32 = 0;
pub const _PULSE_CODE_UNBLOCK: i32 = -32;
pub const _PULSE_CODE_DISCONNECT: i32 = -33;
pub const _PULSE_CODE_THREADDEATH: i32 = -34;
pub const _PULSE_CODE_COIDDEATH: i32 = -35;
pub const _PULSE_CODE_NET_ACK: i32 = -36;
pub const _PULSE_CODE_NET_UNBLOCK: i32 = -37;
pub const _PULSE_CODE_NET_DETACH: i32 = -38;
pub const _PULSE_CODE_RESTART: i32 = -39;
pub const _PULSE_CODE_NORESTART: i32 = -40;
pub const _PULSE_CODE_UNBLOCK_RESTART: i32 = -41;
pub const _PULSE_CODE_UNBLOCK_TIMER: i32 = -42;
pub const _PULSE_CODE_MINAVAIL: u32 = 0;
pub const _PULSE_CODE_MAXAVAIL: u32 = 127;

pub const _NTO_HARD_FLAGS_END: u32 = 1;

pub const _NTO_PULSE_IF_UNIQUE: u32 = 4096;
pub const _NTO_PULSE_REPLACE: u32 = 8192;

pub const _NTO_PF_NOCLDSTOP: u32 = 1;
pub const _NTO_PF_LOADING: u32 = 2;
pub const _NTO_PF_TERMING: u32 = 4;
pub const _NTO_PF_ZOMBIE: u32 = 8;
pub const _NTO_PF_NOZOMBIE: u32 = 16;
pub const _NTO_PF_FORKED: u32 = 32;
pub const _NTO_PF_ORPHAN_PGRP: u32 = 64;
pub const _NTO_PF_STOPPED: u32 = 128;
pub const _NTO_PF_DEBUG_STOPPED: u32 = 256;
pub const _NTO_PF_BKGND_PGRP: u32 = 512;
pub const _NTO_PF_NOISYNC: u32 = 1024;
pub const _NTO_PF_CONTINUED: u32 = 2048;
pub const _NTO_PF_CHECK_INTR: u32 = 4096;
pub const _NTO_PF_COREDUMP: u32 = 8192;
pub const _NTO_PF_RING0: u32 = 32768;
pub const _NTO_PF_SLEADER: u32 = 65536;
pub const _NTO_PF_WAITINFO: u32 = 131072;
pub const _NTO_PF_DESTROYALL: u32 = 524288;
pub const _NTO_PF_NOCOREDUMP: u32 = 1048576;
pub const _NTO_PF_WAITDONE: u32 = 4194304;
pub const _NTO_PF_TERM_WAITING: u32 = 8388608;
pub const _NTO_PF_ASLR: u32 = 16777216;
pub const _NTO_PF_EXECED: u32 = 33554432;
pub const _NTO_PF_APP_STOPPED: u32 = 67108864;
pub const _NTO_PF_64BIT: u32 = 134217728;
pub const _NTO_PF_NET: u32 = 268435456;
pub const _NTO_PF_NOLAZYSTACK: u32 = 536870912;
pub const _NTO_PF_NOEXEC_STACK: u32 = 1073741824;
pub const _NTO_PF_LOADER_PERMS: u32 = 2147483648;

pub const _NTO_TF_INTR_PENDING: u32 = 65536;
pub const _NTO_TF_DETACHED: u32 = 131072;
pub const _NTO_TF_SHR_MUTEX: u32 = 262144;
pub const _NTO_TF_SHR_MUTEX_EUID: u32 = 524288;
pub const _NTO_TF_THREADS_HOLD: u32 = 1048576;
pub const _NTO_TF_UNBLOCK_REQ: u32 = 4194304;
pub const _NTO_TF_ALIGN_FAULT: u32 = 16777216;
pub const _NTO_TF_SSTEP: u32 = 33554432;
pub const _NTO_TF_ALLOCED_STACK: u32 = 67108864;
pub const _NTO_TF_NOMULTISIG: u32 = 134217728;
pub const _NTO_TF_LOW_LATENCY: u32 = 268435456;
pub const _NTO_TF_IOPRIV: u32 = 2147483648;

pub const _NTO_TCTL_IO_PRIV: u32 = 1;
pub const _NTO_TCTL_THREADS_HOLD: u32 = 2;
pub const _NTO_TCTL_THREADS_CONT: u32 = 3;
pub const _NTO_TCTL_RUNMASK: u32 = 4;
pub const _NTO_TCTL_ALIGN_FAULT: u32 = 5;
pub const _NTO_TCTL_RUNMASK_GET_AND_SET: u32 = 6;
pub const _NTO_TCTL_PERFCOUNT: u32 = 7;
pub const _NTO_TCTL_ONE_THREAD_HOLD: u32 = 8;
pub const _NTO_TCTL_ONE_THREAD_CONT: u32 = 9;
pub const _NTO_TCTL_RUNMASK_GET_AND_SET_INHERIT: u32 = 10;
pub const _NTO_TCTL_NAME: u32 = 11;
pub const _NTO_TCTL_RCM_GET_AND_SET: u32 = 12;
pub const _NTO_TCTL_SHR_MUTEX: u32 = 13;
pub const _NTO_TCTL_IO: u32 = 14;
pub const _NTO_TCTL_NET_KIF_GET_AND_SET: u32 = 15;
pub const _NTO_TCTL_LOW_LATENCY: u32 = 16;
pub const _NTO_TCTL_ADD_EXIT_EVENT: u32 = 17;
pub const _NTO_TCTL_DEL_EXIT_EVENT: u32 = 18;
pub const _NTO_TCTL_IO_LEVEL: u32 = 19;
pub const _NTO_TCTL_RESERVED: u32 = 2147483648;
pub const _NTO_TCTL_IO_LEVEL_INHERIT: u32 = 1073741824;
pub const _NTO_IO_LEVEL_NONE: u32 = 1;
pub const _NTO_IO_LEVEL_1: u32 = 2;
pub const _NTO_IO_LEVEL_2: u32 = 3;

pub const _NTO_THREAD_NAME_MAX: u32 = 100;

pub const _NTO_CHF_FIXED_PRIORITY: u32 = 1;
pub const _NTO_CHF_UNBLOCK: u32 = 2;
pub const _NTO_CHF_THREAD_DEATH: u32 = 4;
pub const _NTO_CHF_DISCONNECT: u32 = 8;
pub const _NTO_CHF_NET_MSG: u32 = 16;
pub const _NTO_CHF_SENDER_LEN: u32 = 32;
pub const _NTO_CHF_COID_DISCONNECT: u32 = 64;
pub const _NTO_CHF_REPLY_LEN: u32 = 128;
pub const _NTO_CHF_PULSE_POOL: u32 = 256;
pub const _NTO_CHF_ASYNC_NONBLOCK: u32 = 512;
pub const _NTO_CHF_ASYNC: u32 = 1024;
pub const _NTO_CHF_GLOBAL: u32 = 2048;
pub const _NTO_CHF_PRIVATE: u32 = 4096;
pub const _NTO_CHF_MSG_PAUSING: u32 = 8192;
pub const _NTO_CHF_INHERIT_RUNMASK: u32 = 16384;
pub const _NTO_CHF_UNBLOCK_TIMER: u32 = 32768;

pub const _NTO_CHO_CUSTOM_EVENT: u32 = 1;

pub const _NTO_COF_CLOEXEC: u32 = 1;
pub const _NTO_COF_DEAD: u32 = 2;
pub const _NTO_COF_NOSHARE: u32 = 64;
pub const _NTO_COF_NETCON: u32 = 128;
pub const _NTO_COF_NONBLOCK: u32 = 256;
pub const _NTO_COF_ASYNC: u32 = 512;
pub const _NTO_COF_GLOBAL: u32 = 1024;
pub const _NTO_COF_NOEVENT: u32 = 2048;
pub const _NTO_COF_INSECURE: u32 = 4096;
pub const _NTO_COF_REG_EVENTS: u32 = 8192;
pub const _NTO_COF_UNREG_EVENTS: u32 = 16384;
pub const _NTO_COF_MASK: u32 = 65535;

pub const _NTO_SIDE_CHANNEL: u32 = 1073741824;

pub const _NTO_CONNECTION_SCOID: u32 = 65536;
pub const _NTO_GLOBAL_CHANNEL: u32 = 1073741824;

pub const _NTO_TIMEOUT_MASK: u32 = (1 << STATE_MAX) - 1;
pub const _NTO_TIMEOUT_ACTIVE: u32 = 1 << STATE_MAX;
pub const _NTO_TIMEOUT_IMMEDIATE: u32 = 1 << (STATE_MAX + 1);

pub const _NTO_IC_LATENCY: u32 = 0;

pub const _NTO_INTR_FLAGS_END: u32 = 1;
pub const _NTO_INTR_FLAGS_NO_UNMASK: u32 = 2;
pub const _NTO_INTR_FLAGS_PROCESS: u32 = 4;
pub const _NTO_INTR_FLAGS_TRK_MSK: u32 = 8;
pub const _NTO_INTR_FLAGS_ARRAY: u32 = 16;
pub const _NTO_INTR_FLAGS_EXCLUSIVE: u32 = 32;
pub const _NTO_INTR_FLAGS_FPU: u32 = 64;

pub const _NTO_INTR_CLASS_EXTERNAL: u32 = 0;
pub const _NTO_INTR_CLASS_SYNTHETIC: u32 = 2147418112;

pub const _NTO_INTR_SPARE: u32 = 2147483647;

pub const _NTO_HOOK_IDLE: u32 = 2147418113;
pub const _NTO_HOOK_OVERDRIVE: u32 = 2147418114;
pub const _NTO_HOOK_LAST: u32 = 2147418114;
pub const _NTO_HOOK_IDLE2_FLAG: u32 = 32768;

pub const _NTO_IH_CMD_SLEEP_SETUP: u32 = 1;
pub const _NTO_IH_CMD_SLEEP_BLOCK: u32 = 2;
pub const _NTO_IH_CMD_SLEEP_WAKEUP: u32 = 4;
pub const _NTO_IH_CMD_SLEEP_ONLINE: u32 = 8;
pub const _NTO_IH_RESP_NEEDS_BLOCK: u32 = 1;
pub const _NTO_IH_RESP_NEEDS_WAKEUP: u32 = 2;
pub const _NTO_IH_RESP_NEEDS_ONLINE: u32 = 4;
pub const _NTO_IH_RESP_SYNC_TIME: u32 = 16;
pub const _NTO_IH_RESP_SYNC_TLB: u32 = 32;
pub const _NTO_IH_RESP_SUGGEST_OFFLINE: u32 = 256;
pub const _NTO_IH_RESP_SLEEP_MODE_REACHED: u32 = 512;
pub const _NTO_IH_RESP_DELIVER_INTRS: u32 = 1024;

pub const _NTO_READIOV_SEND: u32 = 0;
pub const _NTO_READIOV_REPLY: u32 = 1;

pub const _NTO_KEYDATA_VTID: u32 = 2147483648;

pub const _NTO_KEYDATA_PATHSIGN: u32 = 32768;
pub const _NTO_KEYDATA_OP_MASK: u32 = 255;
pub const _NTO_KEYDATA_VERIFY: u32 = 0;
pub const _NTO_KEYDATA_CALCULATE: u32 = 1;
pub const _NTO_KEYDATA_CALCULATE_REUSE: u32 = 2;
pub const _NTO_KEYDATA_PATHSIGN_VERIFY: u32 = 32768;
pub const _NTO_KEYDATA_PATHSIGN_CALCULATE: u32 = 32769;
pub const _NTO_KEYDATA_PATHSIGN_CALCULATE_REUSE: u32 = 32770;

pub const _NTO_SCTL_SETPRIOCEILING: u32 = 1;
pub const _NTO_SCTL_GETPRIOCEILING: u32 = 2;
pub const _NTO_SCTL_SETEVENT: u32 = 3;
pub const _NTO_SCTL_MUTEX_WAKEUP: u32 = 4;
pub const _NTO_SCTL_MUTEX_CONSISTENT: u32 = 5;
pub const _NTO_SCTL_SEM_VALUE: u32 = 6;

pub const _NTO_CLIENTINFO_GETGROUPS: u32 = 1;
pub const _NTO_CLIENTINFO_GETTYPEID: u32 = 2;

extern "C" {
    pub fn ChannelCreate(__flags: ::c_uint) -> ::c_int;
    pub fn ChannelCreate_r(__flags: ::c_uint) -> ::c_int;
    pub fn ChannelCreatePulsePool(
        __flags: ::c_uint,
        __config: *const nto_channel_config,
    ) -> ::c_int;
    pub fn ChannelCreateExt(
        __flags: ::c_uint,
        __mode: ::mode_t,
        __bufsize: usize,
        __maxnumbuf: ::c_uint,
        __ev: *const ::sigevent,
        __cred: *mut _cred_info,
    ) -> ::c_int;
    pub fn ChannelDestroy(__chid: ::c_int) -> ::c_int;
    pub fn ChannelDestroy_r(__chid: ::c_int) -> ::c_int;
    pub fn ConnectAttach(
        __nd: u32,
        __pid: ::pid_t,
        __chid: ::c_int,
        __index: ::c_uint,
        __flags: ::c_int,
    ) -> ::c_int;
    pub fn ConnectAttach_r(
        __nd: u32,
        __pid: ::pid_t,
        __chid: ::c_int,
        __index: ::c_uint,
        __flags: ::c_int,
    ) -> ::c_int;

    // TODO: The following function uses a structure defined in a header file
    //       which doesn't appear as part of the default headers found in a
    //       standard installation of Neutrino 7.1 SDP.  Commented out for now.
    //pub fn ConnectAttachExt(
    //    __nd: u32,
    //    __pid: ::pid_t,
    //    __chid: ::c_int,
    //    __index: ::c_uint,
    //    __flags: ::c_int,
    //    __cd: *mut _asyncmsg_connection_descriptor,
    //) -> ::c_int;
    pub fn ConnectDetach(__coid: ::c_int) -> ::c_int;
    pub fn ConnectDetach_r(__coid: ::c_int) -> ::c_int;
    pub fn ConnectServerInfo(__pid: ::pid_t, __coid: ::c_int, __info: *mut _msg_info64) -> ::c_int;
    pub fn ConnectServerInfo_r(
        __pid: ::pid_t,
        __coid: ::c_int,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn ConnectClientInfoExtraArgs(
        __scoid: ::c_int,
        __info_pp: *mut _client_info,
        __ngroups: ::c_int,
        __abilities: *mut _client_able,
        __nable: ::c_int,
        __type_id: *mut ::c_uint,
    ) -> ::c_int;
    pub fn ConnectClientInfoExtraArgs_r(
        __scoid: ::c_int,
        __info_pp: *mut _client_info,
        __ngroups: ::c_int,
        __abilities: *mut _client_able,
        __nable: ::c_int,
        __type_id: *mut ::c_uint,
    ) -> ::c_int;
    pub fn ConnectClientInfo(
        __scoid: ::c_int,
        __info: *mut _client_info,
        __ngroups: ::c_int,
    ) -> ::c_int;
    pub fn ConnectClientInfo_r(
        __scoid: ::c_int,
        __info: *mut _client_info,
        __ngroups: ::c_int,
    ) -> ::c_int;
    pub fn ConnectClientInfoExt(
        __scoid: ::c_int,
        __info_pp: *mut *mut _client_info,
        flags: ::c_int,
    ) -> ::c_int;
    pub fn ClientInfoExtFree(__info_pp: *mut *mut _client_info) -> ::c_int;
    pub fn ConnectClientInfoAble(
        __scoid: ::c_int,
        __info_pp: *mut *mut _client_info,
        flags: ::c_int,
        abilities: *mut _client_able,
        nable: ::c_int,
    ) -> ::c_int;
    pub fn ConnectFlags(
        __pid: ::pid_t,
        __coid: ::c_int,
        __mask: ::c_uint,
        __bits: ::c_uint,
    ) -> ::c_int;
    pub fn ConnectFlags_r(
        __pid: ::pid_t,
        __coid: ::c_int,
        __mask: ::c_uint,
        __bits: ::c_uint,
    ) -> ::c_int;
    pub fn ChannelConnectAttr(
        __id: ::c_uint,
        __old_attr: *mut _channel_connect_attr,
        __new_attr: *mut _channel_connect_attr,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn MsgSend(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSend_r(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendnc(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendnc_r(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendsv(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendsv_r(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendsvnc(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendsvnc_r(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendvs(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendvs_r(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendvsnc(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendvsnc_r(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
    ) -> ::c_long;
    pub fn MsgSendv(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendv_r(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendvnc(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgSendvnc_r(
        __coid: ::c_int,
        __siov: *const ::iovec,
        __sparts: usize,
        __riov: *const ::iovec,
        __rparts: usize,
    ) -> ::c_long;
    pub fn MsgReceive(
        __chid: ::c_int,
        __msg: *mut ::c_void,
        __bytes: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceive_r(
        __chid: ::c_int,
        __msg: *mut ::c_void,
        __bytes: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceivev(
        __chid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceivev_r(
        __chid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceivePulse(
        __chid: ::c_int,
        __pulse: *mut ::c_void,
        __bytes: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceivePulse_r(
        __chid: ::c_int,
        __pulse: *mut ::c_void,
        __bytes: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceivePulsev(
        __chid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReceivePulsev_r(
        __chid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __info: *mut _msg_info64,
    ) -> ::c_int;
    pub fn MsgReply(
        __rcvid: ::c_int,
        __status: ::c_long,
        __msg: *const ::c_void,
        __bytes: usize,
    ) -> ::c_int;
    pub fn MsgReply_r(
        __rcvid: ::c_int,
        __status: ::c_long,
        __msg: *const ::c_void,
        __bytes: usize,
    ) -> ::c_int;
    pub fn MsgReplyv(
        __rcvid: ::c_int,
        __status: ::c_long,
        __iov: *const ::iovec,
        __parts: usize,
    ) -> ::c_int;
    pub fn MsgReplyv_r(
        __rcvid: ::c_int,
        __status: ::c_long,
        __iov: *const ::iovec,
        __parts: usize,
    ) -> ::c_int;
    pub fn MsgReadiov(
        __rcvid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __offset: usize,
        __flags: ::c_int,
    ) -> isize;
    pub fn MsgReadiov_r(
        __rcvid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __offset: usize,
        __flags: ::c_int,
    ) -> isize;
    pub fn MsgRead(
        __rcvid: ::c_int,
        __msg: *mut ::c_void,
        __bytes: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgRead_r(
        __rcvid: ::c_int,
        __msg: *mut ::c_void,
        __bytes: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgReadv(
        __rcvid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgReadv_r(
        __rcvid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgWrite(
        __rcvid: ::c_int,
        __msg: *const ::c_void,
        __bytes: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgWrite_r(
        __rcvid: ::c_int,
        __msg: *const ::c_void,
        __bytes: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgWritev(
        __rcvid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgWritev_r(
        __rcvid: ::c_int,
        __iov: *const ::iovec,
        __parts: usize,
        __offset: usize,
    ) -> isize;
    pub fn MsgSendPulse(
        __coid: ::c_int,
        __priority: ::c_int,
        __code: ::c_int,
        __value: ::c_int,
    ) -> ::c_int;
    pub fn MsgSendPulse_r(
        __coid: ::c_int,
        __priority: ::c_int,
        __code: ::c_int,
        __value: ::c_int,
    ) -> ::c_int;
    pub fn MsgSendPulsePtr(
        __coid: ::c_int,
        __priority: ::c_int,
        __code: ::c_int,
        __value: *mut ::c_void,
    ) -> ::c_int;
    pub fn MsgSendPulsePtr_r(
        __coid: ::c_int,
        __priority: ::c_int,
        __code: ::c_int,
        __value: *mut ::c_void,
    ) -> ::c_int;
    pub fn MsgDeliverEvent(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
    pub fn MsgDeliverEvent_r(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
    pub fn MsgVerifyEvent(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
    pub fn MsgVerifyEvent_r(__rcvid: ::c_int, __event: *const ::sigevent) -> ::c_int;
    pub fn MsgRegisterEvent(__event: *mut ::sigevent, __coid: ::c_int) -> ::c_int;
    pub fn MsgRegisterEvent_r(__event: *mut ::sigevent, __coid: ::c_int) -> ::c_int;
    pub fn MsgUnregisterEvent(__event: *const ::sigevent) -> ::c_int;
    pub fn MsgUnregisterEvent_r(__event: *const ::sigevent) -> ::c_int;
    pub fn MsgInfo(__rcvid: ::c_int, __info: *mut _msg_info64) -> ::c_int;
    pub fn MsgInfo_r(__rcvid: ::c_int, __info: *mut _msg_info64) -> ::c_int;
    pub fn MsgKeyData(
        __rcvid: ::c_int,
        __oper: ::c_int,
        __key: u32,
        __newkey: *mut u32,
        __iov: *const ::iovec,
        __parts: ::c_int,
    ) -> ::c_int;
    pub fn MsgKeyData_r(
        __rcvid: ::c_int,
        __oper: ::c_int,
        __key: u32,
        __newkey: *mut u32,
        __iov: *const ::iovec,
        __parts: ::c_int,
    ) -> ::c_int;
    pub fn MsgError(__rcvid: ::c_int, __err: ::c_int) -> ::c_int;
    pub fn MsgError_r(__rcvid: ::c_int, __err: ::c_int) -> ::c_int;
    pub fn MsgCurrent(__rcvid: ::c_int) -> ::c_int;
    pub fn MsgCurrent_r(__rcvid: ::c_int) -> ::c_int;
    pub fn MsgSendAsyncGbl(
        __coid: ::c_int,
        __smsg: *const ::c_void,
        __sbytes: usize,
        __msg_prio: ::c_uint,
    ) -> ::c_int;
    pub fn MsgSendAsync(__coid: ::c_int) -> ::c_int;
    pub fn MsgReceiveAsyncGbl(
        __chid: ::c_int,
        __rmsg: *mut ::c_void,
        __rbytes: usize,
        __info: *mut _msg_info64,
        __coid: ::c_int,
    ) -> ::c_int;
    pub fn MsgReceiveAsync(__chid: ::c_int, __iov: *const ::iovec, __parts: ::c_uint) -> ::c_int;
    pub fn MsgPause(__rcvid: ::c_int, __cookie: ::c_uint) -> ::c_int;
    pub fn MsgPause_r(__rcvid: ::c_int, __cookie: ::c_uint) -> ::c_int;

    pub fn SignalKill(
        __nd: u32,
        __pid: ::pid_t,
        __tid: ::c_int,
        __signo: ::c_int,
        __code: ::c_int,
        __value: ::c_int,
    ) -> ::c_int;
    pub fn SignalKill_r(
        __nd: u32,
        __pid: ::pid_t,
        __tid: ::c_int,
        __signo: ::c_int,
        __code: ::c_int,
        __value: ::c_int,
    ) -> ::c_int;
    pub fn SignalKillSigval(
        __nd: u32,
        __pid: ::pid_t,
        __tid: ::c_int,
        __signo: ::c_int,
        __code: ::c_int,
        __value: *const ::sigval,
    ) -> ::c_int;
    pub fn SignalKillSigval_r(
        __nd: u32,
        __pid: ::pid_t,
        __tid: ::c_int,
        __signo: ::c_int,
        __code: ::c_int,
        __value: *const ::sigval,
    ) -> ::c_int;
    pub fn SignalReturn(__info: *mut _sighandler_info) -> ::c_int;
    pub fn SignalFault(__sigcode: ::c_uint, __regs: *mut ::c_void, __refaddr: usize) -> ::c_int;
    pub fn SignalAction(
        __pid: ::pid_t,
        __sigstub: unsafe extern "C" fn(),
        __signo: ::c_int,
        __act: *const ::sigaction,
        __oact: *mut ::sigaction,
    ) -> ::c_int;
    pub fn SignalAction_r(
        __pid: ::pid_t,
        __sigstub: unsafe extern "C" fn(),
        __signo: ::c_int,
        __act: *const ::sigaction,
        __oact: *mut ::sigaction,
    ) -> ::c_int;
    pub fn SignalProcmask(
        __pid: ::pid_t,
        __tid: ::c_int,
        __how: ::c_int,
        __set: *const ::sigset_t,
        __oldset: *mut ::sigset_t,
    ) -> ::c_int;
    pub fn SignalProcmask_r(
        __pid: ::pid_t,
        __tid: ::c_int,
        __how: ::c_int,
        __set: *const ::sigset_t,
        __oldset: *mut ::sigset_t,
    ) -> ::c_int;
    pub fn SignalSuspend(__set: *const ::sigset_t) -> ::c_int;
    pub fn SignalSuspend_r(__set: *const ::sigset_t) -> ::c_int;
    pub fn SignalWaitinfo(__set: *const ::sigset_t, __info: *mut ::siginfo_t) -> ::c_int;
    pub fn SignalWaitinfo_r(__set: *const ::sigset_t, __info: *mut ::siginfo_t) -> ::c_int;
    pub fn SignalWaitinfoMask(
        __set: *const ::sigset_t,
        __info: *mut ::siginfo_t,
        __mask: *const ::sigset_t,
    ) -> ::c_int;
    pub fn SignalWaitinfoMask_r(
        __set: *const ::sigset_t,
        __info: *mut ::siginfo_t,
        __mask: *const ::sigset_t,
    ) -> ::c_int;
    pub fn ThreadCreate(
        __pid: ::pid_t,
        __func: unsafe extern "C" fn(__arg: *mut ::c_void) -> *mut ::c_void,
        __arg: *mut ::c_void,
        __attr: *const ::_thread_attr,
    ) -> ::c_int;
    pub fn ThreadCreate_r(
        __pid: ::pid_t,
        __func: unsafe extern "C" fn(__arg: *mut ::c_void) -> *mut ::c_void,
        __arg: *mut ::c_void,
        __attr: *const ::_thread_attr,
    ) -> ::c_int;

    pub fn ThreadDestroy(__tid: ::c_int, __priority: ::c_int, __status: *mut ::c_void) -> ::c_int;
    pub fn ThreadDestroy_r(__tid: ::c_int, __priority: ::c_int, __status: *mut ::c_void)
        -> ::c_int;
    pub fn ThreadDetach(__tid: ::c_int) -> ::c_int;
    pub fn ThreadDetach_r(__tid: ::c_int) -> ::c_int;
    pub fn ThreadJoin(__tid: ::c_int, __status: *mut *mut ::c_void) -> ::c_int;
    pub fn ThreadJoin_r(__tid: ::c_int, __status: *mut *mut ::c_void) -> ::c_int;
    pub fn ThreadCancel(__tid: ::c_int, __canstub: unsafe extern "C" fn()) -> ::c_int;
    pub fn ThreadCancel_r(__tid: ::c_int, __canstub: unsafe extern "C" fn()) -> ::c_int;
    pub fn ThreadCtl(__cmd: ::c_int, __data: *mut ::c_void) -> ::c_int;
    pub fn ThreadCtl_r(__cmd: ::c_int, __data: *mut ::c_void) -> ::c_int;
    pub fn ThreadCtlExt(
        __pid: ::pid_t,
        __tid: ::c_int,
        __cmd: ::c_int,
        __data: *mut ::c_void,
    ) -> ::c_int;
    pub fn ThreadCtlExt_r(
        __pid: ::pid_t,
        __tid: ::c_int,
        __cmd: ::c_int,
        __data: *mut ::c_void,
    ) -> ::c_int;

    pub fn InterruptHookTrace(
        __handler: ::Option<unsafe extern "C" fn(arg1: ::c_int) -> *const ::sigevent>,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptHookIdle(
        __handler: ::Option<unsafe extern "C" fn(arg1: *mut u64, arg2: *mut qtime_entry)>,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptHookIdle2(
        __handler: ::Option<
            unsafe extern "C" fn(arg1: ::c_uint, arg2: *mut syspage_entry, arg3: *mut _idle_hook),
        >,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptHookOverdriveEvent(__event: *const ::sigevent, __flags: ::c_uint) -> ::c_int;
    pub fn InterruptAttachEvent(
        __intr: ::c_int,
        __event: *const ::sigevent,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptAttachEvent_r(
        __intr: ::c_int,
        __event: *const ::sigevent,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptAttach(
        __intr: ::c_int,
        __handler: ::Option<
            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const ::sigevent,
        >,
        __area: *const ::c_void,
        __size: ::c_int,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptAttach_r(
        __intr: ::c_int,
        __handler: ::Option<
            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const ::sigevent,
        >,
        __area: *const ::c_void,
        __size: ::c_int,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptAttachArray(
        __intr: ::c_int,
        __handler: ::Option<
            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const *const ::sigevent,
        >,
        __area: *const ::c_void,
        __size: ::c_int,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptAttachArray_r(
        __intr: ::c_int,
        __handler: ::Option<
            unsafe extern "C" fn(__area: *mut ::c_void, __id: ::c_int) -> *const *const ::sigevent,
        >,
        __area: *const ::c_void,
        __size: ::c_int,
        __flags: ::c_uint,
    ) -> ::c_int;
    pub fn InterruptDetach(__id: ::c_int) -> ::c_int;
    pub fn InterruptDetach_r(__id: ::c_int) -> ::c_int;
    pub fn InterruptWait(__flags: ::c_int, __timeout: *const u64) -> ::c_int;
    pub fn InterruptWait_r(__flags: ::c_int, __timeout: *const u64) -> ::c_int;
    pub fn InterruptCharacteristic(
        __type: ::c_int,
        __id: ::c_int,
        __new: *mut ::c_uint,
        __old: *mut ::c_uint,
    ) -> ::c_int;
    pub fn InterruptCharacteristic_r(
        __type: ::c_int,
        __id: ::c_int,
        __new: *mut ::c_uint,
        __old: *mut ::c_uint,
    ) -> ::c_int;

    pub fn SchedGet(__pid: ::pid_t, __tid: ::c_int, __param: *mut ::sched_param) -> ::c_int;
    pub fn SchedGet_r(__pid: ::pid_t, __tid: ::c_int, __param: *mut ::sched_param) -> ::c_int;
    pub fn SchedGetCpuNum() -> ::c_uint;
    pub fn SchedSet(
        __pid: ::pid_t,
        __tid: ::c_int,
        __algorithm: ::c_int,
        __param: *const ::sched_param,
    ) -> ::c_int;
    pub fn SchedSet_r(
        __pid: ::pid_t,
        __tid: ::c_int,
        __algorithm: ::c_int,
        __param: *const ::sched_param,
    ) -> ::c_int;
    pub fn SchedInfo(__pid: ::pid_t, __algorithm: ::c_int, __info: *mut ::_sched_info) -> ::c_int;
    pub fn SchedInfo_r(__pid: ::pid_t, __algorithm: ::c_int, __info: *mut ::_sched_info)
        -> ::c_int;
    pub fn SchedYield() -> ::c_int;
    pub fn SchedYield_r() -> ::c_int;
    pub fn SchedCtl(__cmd: ::c_int, __data: *mut ::c_void, __length: usize) -> ::c_int;
    pub fn SchedCtl_r(__cmd: ::c_int, __data: *mut ::c_void, __length: usize) -> ::c_int;
    pub fn SchedJobCreate(__job: *mut nto_job_t) -> ::c_int;
    pub fn SchedJobCreate_r(__job: *mut nto_job_t) -> ::c_int;
    pub fn SchedJobDestroy(__job: *mut nto_job_t) -> ::c_int;
    pub fn SchedJobDestroy_r(__job: *mut nto_job_t) -> ::c_int;
    pub fn SchedWaypoint(
        __job: *mut nto_job_t,
        __new: *const i64,
        __max: *const i64,
        __old: *mut i64,
    ) -> ::c_int;
    pub fn SchedWaypoint_r(
        __job: *mut nto_job_t,
        __new: *const i64,
        __max: *const i64,
        __old: *mut i64,
    ) -> ::c_int;

    pub fn TimerCreate(__id: ::clockid_t, __notify: *const ::sigevent) -> ::c_int;
    pub fn TimerCreate_r(__id: ::clockid_t, __notify: *const ::sigevent) -> ::c_int;
    pub fn TimerDestroy(__id: ::timer_t) -> ::c_int;
    pub fn TimerDestroy_r(__id: ::timer_t) -> ::c_int;
    pub fn TimerSettime(
        __id: ::timer_t,
        __flags: ::c_int,
        __itime: *const ::_itimer,
        __oitime: *mut ::_itimer,
    ) -> ::c_int;
    pub fn TimerSettime_r(
        __id: ::timer_t,
        __flags: ::c_int,
        __itime: *const ::_itimer,
        __oitime: *mut ::_itimer,
    ) -> ::c_int;
    pub fn TimerInfo(
        __pid: ::pid_t,
        __id: ::timer_t,
        __flags: ::c_int,
        __info: *mut ::_timer_info,
    ) -> ::c_int;
    pub fn TimerInfo_r(
        __pid: ::pid_t,
        __id: ::timer_t,
        __flags: ::c_int,
        __info: *mut ::_timer_info,
    ) -> ::c_int;
    pub fn TimerAlarm(
        __id: ::clockid_t,
        __itime: *const ::_itimer,
        __otime: *mut ::_itimer,
    ) -> ::c_int;
    pub fn TimerAlarm_r(
        __id: ::clockid_t,
        __itime: *const ::_itimer,
        __otime: *mut ::_itimer,
    ) -> ::c_int;
    pub fn TimerTimeout(
        __id: ::clockid_t,
        __flags: ::c_int,
        __notify: *const ::sigevent,
        __ntime: *const u64,
        __otime: *mut u64,
    ) -> ::c_int;
    pub fn TimerTimeout_r(
        __id: ::clockid_t,
        __flags: ::c_int,
        __notify: *const ::sigevent,
        __ntime: *const u64,
        __otime: *mut u64,
    ) -> ::c_int;

    pub fn SyncTypeCreate(
        __type: ::c_uint,
        __sync: *mut ::sync_t,
        __attr: *const ::_sync_attr,
    ) -> ::c_int;
    pub fn SyncTypeCreate_r(
        __type: ::c_uint,
        __sync: *mut ::sync_t,
        __attr: *const ::_sync_attr,
    ) -> ::c_int;
    pub fn SyncDestroy(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncDestroy_r(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncCtl(__cmd: ::c_int, __sync: *mut ::sync_t, __data: *mut ::c_void) -> ::c_int;
    pub fn SyncCtl_r(__cmd: ::c_int, __sync: *mut ::sync_t, __data: *mut ::c_void) -> ::c_int;
    pub fn SyncMutexEvent(__sync: *mut ::sync_t, event: *const ::sigevent) -> ::c_int;
    pub fn SyncMutexEvent_r(__sync: *mut ::sync_t, event: *const ::sigevent) -> ::c_int;
    pub fn SyncMutexLock(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncMutexLock_r(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncMutexUnlock(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncMutexUnlock_r(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncMutexRevive(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncMutexRevive_r(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncCondvarWait(__sync: *mut ::sync_t, __mutex: *mut ::sync_t) -> ::c_int;
    pub fn SyncCondvarWait_r(__sync: *mut ::sync_t, __mutex: *mut ::sync_t) -> ::c_int;
    pub fn SyncCondvarSignal(__sync: *mut ::sync_t, __all: ::c_int) -> ::c_int;
    pub fn SyncCondvarSignal_r(__sync: *mut ::sync_t, __all: ::c_int) -> ::c_int;
    pub fn SyncSemPost(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncSemPost_r(__sync: *mut ::sync_t) -> ::c_int;
    pub fn SyncSemWait(__sync: *mut ::sync_t, __tryto: ::c_int) -> ::c_int;
    pub fn SyncSemWait_r(__sync: *mut ::sync_t, __tryto: ::c_int) -> ::c_int;

    pub fn ClockTime(__id: ::clockid_t, _new: *const u64, __old: *mut u64) -> ::c_int;
    pub fn ClockTime_r(__id: ::clockid_t, _new: *const u64, __old: *mut u64) -> ::c_int;
    pub fn ClockAdjust(
        __id: ::clockid_t,
        _new: *const ::_clockadjust,
        __old: *mut ::_clockadjust,
    ) -> ::c_int;
    pub fn ClockAdjust_r(
        __id: ::clockid_t,
        _new: *const ::_clockadjust,
        __old: *mut ::_clockadjust,
    ) -> ::c_int;
    pub fn ClockPeriod(
        __id: ::clockid_t,
        _new: *const ::_clockperiod,
        __old: *mut ::_clockperiod,
        __reserved: ::c_int,
    ) -> ::c_int;
    pub fn ClockPeriod_r(
        __id: ::clockid_t,
        _new: *const ::_clockperiod,
        __old: *mut ::_clockperiod,
        __reserved: ::c_int,
    ) -> ::c_int;
    pub fn ClockId(__pid: ::pid_t, __tid: ::c_int) -> ::c_int;
    pub fn ClockId_r(__pid: ::pid_t, __tid: ::c_int) -> ::c_int;

    //
    //TODO: The following commented out functions are implemented in assembly.
    //      We can implmement them either via a C stub or rust's inline assembly.
    //
    //pub fn InterruptEnable();
    //pub fn InterruptDisable();
    pub fn InterruptMask(__intr: ::c_int, __id: ::c_int) -> ::c_int;
    pub fn InterruptUnmask(__intr: ::c_int, __id: ::c_int) -> ::c_int;
    //pub fn InterruptLock(__spin: *mut ::intrspin);
    //pub fn InterruptUnlock(__spin: *mut ::intrspin);
    //pub fn InterruptStatus() -> ::c_uint;
}