3 pub type wchar_t
= i32;
4 pub type clock_t
= u64;
6 pub type lwpid_t
= i32;
7 pub type nlink_t
= u32;
8 pub type blksize_t
= i64;
9 pub type clockid_t
= ::c_ulong
;
11 pub type c_long
= i64;
12 pub type c_ulong
= u64;
13 pub type time_t
= i64;
14 pub type suseconds_t
= i64;
16 pub type uuid_t
= ::uuid
;
18 pub type fsblkcnt_t
= u64;
19 pub type fsfilcnt_t
= u64;
20 pub type idtype_t
= ::c_uint
;
21 pub type shmatt_t
= ::c_uint
;
23 pub type mqd_t
= ::c_int
;
24 pub type sem_t
= *mut sem
;
26 pub type cpuset_t
= cpumask_t
;
27 pub type cpu_set_t
= cpumask_t
;
29 pub type register_t
= ::c_long
;
30 pub type umtx_t
= ::c_int
;
31 pub type pthread_barrierattr_t
= ::c_int
;
32 pub type pthread_barrier_t
= ::uintptr_t
;
33 pub type pthread_spinlock_t
= ::uintptr_t
;
35 #[cfg_attr(feature = "extra_traits", derive(Debug))]
37 impl ::Copy
for sem {}
38 impl ::Clone
for sem
{
39 fn clone(&self) -> sem
{
46 pub ident
: ::uintptr_t
,
47 pub filter
: ::c_short
,
48 pub flags
: ::c_ushort
,
51 pub udata
: *mut ::c_void
,
54 pub struct exit_status
{
55 pub e_termination
: u16,
60 pub aio_fildes
: ::c_int
,
61 pub aio_offset
: ::off_t
,
62 pub aio_buf
: *mut ::c_void
,
63 pub aio_nbytes
: ::size_t
,
64 pub aio_sigevent
: sigevent
,
65 pub aio_lio_opcode
: ::c_int
,
66 pub aio_reqprio
: ::c_int
,
74 pub time_hi_and_version
: u16,
75 pub clock_seq_hi_and_reserved
: u8,
76 pub clock_seq_low
: u8,
81 pub mq_flags
: ::c_long
,
82 pub mq_maxmsg
: ::c_long
,
83 pub mq_msgsize
: ::c_long
,
84 pub mq_curmsgs
: ::c_long
,
88 pub f_bsize
: ::c_ulong
,
89 pub f_frsize
: ::c_ulong
,
90 pub f_blocks
: ::fsblkcnt_t
,
91 pub f_bfree
: ::fsblkcnt_t
,
92 pub f_bavail
: ::fsblkcnt_t
,
93 pub f_files
: ::fsfilcnt_t
,
94 pub f_ffree
: ::fsfilcnt_t
,
95 pub f_favail
: ::fsfilcnt_t
,
96 pub f_fsid
: ::c_ulong
,
97 pub f_flag
: ::c_ulong
,
98 pub f_namemax
: ::c_ulong
,
100 pub f_type
: ::c_uint
,
101 pub f_syncreads
: u64,
102 pub f_syncwrites
: u64,
103 pub f_asyncreads
: u64,
104 pub f_asyncwrites
: u64,
105 pub f_fsid_uuid
: ::uuid_t
,
106 pub f_uid_uuid
: ::uuid_t
,
111 pub st_nlink
: ::nlink_t
,
113 pub st_mode
: ::mode_t
,
114 pub st_padding1
: u16,
117 pub st_rdev
: ::dev_t
,
118 pub st_atime
: ::time_t
,
119 pub st_atime_nsec
: ::c_long
,
120 pub st_mtime
: ::time_t
,
121 pub st_mtime_nsec
: ::c_long
,
122 pub st_ctime
: ::time_t
,
123 pub st_ctime_nsec
: ::c_long
,
124 pub st_size
: ::off_t
,
126 pub __old_st_blksize
: u32,
135 pub ifi_type
: ::c_uchar
,
136 pub ifi_physical
: ::c_uchar
,
137 pub ifi_addrlen
: ::c_uchar
,
138 pub ifi_hdrlen
: ::c_uchar
,
139 pub ifi_recvquota
: ::c_uchar
,
140 pub ifi_xmitquota
: ::c_uchar
,
141 pub ifi_mtu
: ::c_ulong
,
142 pub ifi_metric
: ::c_ulong
,
143 pub ifi_link_state
: ::c_ulong
,
144 pub ifi_baudrate
: u64,
145 pub ifi_ipackets
: ::c_ulong
,
146 pub ifi_ierrors
: ::c_ulong
,
147 pub ifi_opackets
: ::c_ulong
,
148 pub ifi_oerrors
: ::c_ulong
,
149 pub ifi_collisions
: ::c_ulong
,
150 pub ifi_ibytes
: ::c_ulong
,
151 pub ifi_obytes
: ::c_ulong
,
152 pub ifi_imcasts
: ::c_ulong
,
153 pub ifi_omcasts
: ::c_ulong
,
154 pub ifi_iqdrops
: ::c_ulong
,
155 pub ifi_noproto
: ::c_ulong
,
156 pub ifi_hwassist
: ::c_ulong
,
157 pub ifi_oqdrops
: ::c_ulong
,
158 pub ifi_lastchange
: ::timeval
,
161 pub struct if_msghdr
{
162 pub ifm_msglen
: ::c_ushort
,
163 pub ifm_version
: ::c_uchar
,
164 pub ifm_type
: ::c_uchar
,
165 pub ifm_addrs
: ::c_int
,
166 pub ifm_flags
: ::c_int
,
167 pub ifm_index
: ::c_ushort
,
168 pub ifm_data
: if_data
,
171 pub struct sockaddr_dl
{
172 pub sdl_len
: ::c_uchar
,
173 pub sdl_family
: ::c_uchar
,
174 pub sdl_index
: ::c_ushort
,
175 pub sdl_type
: ::c_uchar
,
176 pub sdl_nlen
: ::c_uchar
,
177 pub sdl_alen
: ::c_uchar
,
178 pub sdl_slen
: ::c_uchar
,
179 pub sdl_data
: [::c_char
; 12],
180 pub sdl_rcf
: ::c_ushort
,
181 pub sdl_route
: [::c_ushort
; 16],
185 pub cr_version
: ::c_uint
,
187 pub cr_ngroups
: ::c_short
,
188 pub cr_groups
: [::gid_t
; 16],
189 __cr_unused1
: *mut ::c_void
,
193 pub ss_sp
: *mut ::c_void
,
194 pub ss_size
: ::size_t
,
195 pub ss_flags
: ::c_int
,
198 pub struct cpumask_t
{
202 pub struct shmid_ds
{
203 pub shm_perm
: ::ipc_perm
,
204 pub shm_segsz
: ::size_t
,
205 pub shm_lpid
: ::pid_t
,
206 pub shm_cpid
: ::pid_t
,
207 pub shm_nattch
: ::shmatt_t
,
208 pub shm_atime
: ::time_t
,
209 pub shm_dtime
: ::time_t
,
210 pub shm_ctime
: ::time_t
,
211 shm_internal
: *mut ::c_void
,
214 pub struct kinfo_file
{
215 pub f_size
: ::size_t
,
219 pub f_file
: *mut ::c_void
,
220 pub f_type
: ::c_short
,
221 pub f_count
: ::c_int
,
222 pub f_msgcount
: ::c_int
,
223 pub f_offset
: ::off_t
,
224 pub f_data
: *mut ::c_void
,
225 pub f_flag
: ::c_uint
,
228 pub struct kinfo_cputime
{
236 pub cp_sample_pc
: u64,
237 pub cp_sample_sp
: u64,
238 pub cp_msg
: [::c_char
; 32],
241 pub struct cpuctl_msr_args_t
{
246 pub struct cpuctl_cpuid_args_t
{
251 pub struct cpuctl_cpuid_count_args_t
{
253 pub level_type
: ::c_int
,
257 pub struct cpuctl_update_args_t
{
258 pub data
: *mut ::c_void
,
265 pub ut_name
: [::c_char
; 32],
266 pub ut_id
: [::c_char
; 4],
268 pub ut_line
: [::c_char
; 32],
269 pub ut_host
: [::c_char
; 256],
271 pub ut_unused
: [u8; 16],
275 ut_exit
: exit_status
,
276 ut_ss
: ::sockaddr_storage
,
277 pub ut_tv
: ::timeval
,
278 pub ut_unused2
: [u8; 16],
281 pub struct lastlogx
{
282 pub ll_tv
: ::timeval
,
283 pub ll_line
: [::c_char
; _UTX_LINESIZE
],
284 pub ll_host
: [::c_char
; _UTX_HOSTSIZE
],
285 pub ll_ss
: ::sockaddr_storage
,
289 pub d_fileno
: ::ino_t
,
294 pub d_name
: [::c_char
; 256],
299 pub f_bsize
: ::c_long
,
300 pub f_iosize
: ::c_long
,
301 pub f_blocks
: ::c_long
,
302 pub f_bfree
: ::c_long
,
303 pub f_bavail
: ::c_long
,
304 pub f_files
: ::c_long
,
305 pub f_ffree
: ::c_long
,
306 pub f_fsid
: ::fsid_t
,
307 pub f_owner
: ::uid_t
,
309 pub f_flags
: ::c_int
,
310 pub f_syncwrites
: ::c_long
,
311 pub f_asyncwrites
: ::c_long
,
312 pub f_fstypename
: [::c_char
; 16],
313 pub f_mntonname
: [::c_char
; 80],
314 pub f_syncreads
: ::c_long
,
315 pub f_asyncreads
: ::c_long
,
316 __spares1
: ::c_short
,
317 pub f_mntfromname
: [::c_char
; 80],
318 __spares2
: ::c_short
,
319 __spare
: [::c_long
; 2],
322 pub struct sigevent
{
323 pub sigev_notify
: ::c_int
,
324 // The union is 8-byte in size, so it is aligned at a 8-byte offset.
325 #[cfg(target_pointer_width = "64")]
327 pub sigev_signo
: ::c_int
, //actually a union
329 #[cfg(target_pointer_width = "64")]
331 pub sigev_value
: ::sigval
,
332 __unused3
: *mut ::c_void
//actually a function pointer
335 pub struct mcontext_t
{
336 pub mc_onstack
: register_t
,
337 pub mc_rdi
: register_t
,
338 pub mc_rsi
: register_t
,
339 pub mc_rdx
: register_t
,
340 pub mc_rcx
: register_t
,
341 pub mc_r8
: register_t
,
342 pub mc_r9
: register_t
,
343 pub mc_rax
: register_t
,
344 pub mc_rbx
: register_t
,
345 pub mc_rbp
: register_t
,
346 pub mc_r10
: register_t
,
347 pub mc_r11
: register_t
,
348 pub mc_r12
: register_t
,
349 pub mc_r13
: register_t
,
350 pub mc_r14
: register_t
,
351 pub mc_r15
: register_t
,
352 pub mc_xflags
: register_t
,
353 pub mc_trapno
: register_t
,
354 pub mc_addr
: register_t
,
355 pub mc_flags
: register_t
,
356 pub mc_err
: register_t
,
357 pub mc_rip
: register_t
,
358 pub mc_cs
: register_t
,
359 pub mc_rflags
: register_t
,
360 pub mc_rsp
: register_t
,
361 pub mc_ss
: register_t
,
362 pub mc_len
: ::c_uint
,
363 pub mc_fpformat
: ::c_uint
,
364 pub mc_ownedfp
: ::c_uint
,
365 __reserved
: ::c_uint
,
366 __unused
: [::c_uint
; 8],
367 pub mc_fpregs
: [[::c_uint
; 8]; 32],
370 pub struct ucontext_t
{
371 pub uc_sigmask
: ::sigset_t
,
372 pub uc_mcontext
: mcontext_t
,
373 pub uc_link
: *mut ucontext_t
,
374 pub uc_stack
: stack_t
,
375 pub uc_cofunc
: ::Option
<unsafe extern "C" fn(uc
: *mut ucontext_t
, arg
: *mut ::c_void
)>,
376 pub uc_arg
: *mut ::c_void
,
382 if #[cfg(feature = "extra_traits")] {
383 impl PartialEq
for utmpx
{
384 fn eq(&self, other
: &utmpx
) -> bool
{
385 self.ut_name
== other
.ut_name
386 && self.ut_id
== other
.ut_id
387 && self.ut_line
== other
.ut_line
391 .zip(other
.ut_host
.iter())
393 && self.ut_unused
== other
.ut_unused
394 && self.ut_session
== other
.ut_session
395 && self.ut_type
== other
.ut_type
396 && self.ut_pid
== other
.ut_pid
397 && self.ut_exit
== other
.ut_exit
398 && self.ut_ss
== other
.ut_ss
399 && self.ut_tv
== other
.ut_tv
400 && self.ut_unused2
== other
.ut_unused2
404 impl ::fmt
::Debug
for utmpx
{
405 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
406 f
.debug_struct("utmpx")
407 .field("ut_name", &self.ut_name
)
408 .field("ut_id", &self.ut_id
)
409 .field("ut_line", &self.ut_line
)
410 // FIXME: .field("ut_host", &self.ut_host)
411 .field("ut_unused", &self.ut_unused
)
412 .field("ut_session", &self.ut_session
)
413 .field("ut_type", &self.ut_type
)
414 .field("ut_pid", &self.ut_pid
)
415 .field("ut_exit", &self.ut_exit
)
416 .field("ut_ss", &self.ut_ss
)
417 .field("ut_tv", &self.ut_tv
)
418 .field("ut_unused2", &self.ut_unused2
)
422 impl ::hash
::Hash
for utmpx
{
423 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
424 self.ut_name
.hash(state
);
425 self.ut_id
.hash(state
);
426 self.ut_line
.hash(state
);
427 self.ut_host
.hash(state
);
428 self.ut_unused
.hash(state
);
429 self.ut_session
.hash(state
);
430 self.ut_type
.hash(state
);
431 self.ut_pid
.hash(state
);
432 self.ut_exit
.hash(state
);
433 self.ut_ss
.hash(state
);
434 self.ut_tv
.hash(state
);
435 self.ut_unused2
.hash(state
);
438 impl PartialEq
for lastlogx
{
439 fn eq(&self, other
: &lastlogx
) -> bool
{
440 self.ll_tv
== other
.ll_tv
441 && self.ll_line
== other
.ll_line
442 && self.ll_host
== other
.ll_host
443 && self.ll_ss
== other
.ll_ss
446 impl Eq
for lastlogx {}
447 impl ::fmt
::Debug
for lastlogx
{
448 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
449 f
.debug_struct("lastlogx")
450 .field("ll_tv", &self.ll_tv
)
451 .field("ll_line", &self.ll_line
)
452 .field("ll_host", &self.ll_host
)
453 .field("ll_ss", &self.ll_ss
)
457 impl ::hash
::Hash
for lastlogx
{
458 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
459 self.ll_tv
.hash(state
);
460 self.ll_line
.hash(state
);
461 self.ll_host
.hash(state
);
462 self.ll_ss
.hash(state
);
466 impl PartialEq
for dirent
{
467 fn eq(&self, other
: &dirent
) -> bool
{
468 self.d_fileno
== other
.d_fileno
469 && self.d_namlen
== other
.d_namlen
470 && self.d_type
== other
.d_type
476 .zip(other
.d_name
.iter())
480 impl Eq
for dirent {}
481 impl ::fmt
::Debug
for dirent
{
482 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
483 f
.debug_struct("dirent")
484 .field("d_fileno", &self.d_fileno
)
485 .field("d_namlen", &self.d_namlen
)
486 .field("d_type", &self.d_type
)
489 // FIXME: .field("d_name", &self.d_name)
493 impl ::hash
::Hash
for dirent
{
494 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
495 self.d_fileno
.hash(state
);
496 self.d_namlen
.hash(state
);
497 self.d_type
.hash(state
);
500 self.d_name
.hash(state
);
504 impl PartialEq
for statfs
{
505 fn eq(&self, other
: &statfs
) -> bool
{
506 self.f_bsize
== other
.f_bsize
507 && self.f_iosize
== other
.f_iosize
508 && self.f_blocks
== other
.f_blocks
509 && self.f_bfree
== other
.f_bfree
510 && self.f_bavail
== other
.f_bavail
511 && self.f_files
== other
.f_files
512 && self.f_ffree
== other
.f_ffree
513 && self.f_fsid
== other
.f_fsid
514 && self.f_owner
== other
.f_owner
515 && self.f_type
== other
.f_type
516 && self.f_flags
== other
.f_flags
517 && self.f_syncwrites
== other
.f_syncwrites
518 && self.f_asyncwrites
== other
.f_asyncwrites
519 && self.f_fstypename
== other
.f_fstypename
523 .zip(other
.f_mntonname
.iter())
525 && self.f_syncreads
== other
.f_syncreads
526 && self.f_asyncreads
== other
.f_asyncreads
530 .zip(other
.f_mntfromname
.iter())
534 impl Eq
for statfs {}
535 impl ::fmt
::Debug
for statfs
{
536 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
537 f
.debug_struct("statfs")
538 .field("f_bsize", &self.f_bsize
)
539 .field("f_iosize", &self.f_iosize
)
540 .field("f_blocks", &self.f_blocks
)
541 .field("f_bfree", &self.f_bfree
)
542 .field("f_bavail", &self.f_bavail
)
543 .field("f_files", &self.f_files
)
544 .field("f_ffree", &self.f_ffree
)
545 .field("f_fsid", &self.f_fsid
)
546 .field("f_owner", &self.f_owner
)
547 .field("f_type", &self.f_type
)
548 .field("f_flags", &self.f_flags
)
549 .field("f_syncwrites", &self.f_syncwrites
)
550 .field("f_asyncwrites", &self.f_asyncwrites
)
551 // FIXME: .field("f_mntonname", &self.f_mntonname)
552 .field("f_syncreads", &self.f_syncreads
)
553 .field("f_asyncreads", &self.f_asyncreads
)
554 // FIXME: .field("f_mntfromname", &self.f_mntfromname)
558 impl ::hash
::Hash
for statfs
{
559 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
560 self.f_bsize
.hash(state
);
561 self.f_iosize
.hash(state
);
562 self.f_blocks
.hash(state
);
563 self.f_bfree
.hash(state
);
564 self.f_bavail
.hash(state
);
565 self.f_files
.hash(state
);
566 self.f_ffree
.hash(state
);
567 self.f_fsid
.hash(state
);
568 self.f_owner
.hash(state
);
569 self.f_type
.hash(state
);
570 self.f_flags
.hash(state
);
571 self.f_syncwrites
.hash(state
);
572 self.f_asyncwrites
.hash(state
);
573 self.f_fstypename
.hash(state
);
574 self.f_mntonname
.hash(state
);
575 self.f_syncreads
.hash(state
);
576 self.f_asyncreads
.hash(state
);
577 self.f_mntfromname
.hash(state
);
581 impl PartialEq
for sigevent
{
582 fn eq(&self, other
: &sigevent
) -> bool
{
583 self.sigev_notify
== other
.sigev_notify
584 && self.sigev_signo
== other
.sigev_signo
585 && self.sigev_value
== other
.sigev_value
588 impl Eq
for sigevent {}
589 impl ::fmt
::Debug
for sigevent
{
590 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
591 f
.debug_struct("sigevent")
592 .field("sigev_notify", &self.sigev_notify
)
593 .field("sigev_signo", &self.sigev_signo
)
594 .field("sigev_value", &self.sigev_value
)
598 impl ::hash
::Hash
for sigevent
{
599 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
600 self.sigev_notify
.hash(state
);
601 self.sigev_signo
.hash(state
);
602 self.sigev_value
.hash(state
);
605 impl PartialEq
for mcontext_t
{
606 fn eq(&self, other
: &mcontext_t
) -> bool
{
607 self.mc_onstack
== other
.mc_onstack
&&
608 self.mc_rdi
== other
.mc_rdi
&&
609 self.mc_rsi
== other
.mc_rsi
&&
610 self.mc_rdx
== other
.mc_rdx
&&
611 self.mc_rcx
== other
.mc_rcx
&&
612 self.mc_r8
== other
.mc_r8
&&
613 self.mc_r9
== other
.mc_r9
&&
614 self.mc_rax
== other
.mc_rax
&&
615 self.mc_rbx
== other
.mc_rbx
&&
616 self.mc_rbp
== other
.mc_rbp
&&
617 self.mc_r10
== other
.mc_r10
&&
618 self.mc_r11
== other
.mc_r11
&&
619 self.mc_r12
== other
.mc_r12
&&
620 self.mc_r13
== other
.mc_r13
&&
621 self.mc_r14
== other
.mc_r14
&&
622 self.mc_r15
== other
.mc_r15
&&
623 self.mc_xflags
== other
.mc_xflags
&&
624 self.mc_trapno
== other
.mc_trapno
&&
625 self.mc_addr
== other
.mc_addr
&&
626 self.mc_flags
== other
.mc_flags
&&
627 self.mc_err
== other
.mc_err
&&
628 self.mc_rip
== other
.mc_rip
&&
629 self.mc_cs
== other
.mc_cs
&&
630 self.mc_rflags
== other
.mc_rflags
&&
631 self.mc_rsp
== other
.mc_rsp
&&
632 self.mc_ss
== other
.mc_ss
&&
633 self.mc_len
== other
.mc_len
&&
634 self.mc_fpformat
== other
.mc_fpformat
&&
635 self.mc_ownedfp
== other
.mc_ownedfp
&&
636 self.mc_fpregs
.iter().zip(other
.mc_fpregs
.iter()).
640 impl Eq
for mcontext_t {}
641 impl ::fmt
::Debug
for mcontext_t
{
642 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
643 f
.debug_struct("mcontext_t")
644 .field("mc_onstack", &self.mc_onstack
)
645 .field("mc_rdi", &self.mc_rdi
)
646 .field("mc_rsi", &self.mc_rsi
)
647 .field("mc_rdx", &self.mc_rdx
)
648 .field("mc_rcx", &self.mc_rcx
)
649 .field("mc_r8", &self.mc_r8
)
650 .field("mc_r9", &self.mc_r9
)
651 .field("mc_rax", &self.mc_rax
)
652 .field("mc_rbx", &self.mc_rbx
)
653 .field("mc_rbp", &self.mc_rbp
)
654 .field("mc_r10", &self.mc_r10
)
655 .field("mc_r11", &self.mc_r11
)
656 .field("mc_r12", &self.mc_r12
)
657 .field("mc_r13", &self.mc_r13
)
658 .field("mc_r14", &self.mc_r14
)
659 .field("mc_r15", &self.mc_r15
)
660 .field("mc_xflags", &self.mc_xflags
)
661 .field("mc_trapno", &self.mc_trapno
)
662 .field("mc_addr", &self.mc_addr
)
663 .field("mc_flags", &self.mc_flags
)
664 .field("mc_err", &self.mc_err
)
665 .field("mc_rip", &self.mc_rip
)
666 .field("mc_cs", &self.mc_cs
)
667 .field("mc_rflags", &self.mc_rflags
)
668 .field("mc_rsp", &self.mc_rsp
)
669 .field("mc_ss", &self.mc_ss
)
670 .field("mc_len", &self.mc_len
)
671 .field("mc_fpformat", &self.mc_fpformat
)
672 .field("mc_ownedfp", &self.mc_ownedfp
)
673 .field("mc_fpregs", &self.mc_fpregs
)
677 impl ::hash
::Hash
for mcontext_t
{
678 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
679 self.mc_onstack
.hash(state
);
680 self.mc_rdi
.hash(state
);
681 self.mc_rsi
.hash(state
);
682 self.mc_rdx
.hash(state
);
683 self.mc_rcx
.hash(state
);
684 self.mc_r8
.hash(state
);
685 self.mc_r9
.hash(state
);
686 self.mc_rax
.hash(state
);
687 self.mc_rbx
.hash(state
);
688 self.mc_rbp
.hash(state
);
689 self.mc_r10
.hash(state
);
690 self.mc_r11
.hash(state
);
691 self.mc_r10
.hash(state
);
692 self.mc_r11
.hash(state
);
693 self.mc_r12
.hash(state
);
694 self.mc_r13
.hash(state
);
695 self.mc_r14
.hash(state
);
696 self.mc_r15
.hash(state
);
697 self.mc_xflags
.hash(state
);
698 self.mc_trapno
.hash(state
);
699 self.mc_addr
.hash(state
);
700 self.mc_flags
.hash(state
);
701 self.mc_err
.hash(state
);
702 self.mc_rip
.hash(state
);
703 self.mc_cs
.hash(state
);
704 self.mc_rflags
.hash(state
);
705 self.mc_rsp
.hash(state
);
706 self.mc_ss
.hash(state
);
707 self.mc_len
.hash(state
);
708 self.mc_fpformat
.hash(state
);
709 self.mc_ownedfp
.hash(state
);
710 self.mc_fpregs
.hash(state
);
713 impl PartialEq
for ucontext_t
{
714 fn eq(&self, other
: &ucontext_t
) -> bool
{
715 self.uc_sigmask
== other
.uc_sigmask
716 && self.uc_mcontext
== other
.uc_mcontext
717 && self.uc_link
== other
.uc_link
718 && self.uc_stack
== other
.uc_stack
719 && self.uc_cofunc
== other
.uc_cofunc
720 && self.uc_arg
== other
.uc_arg
723 impl Eq
for ucontext_t {}
724 impl ::fmt
::Debug
for ucontext_t
{
725 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
726 f
.debug_struct("ucontext_t")
727 .field("uc_sigmask", &self.uc_sigmask
)
728 .field("uc_mcontext", &self.uc_mcontext
)
729 .field("uc_link", &self.uc_link
)
730 .field("uc_stack", &self.uc_stack
)
731 .field("uc_cofunc", &self.uc_cofunc
)
732 .field("uc_arg", &self.uc_arg
)
736 impl ::hash
::Hash
for ucontext_t
{
737 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
738 self.uc_sigmask
.hash(state
);
739 self.uc_mcontext
.hash(state
);
740 self.uc_link
.hash(state
);
741 self.uc_stack
.hash(state
);
742 self.uc_cofunc
.hash(state
);
743 self.uc_arg
.hash(state
);
749 pub const RAND_MAX
: ::c_int
= 0x7fff_ffff;
750 pub const PTHREAD_STACK_MIN
: ::size_t
= 16384;
751 pub const SIGSTKSZ
: ::size_t
= 40960;
752 pub const SIGCKPT
: ::c_int
= 33;
753 pub const SIGCKPTEXIT
: ::c_int
= 34;
754 pub const CKPT_FREEZE
: ::c_int
= 0x1;
755 pub const CKPT_THAW
: ::c_int
= 0x2;
756 pub const MADV_INVAL
: ::c_int
= 10;
757 pub const MADV_SETMAP
: ::c_int
= 11;
758 pub const O_CLOEXEC
: ::c_int
= 0x00020000;
759 pub const O_DIRECTORY
: ::c_int
= 0x08000000;
760 pub const F_GETLK
: ::c_int
= 7;
761 pub const F_SETLK
: ::c_int
= 8;
762 pub const F_SETLKW
: ::c_int
= 9;
763 pub const F_GETPATH
: ::c_int
= 19;
764 pub const ENOMEDIUM
: ::c_int
= 93;
765 pub const ENOTRECOVERABLE
: ::c_int
= 94;
766 pub const EOWNERDEAD
: ::c_int
= 95;
767 pub const EASYNC
: ::c_int
= 99;
768 pub const ELAST
: ::c_int
= 99;
769 pub const RLIMIT_POSIXLOCKS
: ::c_int
= 11;
770 #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
771 pub const RLIM_NLIMITS
: ::rlim_t
= 12;
773 pub const Q_GETQUOTA
: ::c_int
= 0x300;
774 pub const Q_SETQUOTA
: ::c_int
= 0x400;
776 pub const CTL_UNSPEC
: ::c_int
= 0;
777 pub const CTL_KERN
: ::c_int
= 1;
778 pub const CTL_VM
: ::c_int
= 2;
779 pub const CTL_VFS
: ::c_int
= 3;
780 pub const CTL_NET
: ::c_int
= 4;
781 pub const CTL_DEBUG
: ::c_int
= 5;
782 pub const CTL_HW
: ::c_int
= 6;
783 pub const CTL_MACHDEP
: ::c_int
= 7;
784 pub const CTL_USER
: ::c_int
= 8;
785 pub const CTL_P1003_1B
: ::c_int
= 9;
786 pub const CTL_LWKT
: ::c_int
= 10;
787 pub const CTL_MAXID
: ::c_int
= 11;
788 pub const KERN_OSTYPE
: ::c_int
= 1;
789 pub const KERN_OSRELEASE
: ::c_int
= 2;
790 pub const KERN_OSREV
: ::c_int
= 3;
791 pub const KERN_VERSION
: ::c_int
= 4;
792 pub const KERN_MAXVNODES
: ::c_int
= 5;
793 pub const KERN_MAXPROC
: ::c_int
= 6;
794 pub const KERN_MAXFILES
: ::c_int
= 7;
795 pub const KERN_ARGMAX
: ::c_int
= 8;
796 pub const KERN_SECURELVL
: ::c_int
= 9;
797 pub const KERN_HOSTNAME
: ::c_int
= 10;
798 pub const KERN_HOSTID
: ::c_int
= 11;
799 pub const KERN_CLOCKRATE
: ::c_int
= 12;
800 pub const KERN_VNODE
: ::c_int
= 13;
801 pub const KERN_PROC
: ::c_int
= 14;
802 pub const KERN_FILE
: ::c_int
= 15;
803 pub const KERN_PROF
: ::c_int
= 16;
804 pub const KERN_POSIX1
: ::c_int
= 17;
805 pub const KERN_NGROUPS
: ::c_int
= 18;
806 pub const KERN_JOB_CONTROL
: ::c_int
= 19;
807 pub const KERN_SAVED_IDS
: ::c_int
= 20;
808 pub const KERN_BOOTTIME
: ::c_int
= 21;
809 pub const KERN_NISDOMAINNAME
: ::c_int
= 22;
810 pub const KERN_UPDATEINTERVAL
: ::c_int
= 23;
811 pub const KERN_OSRELDATE
: ::c_int
= 24;
812 pub const KERN_NTP_PLL
: ::c_int
= 25;
813 pub const KERN_BOOTFILE
: ::c_int
= 26;
814 pub const KERN_MAXFILESPERPROC
: ::c_int
= 27;
815 pub const KERN_MAXPROCPERUID
: ::c_int
= 28;
816 pub const KERN_DUMPDEV
: ::c_int
= 29;
817 pub const KERN_IPC
: ::c_int
= 30;
818 pub const KERN_DUMMY
: ::c_int
= 31;
819 pub const KERN_PS_STRINGS
: ::c_int
= 32;
820 pub const KERN_USRSTACK
: ::c_int
= 33;
821 pub const KERN_LOGSIGEXIT
: ::c_int
= 34;
822 pub const KERN_IOV_MAX
: ::c_int
= 35;
823 pub const KERN_MAXPOSIXLOCKSPERUID
: ::c_int
= 36;
824 pub const KERN_MAXID
: ::c_int
= 37;
825 pub const KERN_PROC_ALL
: ::c_int
= 0;
826 pub const KERN_PROC_PID
: ::c_int
= 1;
827 pub const KERN_PROC_PGRP
: ::c_int
= 2;
828 pub const KERN_PROC_SESSION
: ::c_int
= 3;
829 pub const KERN_PROC_TTY
: ::c_int
= 4;
830 pub const KERN_PROC_UID
: ::c_int
= 5;
831 pub const KERN_PROC_RUID
: ::c_int
= 6;
832 pub const KERN_PROC_ARGS
: ::c_int
= 7;
833 pub const KERN_PROC_CWD
: ::c_int
= 8;
834 pub const KERN_PROC_PATHNAME
: ::c_int
= 9;
835 pub const KERN_PROC_FLAGMASK
: ::c_int
= 0x10;
836 pub const KERN_PROC_FLAG_LWP
: ::c_int
= 0x10;
837 pub const KIPC_MAXSOCKBUF
: ::c_int
= 1;
838 pub const KIPC_SOCKBUF_WASTE
: ::c_int
= 2;
839 pub const KIPC_SOMAXCONN
: ::c_int
= 3;
840 pub const KIPC_MAX_LINKHDR
: ::c_int
= 4;
841 pub const KIPC_MAX_PROTOHDR
: ::c_int
= 5;
842 pub const KIPC_MAX_HDR
: ::c_int
= 6;
843 pub const KIPC_MAX_DATALEN
: ::c_int
= 7;
844 pub const KIPC_MBSTAT
: ::c_int
= 8;
845 pub const KIPC_NMBCLUSTERS
: ::c_int
= 9;
846 pub const HW_MACHINE
: ::c_int
= 1;
847 pub const HW_MODEL
: ::c_int
= 2;
848 pub const HW_NCPU
: ::c_int
= 3;
849 pub const HW_BYTEORDER
: ::c_int
= 4;
850 pub const HW_PHYSMEM
: ::c_int
= 5;
851 pub const HW_USERMEM
: ::c_int
= 6;
852 pub const HW_PAGESIZE
: ::c_int
= 7;
853 pub const HW_DISKNAMES
: ::c_int
= 8;
854 pub const HW_DISKSTATS
: ::c_int
= 9;
855 pub const HW_FLOATINGPT
: ::c_int
= 10;
856 pub const HW_MACHINE_ARCH
: ::c_int
= 11;
857 pub const HW_MACHINE_PLATFORM
: ::c_int
= 12;
858 pub const HW_SENSORS
: ::c_int
= 13;
859 pub const HW_MAXID
: ::c_int
= 14;
860 pub const USER_CS_PATH
: ::c_int
= 1;
861 pub const USER_BC_BASE_MAX
: ::c_int
= 2;
862 pub const USER_BC_DIM_MAX
: ::c_int
= 3;
863 pub const USER_BC_SCALE_MAX
: ::c_int
= 4;
864 pub const USER_BC_STRING_MAX
: ::c_int
= 5;
865 pub const USER_COLL_WEIGHTS_MAX
: ::c_int
= 6;
866 pub const USER_EXPR_NEST_MAX
: ::c_int
= 7;
867 pub const USER_LINE_MAX
: ::c_int
= 8;
868 pub const USER_RE_DUP_MAX
: ::c_int
= 9;
869 pub const USER_POSIX2_VERSION
: ::c_int
= 10;
870 pub const USER_POSIX2_C_BIND
: ::c_int
= 11;
871 pub const USER_POSIX2_C_DEV
: ::c_int
= 12;
872 pub const USER_POSIX2_CHAR_TERM
: ::c_int
= 13;
873 pub const USER_POSIX2_FORT_DEV
: ::c_int
= 14;
874 pub const USER_POSIX2_FORT_RUN
: ::c_int
= 15;
875 pub const USER_POSIX2_LOCALEDEF
: ::c_int
= 16;
876 pub const USER_POSIX2_SW_DEV
: ::c_int
= 17;
877 pub const USER_POSIX2_UPE
: ::c_int
= 18;
878 pub const USER_STREAM_MAX
: ::c_int
= 19;
879 pub const USER_TZNAME_MAX
: ::c_int
= 20;
880 pub const USER_MAXID
: ::c_int
= 21;
881 pub const CTL_P1003_1B_ASYNCHRONOUS_IO
: ::c_int
= 1;
882 pub const CTL_P1003_1B_MAPPED_FILES
: ::c_int
= 2;
883 pub const CTL_P1003_1B_MEMLOCK
: ::c_int
= 3;
884 pub const CTL_P1003_1B_MEMLOCK_RANGE
: ::c_int
= 4;
885 pub const CTL_P1003_1B_MEMORY_PROTECTION
: ::c_int
= 5;
886 pub const CTL_P1003_1B_MESSAGE_PASSING
: ::c_int
= 6;
887 pub const CTL_P1003_1B_PRIORITIZED_IO
: ::c_int
= 7;
888 pub const CTL_P1003_1B_PRIORITY_SCHEDULING
: ::c_int
= 8;
889 pub const CTL_P1003_1B_REALTIME_SIGNALS
: ::c_int
= 9;
890 pub const CTL_P1003_1B_SEMAPHORES
: ::c_int
= 10;
891 pub const CTL_P1003_1B_FSYNC
: ::c_int
= 11;
892 pub const CTL_P1003_1B_SHARED_MEMORY_OBJECTS
: ::c_int
= 12;
893 pub const CTL_P1003_1B_SYNCHRONIZED_IO
: ::c_int
= 13;
894 pub const CTL_P1003_1B_TIMERS
: ::c_int
= 14;
895 pub const CTL_P1003_1B_AIO_LISTIO_MAX
: ::c_int
= 15;
896 pub const CTL_P1003_1B_AIO_MAX
: ::c_int
= 16;
897 pub const CTL_P1003_1B_AIO_PRIO_DELTA_MAX
: ::c_int
= 17;
898 pub const CTL_P1003_1B_DELAYTIMER_MAX
: ::c_int
= 18;
899 pub const CTL_P1003_1B_UNUSED1
: ::c_int
= 19;
900 pub const CTL_P1003_1B_PAGESIZE
: ::c_int
= 20;
901 pub const CTL_P1003_1B_RTSIG_MAX
: ::c_int
= 21;
902 pub const CTL_P1003_1B_SEM_NSEMS_MAX
: ::c_int
= 22;
903 pub const CTL_P1003_1B_SEM_VALUE_MAX
: ::c_int
= 23;
904 pub const CTL_P1003_1B_SIGQUEUE_MAX
: ::c_int
= 24;
905 pub const CTL_P1003_1B_TIMER_MAX
: ::c_int
= 25;
906 pub const CTL_P1003_1B_MAXID
: ::c_int
= 26;
908 pub const CPUCTL_RSMSR
: ::c_int
= 0xc0106301;
909 pub const CPUCTL_WRMSR
: ::c_int
= 0xc0106302;
910 pub const CPUCTL_CPUID
: ::c_int
= 0xc0106303;
911 pub const CPUCTL_UPDATE
: ::c_int
= 0xc0106304;
912 pub const CPUCTL_MSRSBIT
: ::c_int
= 0xc0106305;
913 pub const CPUCTL_MSRCBIT
: ::c_int
= 0xc0106306;
914 pub const CPUCTL_CPUID_COUNT
: ::c_int
= 0xc0106307;
916 pub const EVFILT_READ
: i16 = -1;
917 pub const EVFILT_WRITE
: i16 = -2;
918 pub const EVFILT_AIO
: i16 = -3;
919 pub const EVFILT_VNODE
: i16 = -4;
920 pub const EVFILT_PROC
: i16 = -5;
921 pub const EVFILT_SIGNAL
: i16 = -6;
922 pub const EVFILT_TIMER
: i16 = -7;
923 pub const EVFILT_EXCEPT
: i16 = -8;
924 pub const EVFILT_USER
: i16 = -9;
925 pub const EVFILT_FS
: i16 = -10;
927 pub const EV_ADD
: u16 = 0x1;
928 pub const EV_DELETE
: u16 = 0x2;
929 pub const EV_ENABLE
: u16 = 0x4;
930 pub const EV_DISABLE
: u16 = 0x8;
931 pub const EV_ONESHOT
: u16 = 0x10;
932 pub const EV_CLEAR
: u16 = 0x20;
933 pub const EV_RECEIPT
: u16 = 0x40;
934 pub const EV_DISPATCH
: u16 = 0x80;
935 pub const EV_NODATA
: u16 = 0x1000;
936 pub const EV_FLAG1
: u16 = 0x2000;
937 pub const EV_ERROR
: u16 = 0x4000;
938 pub const EV_EOF
: u16 = 0x8000;
939 pub const EV_SYSFLAGS
: u16 = 0xf000;
941 pub const FIODNAME
: ::c_ulong
= 0x80106678;
943 pub const NOTE_TRIGGER
: u32 = 0x01000000;
944 pub const NOTE_FFNOP
: u32 = 0x00000000;
945 pub const NOTE_FFAND
: u32 = 0x40000000;
946 pub const NOTE_FFOR
: u32 = 0x80000000;
947 pub const NOTE_FFCOPY
: u32 = 0xc0000000;
948 pub const NOTE_FFCTRLMASK
: u32 = 0xc0000000;
949 pub const NOTE_FFLAGSMASK
: u32 = 0x00ffffff;
950 pub const NOTE_LOWAT
: u32 = 0x00000001;
951 pub const NOTE_OOB
: u32 = 0x00000002;
952 pub const NOTE_DELETE
: u32 = 0x00000001;
953 pub const NOTE_WRITE
: u32 = 0x00000002;
954 pub const NOTE_EXTEND
: u32 = 0x00000004;
955 pub const NOTE_ATTRIB
: u32 = 0x00000008;
956 pub const NOTE_LINK
: u32 = 0x00000010;
957 pub const NOTE_RENAME
: u32 = 0x00000020;
958 pub const NOTE_REVOKE
: u32 = 0x00000040;
959 pub const NOTE_EXIT
: u32 = 0x80000000;
960 pub const NOTE_FORK
: u32 = 0x40000000;
961 pub const NOTE_EXEC
: u32 = 0x20000000;
962 pub const NOTE_PDATAMASK
: u32 = 0x000fffff;
963 pub const NOTE_PCTRLMASK
: u32 = 0xf0000000;
964 pub const NOTE_TRACK
: u32 = 0x00000001;
965 pub const NOTE_TRACKERR
: u32 = 0x00000002;
966 pub const NOTE_CHILD
: u32 = 0x00000004;
968 pub const SO_SNDSPACE
: ::c_int
= 0x100a;
969 pub const SO_CPUHINT
: ::c_int
= 0x1030;
970 pub const SO_PASSCRED
: ::c_int
= 0x4000;
972 pub const PT_FIRSTMACH
: ::c_int
= 32;
974 pub const PROC_REAP_ACQUIRE
: ::c_int
= 0x0001;
975 pub const PROC_REAP_RELEASE
: ::c_int
= 0x0002;
976 pub const PROC_REAP_STATUS
: ::c_int
= 0x0003;
977 pub const PROC_PDEATHSIG_CTL
: ::c_int
= 0x0004;
978 pub const PROC_PDEATHSIG_STATUS
: ::c_int
= 0x0005;
980 // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/net/if.h#L101
981 pub const IFF_UP
: ::c_int
= 0x1; // interface is up
982 pub const IFF_BROADCAST
: ::c_int
= 0x2; // broadcast address valid
983 pub const IFF_DEBUG
: ::c_int
= 0x4; // turn on debugging
984 pub const IFF_LOOPBACK
: ::c_int
= 0x8; // is a loopback net
985 pub const IFF_POINTOPOINT
: ::c_int
= 0x10; // interface is point-to-point link
986 pub const IFF_SMART
: ::c_int
= 0x20; // interface manages own routes
987 pub const IFF_RUNNING
: ::c_int
= 0x40; // resources allocated
988 pub const IFF_NOARP
: ::c_int
= 0x80; // no address resolution protocol
989 pub const IFF_PROMISC
: ::c_int
= 0x100; // receive all packets
990 pub const IFF_ALLMULTI
: ::c_int
= 0x200; // receive all multicast packets
991 pub const IFF_OACTIVE_COMPAT
: ::c_int
= 0x400; // was transmission in progress
992 pub const IFF_SIMPLEX
: ::c_int
= 0x800; // can't hear own transmissions
993 pub const IFF_LINK0
: ::c_int
= 0x1000; // per link layer defined bit
994 pub const IFF_LINK1
: ::c_int
= 0x2000; // per link layer defined bit
995 pub const IFF_LINK2
: ::c_int
= 0x4000; // per link layer defined bit
996 pub const IFF_ALTPHYS
: ::c_int
= IFF_LINK2
; // use alternate physical connection
997 pub const IFF_MULTICAST
: ::c_int
= 0x8000; // supports multicast
998 // was interface is in polling mode
999 pub const IFF_POLLING_COMPAT
: ::c_int
= 0x10000;
1000 pub const IFF_PPROMISC
: ::c_int
= 0x20000; // user-requested promisc mode
1001 pub const IFF_MONITOR
: ::c_int
= 0x40000; // user-requested monitor mode
1002 pub const IFF_STATICARP
: ::c_int
= 0x80000; // static ARP
1003 pub const IFF_NPOLLING
: ::c_int
= 0x100000; // interface is in polling mode
1004 pub const IFF_IDIRECT
: ::c_int
= 0x200000; // direct input
1008 // Protocols (RFC 1700)
1009 // NOTE: These are in addition to the constants defined in src/unix/mod.rs
1011 // IPPROTO_IP defined in src/unix/mod.rs
1012 /// IP6 hop-by-hop options
1013 pub const IPPROTO_HOPOPTS
: ::c_int
= 0;
1014 // IPPROTO_ICMP defined in src/unix/mod.rs
1015 /// group mgmt protocol
1016 pub const IPPROTO_IGMP
: ::c_int
= 2;
1017 /// gateway^2 (deprecated)
1018 pub const IPPROTO_GGP
: ::c_int
= 3;
1019 /// for compatibility
1020 pub const IPPROTO_IPIP
: ::c_int
= 4;
1021 // IPPROTO_TCP defined in src/unix/mod.rs
1022 /// Stream protocol II.
1023 pub const IPPROTO_ST
: ::c_int
= 7;
1024 /// exterior gateway protocol
1025 pub const IPPROTO_EGP
: ::c_int
= 8;
1026 /// private interior gateway
1027 pub const IPPROTO_PIGP
: ::c_int
= 9;
1028 /// BBN RCC Monitoring
1029 pub const IPPROTO_RCCMON
: ::c_int
= 10;
1030 /// network voice protocol
1031 pub const IPPROTO_NVPII
: ::c_int
= 11;
1033 pub const IPPROTO_PUP
: ::c_int
= 12;
1035 pub const IPPROTO_ARGUS
: ::c_int
= 13;
1037 pub const IPPROTO_EMCON
: ::c_int
= 14;
1038 /// Cross Net Debugger
1039 pub const IPPROTO_XNET
: ::c_int
= 15;
1041 pub const IPPROTO_CHAOS
: ::c_int
= 16;
1042 // IPPROTO_UDP defined in src/unix/mod.rs
1044 pub const IPPROTO_MUX
: ::c_int
= 18;
1045 /// DCN Measurement Subsystems
1046 pub const IPPROTO_MEAS
: ::c_int
= 19;
1048 pub const IPPROTO_HMP
: ::c_int
= 20;
1049 /// Packet Radio Measurement
1050 pub const IPPROTO_PRM
: ::c_int
= 21;
1052 pub const IPPROTO_IDP
: ::c_int
= 22;
1054 pub const IPPROTO_TRUNK1
: ::c_int
= 23;
1056 pub const IPPROTO_TRUNK2
: ::c_int
= 24;
1058 pub const IPPROTO_LEAF1
: ::c_int
= 25;
1060 pub const IPPROTO_LEAF2
: ::c_int
= 26;
1062 pub const IPPROTO_RDP
: ::c_int
= 27;
1063 /// Reliable Transaction
1064 pub const IPPROTO_IRTP
: ::c_int
= 28;
1065 /// tp-4 w/ class negotiation
1066 pub const IPPROTO_TP
: ::c_int
= 29;
1067 /// Bulk Data Transfer
1068 pub const IPPROTO_BLT
: ::c_int
= 30;
1069 /// Network Services
1070 pub const IPPROTO_NSP
: ::c_int
= 31;
1071 /// Merit Internodal
1072 pub const IPPROTO_INP
: ::c_int
= 32;
1073 /// Sequential Exchange
1074 pub const IPPROTO_SEP
: ::c_int
= 33;
1075 /// Third Party Connect
1076 pub const IPPROTO_3PC
: ::c_int
= 34;
1077 /// InterDomain Policy Routing
1078 pub const IPPROTO_IDPR
: ::c_int
= 35;
1080 pub const IPPROTO_XTP
: ::c_int
= 36;
1081 /// Datagram Delivery
1082 pub const IPPROTO_DDP
: ::c_int
= 37;
1083 /// Control Message Transport
1084 pub const IPPROTO_CMTP
: ::c_int
= 38;
1086 pub const IPPROTO_TPXX
: ::c_int
= 39;
1087 /// IL transport protocol
1088 pub const IPPROTO_IL
: ::c_int
= 40;
1089 // IPPROTO_IPV6 defined in src/unix/mod.rs
1090 /// Source Demand Routing
1091 pub const IPPROTO_SDRP
: ::c_int
= 42;
1092 /// IP6 routing header
1093 pub const IPPROTO_ROUTING
: ::c_int
= 43;
1094 /// IP6 fragmentation header
1095 pub const IPPROTO_FRAGMENT
: ::c_int
= 44;
1096 /// InterDomain Routing
1097 pub const IPPROTO_IDRP
: ::c_int
= 45;
1098 /// resource reservation
1099 pub const IPPROTO_RSVP
: ::c_int
= 46;
1100 /// General Routing Encap.
1101 pub const IPPROTO_GRE
: ::c_int
= 47;
1102 /// Mobile Host Routing
1103 pub const IPPROTO_MHRP
: ::c_int
= 48;
1105 pub const IPPROTO_BHA
: ::c_int
= 49;
1106 /// IP6 Encap Sec. Payload
1107 pub const IPPROTO_ESP
: ::c_int
= 50;
1109 pub const IPPROTO_AH
: ::c_int
= 51;
1110 /// Integ. Net Layer Security
1111 pub const IPPROTO_INLSP
: ::c_int
= 52;
1112 /// IP with encryption
1113 pub const IPPROTO_SWIPE
: ::c_int
= 53;
1114 /// Next Hop Resolution
1115 pub const IPPROTO_NHRP
: ::c_int
= 54;
1117 pub const IPPROTO_MOBILE
: ::c_int
= 55;
1118 /// Transport Layer Security
1119 pub const IPPROTO_TLSP
: ::c_int
= 56;
1121 pub const IPPROTO_SKIP
: ::c_int
= 57;
1122 // IPPROTO_ICMPV6 defined in src/unix/mod.rs
1123 /// IP6 no next header
1124 pub const IPPROTO_NONE
: ::c_int
= 59;
1125 /// IP6 destination option
1126 pub const IPPROTO_DSTOPTS
: ::c_int
= 60;
1127 /// any host internal protocol
1128 pub const IPPROTO_AHIP
: ::c_int
= 61;
1130 pub const IPPROTO_CFTP
: ::c_int
= 62;
1131 /// "hello" routing protocol
1132 pub const IPPROTO_HELLO
: ::c_int
= 63;
1133 /// SATNET/Backroom EXPAK
1134 pub const IPPROTO_SATEXPAK
: ::c_int
= 64;
1136 pub const IPPROTO_KRYPTOLAN
: ::c_int
= 65;
1137 /// Remote Virtual Disk
1138 pub const IPPROTO_RVD
: ::c_int
= 66;
1139 /// Pluribus Packet Core
1140 pub const IPPROTO_IPPC
: ::c_int
= 67;
1141 /// Any distributed FS
1142 pub const IPPROTO_ADFS
: ::c_int
= 68;
1143 /// Satnet Monitoring
1144 pub const IPPROTO_SATMON
: ::c_int
= 69;
1146 pub const IPPROTO_VISA
: ::c_int
= 70;
1147 /// Packet Core Utility
1148 pub const IPPROTO_IPCV
: ::c_int
= 71;
1149 /// Comp. Prot. Net. Executive
1150 pub const IPPROTO_CPNX
: ::c_int
= 72;
1151 /// Comp. Prot. HeartBeat
1152 pub const IPPROTO_CPHB
: ::c_int
= 73;
1153 /// Wang Span Network
1154 pub const IPPROTO_WSN
: ::c_int
= 74;
1155 /// Packet Video Protocol
1156 pub const IPPROTO_PVP
: ::c_int
= 75;
1157 /// BackRoom SATNET Monitoring
1158 pub const IPPROTO_BRSATMON
: ::c_int
= 76;
1159 /// Sun net disk proto (temp.)
1160 pub const IPPROTO_ND
: ::c_int
= 77;
1161 /// WIDEBAND Monitoring
1162 pub const IPPROTO_WBMON
: ::c_int
= 78;
1164 pub const IPPROTO_WBEXPAK
: ::c_int
= 79;
1166 pub const IPPROTO_EON
: ::c_int
= 80;
1168 pub const IPPROTO_VMTP
: ::c_int
= 81;
1170 pub const IPPROTO_SVMTP
: ::c_int
= 82;
1172 pub const IPPROTO_VINES
: ::c_int
= 83;
1174 pub const IPPROTO_TTP
: ::c_int
= 84;
1176 pub const IPPROTO_IGP
: ::c_int
= 85;
1177 /// dissimilar gateway prot.
1178 pub const IPPROTO_DGP
: ::c_int
= 86;
1180 pub const IPPROTO_TCF
: ::c_int
= 87;
1182 pub const IPPROTO_IGRP
: ::c_int
= 88;
1184 pub const IPPROTO_OSPFIGP
: ::c_int
= 89;
1185 /// Strite RPC protocol
1186 pub const IPPROTO_SRPC
: ::c_int
= 90;
1187 /// Locus Address Resoloution
1188 pub const IPPROTO_LARP
: ::c_int
= 91;
1189 /// Multicast Transport
1190 pub const IPPROTO_MTP
: ::c_int
= 92;
1192 pub const IPPROTO_AX25
: ::c_int
= 93;
1193 /// IP encapsulated in IP
1194 pub const IPPROTO_IPEIP
: ::c_int
= 94;
1195 /// Mobile Int.ing control
1196 pub const IPPROTO_MICP
: ::c_int
= 95;
1197 /// Semaphore Comm. security
1198 pub const IPPROTO_SCCSP
: ::c_int
= 96;
1199 /// Ethernet IP encapsulation
1200 pub const IPPROTO_ETHERIP
: ::c_int
= 97;
1201 /// encapsulation header
1202 pub const IPPROTO_ENCAP
: ::c_int
= 98;
1203 /// any private encr. scheme
1204 pub const IPPROTO_APES
: ::c_int
= 99;
1206 pub const IPPROTO_GMTP
: ::c_int
= 100;
1207 /// payload compression (IPComp)
1208 pub const IPPROTO_IPCOMP
: ::c_int
= 108;
1210 /* 101-254: Partly Unassigned */
1211 /// Protocol Independent Mcast
1212 pub const IPPROTO_PIM
: ::c_int
= 103;
1214 pub const IPPROTO_CARP
: ::c_int
= 112;
1216 pub const IPPROTO_PGM
: ::c_int
= 113;
1218 pub const IPPROTO_PFSYNC
: ::c_int
= 240;
1221 /* BSD Private, local use, namespace incursion, no longer used */
1222 /// divert pseudo-protocol
1223 pub const IPPROTO_DIVERT
: ::c_int
= 254;
1224 pub const IPPROTO_MAX
: ::c_int
= 256;
1225 /// last return value of *_input(), meaning "all job for this pkt is done".
1226 pub const IPPROTO_DONE
: ::c_int
= 257;
1228 /// Used by RSS: the layer3 protocol is unknown
1229 pub const IPPROTO_UNKNOWN
: ::c_int
= 258;
1231 // sys/netinet/tcp.h
1232 pub const TCP_SIGNATURE_ENABLE
: ::c_int
= 16;
1233 pub const TCP_KEEPINIT
: ::c_int
= 32;
1234 pub const TCP_FASTKEEP
: ::c_int
= 128;
1236 pub const AF_BLUETOOTH
: ::c_int
= 33;
1237 pub const AF_MPLS
: ::c_int
= 34;
1238 pub const AF_IEEE80211
: ::c_int
= 35;
1240 pub const PF_BLUETOOTH
: ::c_int
= AF_BLUETOOTH
;
1242 pub const NET_RT_DUMP
: ::c_int
= 1;
1243 pub const NET_RT_FLAGS
: ::c_int
= 2;
1244 pub const NET_RT_IFLIST
: ::c_int
= 3;
1245 pub const NET_RT_MAXID
: ::c_int
= 4;
1247 pub const SOMAXOPT_SIZE
: ::c_int
= 65536;
1249 pub const MSG_UNUSED09
: ::c_int
= 0x00000200;
1250 pub const MSG_NOSIGNAL
: ::c_int
= 0x00000400;
1251 pub const MSG_SYNC
: ::c_int
= 0x00000800;
1252 pub const MSG_CMSG_CLOEXEC
: ::c_int
= 0x00001000;
1253 pub const MSG_FBLOCKING
: ::c_int
= 0x00010000;
1254 pub const MSG_FNONBLOCKING
: ::c_int
= 0x00020000;
1255 pub const MSG_FMASK
: ::c_int
= 0xFFFF0000;
1257 // utmpx entry types
1258 pub const EMPTY
: ::c_short
= 0;
1259 pub const RUN_LVL
: ::c_short
= 1;
1260 pub const BOOT_TIME
: ::c_short
= 2;
1261 pub const OLD_TIME
: ::c_short
= 3;
1262 pub const NEW_TIME
: ::c_short
= 4;
1263 pub const INIT_PROCESS
: ::c_short
= 5;
1264 pub const LOGIN_PROCESS
: ::c_short
= 6;
1265 pub const USER_PROCESS
: ::c_short
= 7;
1266 pub const DEAD_PROCESS
: ::c_short
= 8;
1267 pub const ACCOUNTING
: ::c_short
= 9;
1268 pub const SIGNATURE
: ::c_short
= 10;
1269 pub const DOWNTIME
: ::c_short
= 11;
1270 // utmpx database types
1271 pub const UTX_DB_UTMPX
: ::c_uint
= 0;
1272 pub const UTX_DB_WTMPX
: ::c_uint
= 1;
1273 pub const UTX_DB_LASTLOG
: ::c_uint
= 2;
1274 pub const _UTX_LINESIZE
: usize = 32;
1275 pub const _UTX_USERSIZE
: usize = 32;
1276 pub const _UTX_IDSIZE
: usize = 4;
1277 pub const _UTX_HOSTSIZE
: usize = 256;
1279 pub const LC_COLLATE_MASK
: ::c_int
= 1 << 0;
1280 pub const LC_CTYPE_MASK
: ::c_int
= 1 << 1;
1281 pub const LC_MONETARY_MASK
: ::c_int
= 1 << 2;
1282 pub const LC_NUMERIC_MASK
: ::c_int
= 1 << 3;
1283 pub const LC_TIME_MASK
: ::c_int
= 1 << 4;
1284 pub const LC_MESSAGES_MASK
: ::c_int
= 1 << 5;
1285 pub const LC_ALL_MASK
: ::c_int
= LC_COLLATE_MASK
1292 pub const TIOCSIG
: ::c_ulong
= 0x2000745f;
1293 pub const BTUARTDISC
: ::c_int
= 0x7;
1294 pub const TIOCDCDTIMESTAMP
: ::c_ulong
= 0x40107458;
1295 pub const TIOCISPTMASTER
: ::c_ulong
= 0x20007455;
1296 pub const TIOCMODG
: ::c_ulong
= 0x40047403;
1297 pub const TIOCMODS
: ::c_ulong
= 0x80047404;
1298 pub const TIOCREMOTE
: ::c_ulong
= 0x80047469;
1300 // Constants used by "at" family of system calls.
1301 pub const AT_FDCWD
: ::c_int
= 0xFFFAFDCD; // invalid file descriptor
1302 pub const AT_SYMLINK_NOFOLLOW
: ::c_int
= 1;
1303 pub const AT_REMOVEDIR
: ::c_int
= 2;
1304 pub const AT_EACCESS
: ::c_int
= 4;
1305 pub const AT_SYMLINK_FOLLOW
: ::c_int
= 8;
1307 pub const VCHECKPT
: usize = 19;
1309 pub const _PC_2_SYMLINKS
: ::c_int
= 22;
1310 pub const _PC_TIMESTAMP_RESOLUTION
: ::c_int
= 23;
1312 pub const _SC_V7_ILP32_OFF32
: ::c_int
= 122;
1313 pub const _SC_V7_ILP32_OFFBIG
: ::c_int
= 123;
1314 pub const _SC_V7_LP64_OFF64
: ::c_int
= 124;
1315 pub const _SC_V7_LPBIG_OFFBIG
: ::c_int
= 125;
1316 pub const _SC_THREAD_ROBUST_PRIO_INHERIT
: ::c_int
= 126;
1317 pub const _SC_THREAD_ROBUST_PRIO_PROTECT
: ::c_int
= 127;
1319 pub const WCONTINUED
: ::c_int
= 0x4;
1320 pub const WSTOPPED
: ::c_int
= 0x2;
1321 pub const WNOWAIT
: ::c_int
= 0x8;
1322 pub const WEXITED
: ::c_int
= 0x10;
1323 pub const WTRAPPED
: ::c_int
= 0x20;
1325 // Similar to FreeBSD, only the standardized ones are exposed.
1327 pub const P_PID
: idtype_t
= 0;
1328 pub const P_PGID
: idtype_t
= 2;
1329 pub const P_ALL
: idtype_t
= 7;
1331 // Values for struct rtprio (type_ field)
1332 pub const RTP_PRIO_REALTIME
: ::c_ushort
= 0;
1333 pub const RTP_PRIO_NORMAL
: ::c_ushort
= 1;
1334 pub const RTP_PRIO_IDLE
: ::c_ushort
= 2;
1335 pub const RTP_PRIO_THREAD
: ::c_ushort
= 3;
1337 // Flags for chflags(2)
1338 pub const UF_NOHISTORY
: ::c_ulong
= 0x00000040;
1339 pub const UF_CACHE
: ::c_ulong
= 0x00000080;
1340 pub const UF_XLINK
: ::c_ulong
= 0x00000100;
1341 pub const SF_NOHISTORY
: ::c_ulong
= 0x00400000;
1342 pub const SF_CACHE
: ::c_ulong
= 0x00800000;
1343 pub const SF_XLINK
: ::c_ulong
= 0x01000000;
1345 // timespec constants
1346 pub const UTIME_OMIT
: c_long
= -2;
1347 pub const UTIME_NOW
: c_long
= -1;
1349 pub const MINCORE_SUPER
: ::c_int
= 0x20;
1352 {const}
fn _CMSG_ALIGN(n
: usize) -> usize {
1353 (n
+ (::mem
::size_of
::<::c_long
>() - 1)) & !(::mem
::size_of
::<::c_long
>() - 1)
1358 pub fn CMSG_DATA(cmsg
: *const ::cmsghdr
) -> *mut ::c_uchar
{
1359 (cmsg
as *mut ::c_uchar
)
1360 .offset(_CMSG_ALIGN(::mem
::size_of
::<::cmsghdr
>()) as isize)
1363 pub fn CMSG_LEN(length
: ::c_uint
) -> ::c_uint
{
1364 (_CMSG_ALIGN(::mem
::size_of
::<::cmsghdr
>()) + length
as usize)
1368 pub fn CMSG_NXTHDR(mhdr
: *const ::msghdr
, cmsg
: *const ::cmsghdr
)
1371 let next
= cmsg
as usize + _CMSG_ALIGN((*cmsg
).cmsg_len
as usize)
1372 + _CMSG_ALIGN(::mem
::size_of
::<::cmsghdr
>());
1373 let max
= (*mhdr
).msg_control
as usize
1374 + (*mhdr
).msg_controllen
as usize;
1376 (cmsg
as usize + _CMSG_ALIGN((*cmsg
).cmsg_len
as usize))
1383 pub {const}
fn CMSG_SPACE(length
: ::c_uint
) -> ::c_uint
{
1384 (_CMSG_ALIGN(::mem
::size_of
::<::cmsghdr
>()) +
1385 _CMSG_ALIGN(length
as usize)) as ::c_uint
1388 pub fn CPU_ZERO(cpuset
: &mut cpu_set_t
) -> () {
1389 for slot
in cpuset
.ary
.iter_mut() {
1394 pub fn CPU_SET(cpu
: usize, cpuset
: &mut cpu_set_t
) -> () {
1395 let (idx
, offset
) = ((cpu
>> 6) & 3, cpu
& 63);
1396 cpuset
.ary
[idx
] |= 1 << offset
;
1400 pub fn CPU_CLR(cpu
: usize, cpuset
: &mut cpu_set_t
) -> () {
1401 let (idx
, offset
) = ((cpu
>> 6) & 3, cpu
& 63);
1402 cpuset
.ary
[idx
] &= !(1 << offset
);
1406 pub fn CPU_ISSET(cpu
: usize, cpuset
: &cpu_set_t
) -> bool
{
1407 let (idx
, offset
) = ((cpu
>> 6) & 3, cpu
& 63);
1408 0 != cpuset
.ary
[idx
] & (1 << offset
)
1413 pub {const}
fn WIFSIGNALED(status
: ::c_int
) -> bool
{
1414 (status
& 0o177) != 0o177 && (status
& 0o177) != 0
1419 pub fn __errno_location() -> *mut ::c_int
;
1421 pub fn mprotect(addr
: *mut ::c_void
, len
: ::size_t
, prot
: ::c_int
) -> ::c_int
;
1423 pub fn setutxdb(_type
: ::c_uint
, file
: *mut ::c_char
) -> ::c_int
;
1425 pub fn aio_waitcomplete(iocbp
: *mut *mut aiocb
, timeout
: *mut ::timespec
) -> ::c_int
;
1437 infop
: *mut ::siginfo_t
,
1441 pub fn freelocale(loc
: ::locale_t
);
1447 rtp
: *mut super::rtprio
,
1450 pub fn statfs(path
: *const ::c_char
, buf
: *mut statfs
) -> ::c_int
;
1451 pub fn fstatfs(fd
: ::c_int
, buf
: *mut statfs
) -> ::c_int
;
1452 pub fn uname(buf
: *mut ::utsname
) -> ::c_int
;
1454 haystack
: *const ::c_void
,
1455 haystacklen
: ::size_t
,
1456 needle
: *const ::c_void
,
1457 needlelen
: ::size_t
,
1459 pub fn pthread_spin_init(lock
: *mut pthread_spinlock_t
, pshared
: ::c_int
) -> ::c_int
;
1460 pub fn pthread_spin_destroy(lock
: *mut pthread_spinlock_t
) -> ::c_int
;
1461 pub fn pthread_spin_lock(lock
: *mut pthread_spinlock_t
) -> ::c_int
;
1462 pub fn pthread_spin_trylock(lock
: *mut pthread_spinlock_t
) -> ::c_int
;
1463 pub fn pthread_spin_unlock(lock
: *mut pthread_spinlock_t
) -> ::c_int
;
1465 pub fn sched_getaffinity(pid
: ::pid_t
, cpusetsize
: ::size_t
, mask
: *mut cpu_set_t
) -> ::c_int
;
1466 pub fn sched_setaffinity(pid
: ::pid_t
, cpusetsize
: ::size_t
, mask
: *const cpu_set_t
)
1468 pub fn sched_getcpu() -> ::c_int
;
1469 pub fn setproctitle(fmt
: *const ::c_char
, ...);
1471 pub fn shmget(key
: ::key_t
, size
: ::size_t
, shmflg
: ::c_int
) -> ::c_int
;
1472 pub fn shmat(shmid
: ::c_int
, shmaddr
: *const ::c_void
, shmflg
: ::c_int
) -> *mut ::c_void
;
1473 pub fn shmdt(shmaddr
: *const ::c_void
) -> ::c_int
;
1474 pub fn shmctl(shmid
: ::c_int
, cmd
: ::c_int
, buf
: *mut ::shmid_ds
) -> ::c_int
;
1475 pub fn procctl(idtype
: ::idtype_t
, id
: ::id_t
, cmd
: ::c_int
, data
: *mut ::c_void
) -> ::c_int
;
1477 pub fn updwtmpx(file
: *const ::c_char
, ut
: *const utmpx
) -> ::c_int
;
1478 pub fn getlastlogx(fname
: *const ::c_char
, uid
: ::uid_t
, ll
: *mut lastlogx
) -> *mut lastlogx
;
1479 pub fn updlastlogx(fname
: *const ::c_char
, uid
: ::uid_t
, ll
: *mut lastlogx
) -> ::c_int
;
1480 pub fn getutxuser(name
: *const ::c_char
) -> utmpx
;
1481 pub fn utmpxname(file
: *const ::c_char
) -> ::c_int
;
1483 pub fn sys_checkpoint(tpe
: ::c_int
, fd
: ::c_int
, pid
: ::pid_t
, retval
: ::c_int
) -> ::c_int
;
1485 pub fn umtx_sleep(ptr
: *const ::c_int
, value
: ::c_int
, timeout
: ::c_int
) -> ::c_int
;
1486 pub fn umtx_wakeup(ptr
: *const ::c_int
, count
: ::c_int
) -> ::c_int
;
1489 #[link(name = "rt")]
1491 pub fn aio_cancel(fd
: ::c_int
, aiocbp
: *mut aiocb
) -> ::c_int
;
1492 pub fn aio_error(aiocbp
: *const aiocb
) -> ::c_int
;
1493 pub fn aio_fsync(op
: ::c_int
, aiocbp
: *mut aiocb
) -> ::c_int
;
1494 pub fn aio_read(aiocbp
: *mut aiocb
) -> ::c_int
;
1495 pub fn aio_return(aiocbp
: *mut aiocb
) -> ::ssize_t
;
1497 aiocb_list
: *const *const aiocb
,
1499 timeout
: *const ::timespec
,
1501 pub fn aio_write(aiocbp
: *mut aiocb
) -> ::c_int
;
1504 aiocb_list
: *const *mut aiocb
,
1506 sevp
: *mut sigevent
,
1509 pub fn reallocf(ptr
: *mut ::c_void
, size
: ::size_t
) -> *mut ::c_void
;
1510 pub fn freezero(ptr
: *mut ::c_void
, size
: ::size_t
);
1514 if #[cfg(libc_thread_local)] {
1516 pub use self::errno
::*;