]>
git.proxmox.com Git - cargo.git/blob - vendor/libc/src/unix/bsd/mod.rs
2 pub type useconds_t
= u32;
3 pub type blkcnt_t
= i64;
4 pub type socklen_t
= u32;
5 pub type sa_family_t
= u8;
6 pub type pthread_t
= ::uintptr_t
;
7 pub type nfds_t
= ::c_uint
;
8 pub type regoff_t
= off_t
;
13 pub sa_family
: sa_family_t
,
14 pub sa_data
: [::c_char
; 14],
17 pub struct sockaddr_in6
{
19 pub sin6_family
: sa_family_t
,
20 pub sin6_port
: ::in_port_t
,
21 pub sin6_flowinfo
: u32,
22 pub sin6_addr
: ::in6_addr
,
23 pub sin6_scope_id
: u32,
27 pub pw_name
: *mut ::c_char
,
28 pub pw_passwd
: *mut ::c_char
,
31 pub pw_change
: ::time_t
,
32 pub pw_class
: *mut ::c_char
,
33 pub pw_gecos
: *mut ::c_char
,
34 pub pw_dir
: *mut ::c_char
,
35 pub pw_shell
: *mut ::c_char
,
36 pub pw_expire
: ::time_t
,
38 #[cfg(not(any(target_os = "macos",
40 target_os
= "watchos",
42 target_os
= "openbsd")))]
43 pub pw_fields
: ::c_int
,
47 pub ifa_next
: *mut ifaddrs
,
48 pub ifa_name
: *mut ::c_char
,
49 pub ifa_flags
: ::c_uint
,
50 pub ifa_addr
: *mut ::sockaddr
,
51 pub ifa_netmask
: *mut ::sockaddr
,
52 pub ifa_dstaddr
: *mut ::sockaddr
,
53 pub ifa_data
: *mut ::c_void
,
54 #[cfg(target_os = "netbsd")]
55 pub ifa_addrflags
: ::c_uint
59 #[cfg(all(target_pointer_width = "64",
60 any(target_os
= "freebsd", target_os
= "dragonfly")))]
61 fds_bits
: [i64; FD_SETSIZE
/ 64],
62 #[cfg(not(all(target_pointer_width = "64",
63 any(target_os
= "freebsd", target_os
= "dragonfly"))))]
64 fds_bits
: [i32; FD_SETSIZE
/ 32],
76 pub tm_isdst
: ::c_int
,
77 pub tm_gmtoff
: ::c_long
,
78 pub tm_zone
: *mut ::c_char
,
82 pub msg_name
: *mut ::c_void
,
83 pub msg_namelen
: ::socklen_t
,
84 pub msg_iov
: *mut ::iovec
,
85 pub msg_iovlen
: ::c_int
,
86 pub msg_control
: *mut ::c_void
,
87 pub msg_controllen
: ::socklen_t
,
88 pub msg_flags
: ::c_int
,
92 pub cmsg_len
: ::socklen_t
,
93 pub cmsg_level
: ::c_int
,
94 pub cmsg_type
: ::c_int
,
101 pub struct if_nameindex
{
102 pub if_index
: ::c_uint
,
103 pub if_name
: *mut ::c_char
,
109 __re_endp
: *const ::c_char
,
110 __re_g
: *mut ::c_void
,
113 pub struct regmatch_t
{
120 pub struct sockaddr_un
{
122 pub sun_family
: sa_family_t
,
123 pub sun_path
: [c_char
; 104]
127 #[cfg(not(target_os = "dragonfly"))]
128 pub sysname
: [::c_char
; 256],
129 #[cfg(target_os = "dragonfly")]
130 pub sysname
: [::c_char
; 32],
131 #[cfg(not(target_os = "dragonfly"))]
132 pub nodename
: [::c_char
; 256],
133 #[cfg(target_os = "dragonfly")]
134 pub nodename
: [::c_char
; 32],
135 #[cfg(not(target_os = "dragonfly"))]
136 pub release
: [::c_char
; 256],
137 #[cfg(target_os = "dragonfly")]
138 pub release
: [::c_char
; 32],
139 #[cfg(not(target_os = "dragonfly"))]
140 pub version
: [::c_char
; 256],
141 #[cfg(target_os = "dragonfly")]
142 pub version
: [::c_char
; 32],
143 #[cfg(not(target_os = "dragonfly"))]
144 pub machine
: [::c_char
; 256],
145 #[cfg(target_os = "dragonfly")]
146 pub machine
: [::c_char
; 32],
152 if #[cfg(feature = "extra_traits")] {
153 impl PartialEq
for sockaddr_un
{
154 fn eq(&self, other
: &sockaddr_un
) -> bool
{
155 self.sun_len
== other
.sun_len
156 && self.sun_family
== other
.sun_family
160 .zip(other
.sun_path
.iter())
165 impl Eq
for sockaddr_un {}
167 impl ::fmt
::Debug
for sockaddr_un
{
168 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
169 f
.debug_struct("sockaddr_un")
170 .field("sun_len", &self.sun_len
)
171 .field("sun_family", &self.sun_family
)
172 // FIXME: .field("sun_path", &self.sun_path)
177 impl ::hash
::Hash
for sockaddr_un
{
178 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
179 self.sun_len
.hash(state
);
180 self.sun_family
.hash(state
);
181 self.sun_path
.hash(state
);
185 impl PartialEq
for utsname
{
186 fn eq(&self, other
: &utsname
) -> bool
{
189 .zip(other
.sysname
.iter())
194 .zip(other
.nodename
.iter())
199 .zip(other
.release
.iter())
204 .zip(other
.version
.iter())
209 .zip(other
.machine
.iter())
214 impl Eq
for utsname {}
216 impl ::fmt
::Debug
for utsname
{
217 fn fmt(&self, f
: &mut ::fmt
::Formatter
) -> ::fmt
::Result
{
218 f
.debug_struct("utsname")
219 // FIXME: .field("sysname", &self.sysname)
220 // FIXME: .field("nodename", &self.nodename)
221 // FIXME: .field("release", &self.release)
222 // FIXME: .field("version", &self.version)
223 // FIXME: .field("machine", &self.machine)
228 impl ::hash
::Hash
for utsname
{
229 fn hash
<H
: ::hash
::Hasher
>(&self, state
: &mut H
) {
230 self.sysname
.hash(state
);
231 self.nodename
.hash(state
);
232 self.release
.hash(state
);
233 self.version
.hash(state
);
234 self.machine
.hash(state
);
240 pub const LC_ALL
: ::c_int
= 0;
241 pub const LC_COLLATE
: ::c_int
= 1;
242 pub const LC_CTYPE
: ::c_int
= 2;
243 pub const LC_MONETARY
: ::c_int
= 3;
244 pub const LC_NUMERIC
: ::c_int
= 4;
245 pub const LC_TIME
: ::c_int
= 5;
246 pub const LC_MESSAGES
: ::c_int
= 6;
248 pub const FIOCLEX
: ::c_ulong
= 0x20006601;
249 pub const FIONCLEX
: ::c_ulong
= 0x20006602;
250 pub const FIONREAD
: ::c_ulong
= 0x4004667f;
251 pub const FIONBIO
: ::c_ulong
= 0x8004667e;
252 pub const FIOASYNC
: ::c_ulong
= 0x8004667d;
253 pub const FIOSETOWN
: ::c_ulong
= 0x8004667c;
254 pub const FIOGETOWN
: ::c_ulong
= 0x4004667b;
256 pub const PATH_MAX
: ::c_int
= 1024;
257 pub const MAXPATHLEN
: ::c_int
= PATH_MAX
;
259 pub const IOV_MAX
: ::c_int
= 1024;
261 pub const SA_ONSTACK
: ::c_int
= 0x0001;
262 pub const SA_SIGINFO
: ::c_int
= 0x0040;
263 pub const SA_RESTART
: ::c_int
= 0x0002;
264 pub const SA_RESETHAND
: ::c_int
= 0x0004;
265 pub const SA_NOCLDSTOP
: ::c_int
= 0x0008;
266 pub const SA_NODEFER
: ::c_int
= 0x0010;
267 pub const SA_NOCLDWAIT
: ::c_int
= 0x0020;
269 pub const SS_ONSTACK
: ::c_int
= 1;
270 pub const SS_DISABLE
: ::c_int
= 4;
272 pub const SIGCHLD
: ::c_int
= 20;
273 pub const SIGBUS
: ::c_int
= 10;
274 pub const SIGUSR1
: ::c_int
= 30;
275 pub const SIGUSR2
: ::c_int
= 31;
276 pub const SIGCONT
: ::c_int
= 19;
277 pub const SIGSTOP
: ::c_int
= 17;
278 pub const SIGTSTP
: ::c_int
= 18;
279 pub const SIGURG
: ::c_int
= 16;
280 pub const SIGIO
: ::c_int
= 23;
281 pub const SIGSYS
: ::c_int
= 12;
282 pub const SIGTTIN
: ::c_int
= 21;
283 pub const SIGTTOU
: ::c_int
= 22;
284 pub const SIGXCPU
: ::c_int
= 24;
285 pub const SIGXFSZ
: ::c_int
= 25;
286 pub const SIGVTALRM
: ::c_int
= 26;
287 pub const SIGPROF
: ::c_int
= 27;
288 pub const SIGWINCH
: ::c_int
= 28;
289 pub const SIGINFO
: ::c_int
= 29;
291 pub const SIG_SETMASK
: ::c_int
= 3;
292 pub const SIG_BLOCK
: ::c_int
= 0x1;
293 pub const SIG_UNBLOCK
: ::c_int
= 0x2;
295 pub const IP_TOS
: ::c_int
= 3;
296 pub const IP_MULTICAST_IF
: ::c_int
= 9;
297 pub const IP_MULTICAST_TTL
: ::c_int
= 10;
298 pub const IP_MULTICAST_LOOP
: ::c_int
= 11;
300 pub const IPV6_UNICAST_HOPS
: ::c_int
= 4;
301 pub const IPV6_MULTICAST_IF
: ::c_int
= 9;
302 pub const IPV6_MULTICAST_HOPS
: ::c_int
= 10;
303 pub const IPV6_MULTICAST_LOOP
: ::c_int
= 11;
304 pub const IPV6_V6ONLY
: ::c_int
= 27;
306 pub const IPTOS_ECN_NOTECT
: u8 = 0x00;
307 pub const IPTOS_ECN_MASK
: u8 = 0x03;
308 pub const IPTOS_ECN_ECT1
: u8 = 0x01;
309 pub const IPTOS_ECN_ECT0
: u8 = 0x02;
310 pub const IPTOS_ECN_CE
: u8 = 0x03;
312 pub const ST_RDONLY
: ::c_ulong
= 1;
314 pub const SCM_RIGHTS
: ::c_int
= 0x01;
316 pub const NCCS
: usize = 20;
318 pub const O_ACCMODE
: ::c_int
= 0x3;
319 pub const O_RDONLY
: ::c_int
= 0;
320 pub const O_WRONLY
: ::c_int
= 1;
321 pub const O_RDWR
: ::c_int
= 2;
322 pub const O_APPEND
: ::c_int
= 8;
323 pub const O_CREAT
: ::c_int
= 512;
324 pub const O_TRUNC
: ::c_int
= 1024;
325 pub const O_EXCL
: ::c_int
= 2048;
326 pub const O_ASYNC
: ::c_int
= 0x40;
327 pub const O_SYNC
: ::c_int
= 0x80;
328 pub const O_NONBLOCK
: ::c_int
= 0x4;
329 pub const O_NOFOLLOW
: ::c_int
= 0x100;
330 pub const O_SHLOCK
: ::c_int
= 0x10;
331 pub const O_EXLOCK
: ::c_int
= 0x20;
332 pub const O_FSYNC
: ::c_int
= O_SYNC
;
333 pub const O_NDELAY
: ::c_int
= O_NONBLOCK
;
335 pub const F_GETOWN
: ::c_int
= 5;
336 pub const F_SETOWN
: ::c_int
= 6;
338 pub const F_RDLCK
: ::c_short
= 1;
339 pub const F_UNLCK
: ::c_short
= 2;
340 pub const F_WRLCK
: ::c_short
= 3;
342 pub const MNT_RDONLY
: ::c_int
= 0x00000001;
343 pub const MNT_SYNCHRONOUS
: ::c_int
= 0x00000002;
344 pub const MNT_NOEXEC
: ::c_int
= 0x00000004;
345 pub const MNT_NOSUID
: ::c_int
= 0x00000008;
346 pub const MNT_ASYNC
: ::c_int
= 0x00000040;
347 pub const MNT_EXPORTED
: ::c_int
= 0x00000100;
348 pub const MNT_UPDATE
: ::c_int
= 0x00010000;
349 pub const MNT_RELOAD
: ::c_int
= 0x00040000;
350 pub const MNT_FORCE
: ::c_int
= 0x00080000;
352 pub const Q_SYNC
: ::c_int
= 0x600;
353 pub const Q_QUOTAON
: ::c_int
= 0x100;
354 pub const Q_QUOTAOFF
: ::c_int
= 0x200;
356 pub const TCIOFF
: ::c_int
= 3;
357 pub const TCION
: ::c_int
= 4;
358 pub const TCOOFF
: ::c_int
= 1;
359 pub const TCOON
: ::c_int
= 2;
360 pub const TCIFLUSH
: ::c_int
= 1;
361 pub const TCOFLUSH
: ::c_int
= 2;
362 pub const TCIOFLUSH
: ::c_int
= 3;
363 pub const TCSANOW
: ::c_int
= 0;
364 pub const TCSADRAIN
: ::c_int
= 1;
365 pub const TCSAFLUSH
: ::c_int
= 2;
366 pub const VEOF
: usize = 0;
367 pub const VEOL
: usize = 1;
368 pub const VEOL2
: usize = 2;
369 pub const VERASE
: usize = 3;
370 pub const VWERASE
: usize = 4;
371 pub const VKILL
: usize = 5;
372 pub const VREPRINT
: usize = 6;
373 pub const VINTR
: usize = 8;
374 pub const VQUIT
: usize = 9;
375 pub const VSUSP
: usize = 10;
376 pub const VDSUSP
: usize = 11;
377 pub const VSTART
: usize = 12;
378 pub const VSTOP
: usize = 13;
379 pub const VLNEXT
: usize = 14;
380 pub const VDISCARD
: usize = 15;
381 pub const VMIN
: usize = 16;
382 pub const VTIME
: usize = 17;
383 pub const VSTATUS
: usize = 18;
384 pub const _POSIX_VDISABLE
: ::cc_t
= 0xff;
385 pub const IGNBRK
: ::tcflag_t
= 0x00000001;
386 pub const BRKINT
: ::tcflag_t
= 0x00000002;
387 pub const IGNPAR
: ::tcflag_t
= 0x00000004;
388 pub const PARMRK
: ::tcflag_t
= 0x00000008;
389 pub const INPCK
: ::tcflag_t
= 0x00000010;
390 pub const ISTRIP
: ::tcflag_t
= 0x00000020;
391 pub const INLCR
: ::tcflag_t
= 0x00000040;
392 pub const IGNCR
: ::tcflag_t
= 0x00000080;
393 pub const ICRNL
: ::tcflag_t
= 0x00000100;
394 pub const IXON
: ::tcflag_t
= 0x00000200;
395 pub const IXOFF
: ::tcflag_t
= 0x00000400;
396 pub const IXANY
: ::tcflag_t
= 0x00000800;
397 pub const IMAXBEL
: ::tcflag_t
= 0x00002000;
398 pub const OPOST
: ::tcflag_t
= 0x1;
399 pub const ONLCR
: ::tcflag_t
= 0x2;
400 pub const OXTABS
: ::tcflag_t
= 0x4;
401 pub const ONOEOT
: ::tcflag_t
= 0x8;
402 pub const CIGNORE
: ::tcflag_t
= 0x00000001;
403 pub const CSIZE
: ::tcflag_t
= 0x00000300;
404 pub const CS5
: ::tcflag_t
= 0x00000000;
405 pub const CS6
: ::tcflag_t
= 0x00000100;
406 pub const CS7
: ::tcflag_t
= 0x00000200;
407 pub const CS8
: ::tcflag_t
= 0x00000300;
408 pub const CSTOPB
: ::tcflag_t
= 0x00000400;
409 pub const CREAD
: ::tcflag_t
= 0x00000800;
410 pub const PARENB
: ::tcflag_t
= 0x00001000;
411 pub const PARODD
: ::tcflag_t
= 0x00002000;
412 pub const HUPCL
: ::tcflag_t
= 0x00004000;
413 pub const CLOCAL
: ::tcflag_t
= 0x00008000;
414 pub const ECHOKE
: ::tcflag_t
= 0x00000001;
415 pub const ECHOE
: ::tcflag_t
= 0x00000002;
416 pub const ECHOK
: ::tcflag_t
= 0x00000004;
417 pub const ECHO
: ::tcflag_t
= 0x00000008;
418 pub const ECHONL
: ::tcflag_t
= 0x00000010;
419 pub const ECHOPRT
: ::tcflag_t
= 0x00000020;
420 pub const ECHOCTL
: ::tcflag_t
= 0x00000040;
421 pub const ISIG
: ::tcflag_t
= 0x00000080;
422 pub const ICANON
: ::tcflag_t
= 0x00000100;
423 pub const ALTWERASE
: ::tcflag_t
= 0x00000200;
424 pub const IEXTEN
: ::tcflag_t
= 0x00000400;
425 pub const EXTPROC
: ::tcflag_t
= 0x00000800;
426 pub const TOSTOP
: ::tcflag_t
= 0x00400000;
427 pub const FLUSHO
: ::tcflag_t
= 0x00800000;
428 pub const NOKERNINFO
: ::tcflag_t
= 0x02000000;
429 pub const PENDIN
: ::tcflag_t
= 0x20000000;
430 pub const NOFLSH
: ::tcflag_t
= 0x80000000;
431 pub const MDMBUF
: ::tcflag_t
= 0x00100000;
433 pub const WNOHANG
: ::c_int
= 0x00000001;
434 pub const WUNTRACED
: ::c_int
= 0x00000002;
436 pub const RTLD_LAZY
: ::c_int
= 0x1;
437 pub const RTLD_NOW
: ::c_int
= 0x2;
438 pub const RTLD_NEXT
: *mut ::c_void
= -1isize
as *mut ::c_void
;
439 pub const RTLD_DEFAULT
: *mut ::c_void
= -2isize
as *mut ::c_void
;
440 pub const RTLD_SELF
: *mut ::c_void
= -3isize
as *mut ::c_void
;
442 pub const LOG_CRON
: ::c_int
= 9 << 3;
443 pub const LOG_AUTHPRIV
: ::c_int
= 10 << 3;
444 pub const LOG_FTP
: ::c_int
= 11 << 3;
445 pub const LOG_PERROR
: ::c_int
= 0x20;
447 pub const TCP_NODELAY
: ::c_int
= 1;
448 pub const TCP_MAXSEG
: ::c_int
= 2;
450 pub const PIPE_BUF
: usize = 512;
452 // si_code values for SIGBUS signal
453 pub const BUS_ADRALN
: ::c_int
= 1;
454 pub const BUS_ADRERR
: ::c_int
= 2;
455 pub const BUS_OBJERR
: ::c_int
= 3;
457 // si_code values for SIGCHLD signal
458 pub const CLD_EXITED
: ::c_int
= 1;
459 pub const CLD_KILLED
: ::c_int
= 2;
460 pub const CLD_DUMPED
: ::c_int
= 3;
461 pub const CLD_TRAPPED
: ::c_int
= 4;
462 pub const CLD_STOPPED
: ::c_int
= 5;
463 pub const CLD_CONTINUED
: ::c_int
= 6;
465 pub const POLLIN
: ::c_short
= 0x1;
466 pub const POLLPRI
: ::c_short
= 0x2;
467 pub const POLLOUT
: ::c_short
= 0x4;
468 pub const POLLERR
: ::c_short
= 0x8;
469 pub const POLLHUP
: ::c_short
= 0x10;
470 pub const POLLNVAL
: ::c_short
= 0x20;
471 pub const POLLRDNORM
: ::c_short
= 0x040;
472 pub const POLLWRNORM
: ::c_short
= 0x004;
473 pub const POLLRDBAND
: ::c_short
= 0x080;
474 pub const POLLWRBAND
: ::c_short
= 0x100;
476 pub const BIOCGBLEN
: ::c_ulong
= 0x40044266;
477 pub const BIOCSBLEN
: ::c_ulong
= 0xc0044266;
478 pub const BIOCFLUSH
: ::c_uint
= 0x20004268;
479 pub const BIOCPROMISC
: ::c_uint
= 0x20004269;
480 pub const BIOCGDLT
: ::c_ulong
= 0x4004426a;
481 pub const BIOCGETIF
: ::c_ulong
= 0x4020426b;
482 pub const BIOCSETIF
: ::c_ulong
= 0x8020426c;
483 pub const BIOCGSTATS
: ::c_ulong
= 0x4008426f;
484 pub const BIOCIMMEDIATE
: ::c_ulong
= 0x80044270;
485 pub const BIOCVERSION
: ::c_ulong
= 0x40044271;
486 pub const BIOCGHDRCMPLT
: ::c_ulong
= 0x40044274;
487 pub const BIOCSHDRCMPLT
: ::c_ulong
= 0x80044275;
488 pub const SIOCGIFADDR
: ::c_ulong
= 0xc0206921;
490 pub const REG_BASIC
: ::c_int
= 0o0000;
491 pub const REG_EXTENDED
: ::c_int
= 0o0001;
492 pub const REG_ICASE
: ::c_int
= 0o0002;
493 pub const REG_NOSUB
: ::c_int
= 0o0004;
494 pub const REG_NEWLINE
: ::c_int
= 0o0010;
495 pub const REG_NOSPEC
: ::c_int
= 0o0020;
496 pub const REG_PEND
: ::c_int
= 0o0040;
497 pub const REG_DUMP
: ::c_int
= 0o0200;
499 pub const REG_NOMATCH
: ::c_int
= 1;
500 pub const REG_BADPAT
: ::c_int
= 2;
501 pub const REG_ECOLLATE
: ::c_int
= 3;
502 pub const REG_ECTYPE
: ::c_int
= 4;
503 pub const REG_EESCAPE
: ::c_int
= 5;
504 pub const REG_ESUBREG
: ::c_int
= 6;
505 pub const REG_EBRACK
: ::c_int
= 7;
506 pub const REG_EPAREN
: ::c_int
= 8;
507 pub const REG_EBRACE
: ::c_int
= 9;
508 pub const REG_BADBR
: ::c_int
= 10;
509 pub const REG_ERANGE
: ::c_int
= 11;
510 pub const REG_ESPACE
: ::c_int
= 12;
511 pub const REG_BADRPT
: ::c_int
= 13;
512 pub const REG_EMPTY
: ::c_int
= 14;
513 pub const REG_ASSERT
: ::c_int
= 15;
514 pub const REG_INVARG
: ::c_int
= 16;
515 pub const REG_ATOI
: ::c_int
= 255;
516 pub const REG_ITOA
: ::c_int
= 0o0400;
518 pub const REG_NOTBOL
: ::c_int
= 0o00001;
519 pub const REG_NOTEOL
: ::c_int
= 0o00002;
520 pub const REG_STARTEND
: ::c_int
= 0o00004;
521 pub const REG_TRACE
: ::c_int
= 0o00400;
522 pub const REG_LARGE
: ::c_int
= 0o01000;
523 pub const REG_BACKR
: ::c_int
= 0o02000;
525 pub const TIOCCBRK
: ::c_uint
= 0x2000747a;
526 pub const TIOCSBRK
: ::c_uint
= 0x2000747b;
528 pub const PRIO_PROCESS
: ::c_int
= 0;
529 pub const PRIO_PGRP
: ::c_int
= 1;
530 pub const PRIO_USER
: ::c_int
= 2;
532 pub const ITIMER_REAL
: ::c_int
= 0;
533 pub const ITIMER_VIRTUAL
: ::c_int
= 1;
534 pub const ITIMER_PROF
: ::c_int
= 2;
537 pub fn CMSG_FIRSTHDR(mhdr
: *const ::msghdr
) -> *mut ::cmsghdr
{
538 if (*mhdr
).msg_controllen
as usize >= ::mem
::size_of
::<::cmsghdr
>() {
539 (*mhdr
).msg_control
as *mut ::cmsghdr
545 pub fn FD_CLR(fd
: ::c_int
, set
: *mut fd_set
) -> () {
546 let bits
= ::mem
::size_of_val(&(*set
).fds_bits
[0]) * 8;
547 let fd
= fd
as usize;
548 (*set
).fds_bits
[fd
/ bits
] &= !(1 << (fd
% bits
));
552 pub fn FD_ISSET(fd
: ::c_int
, set
: *const fd_set
) -> bool
{
553 let bits
= ::mem
::size_of_val(&(*set
).fds_bits
[0]) * 8;
554 let fd
= fd
as usize;
555 return ((*set
).fds_bits
[fd
/ bits
] & (1 << (fd
% bits
))) != 0
558 pub fn FD_SET(fd
: ::c_int
, set
: *mut fd_set
) -> () {
559 let bits
= ::mem
::size_of_val(&(*set
).fds_bits
[0]) * 8;
560 let fd
= fd
as usize;
561 (*set
).fds_bits
[fd
/ bits
] |= 1 << (fd
% bits
);
565 pub fn FD_ZERO(set
: *mut fd_set
) -> () {
566 for slot
in (*set
).fds_bits
.iter_mut() {
573 pub {const}
fn WTERMSIG(status
: ::c_int
) -> ::c_int
{
577 pub {const}
fn WIFEXITED(status
: ::c_int
) -> bool
{
578 (status
& 0o177) == 0
581 pub {const}
fn WEXITSTATUS(status
: ::c_int
) -> ::c_int
{
585 pub {const}
fn WCOREDUMP(status
: ::c_int
) -> bool
{
586 (status
& 0o200) != 0
589 pub {const}
fn QCMD(cmd
: ::c_int
, type_
: ::c_int
) -> ::c_int
{
590 (cmd
<< 8) | (type_
& 0x00ff)
596 all(target_os
= "macos", target_arch
= "x86"),
597 link_name
= "getrlimit$UNIX2003"
599 pub fn getrlimit(resource
: ::c_int
, rlim
: *mut ::rlimit
) -> ::c_int
;
601 all(target_os
= "macos", target_arch
= "x86"),
602 link_name
= "setrlimit$UNIX2003"
604 pub fn setrlimit(resource
: ::c_int
, rlim
: *const ::rlimit
) -> ::c_int
;
606 pub fn strerror_r(errnum
: ::c_int
, buf
: *mut c_char
, buflen
: ::size_t
) -> ::c_int
;
607 pub fn abs(i
: ::c_int
) -> ::c_int
;
608 pub fn atof(s
: *const ::c_char
) -> ::c_double
;
609 pub fn labs(i
: ::c_long
) -> ::c_long
;
611 all(target_os
= "freebsd", any(freebsd12
, freebsd11
, freebsd10
)),
612 link_name
= "rand@FBSD_1.0"
614 pub fn rand() -> ::c_int
;
616 all(target_os
= "freebsd", any(freebsd12
, freebsd11
, freebsd10
)),
617 link_name
= "srand@FBSD_1.0"
619 pub fn srand(seed
: ::c_uint
);
621 pub fn getifaddrs(ifap
: *mut *mut ::ifaddrs
) -> ::c_int
;
622 pub fn freeifaddrs(ifa
: *mut ::ifaddrs
);
623 pub fn setgroups(ngroups
: ::c_int
, ptr
: *const ::gid_t
) -> ::c_int
;
624 pub fn ioctl(fd
: ::c_int
, request
: ::c_ulong
, ...) -> ::c_int
;
625 pub fn kqueue() -> ::c_int
;
626 pub fn unmount(target
: *const ::c_char
, arg
: ::c_int
) -> ::c_int
;
627 pub fn syscall(num
: ::c_int
, ...) -> ::c_int
;
628 #[cfg_attr(target_os = "netbsd", link_name = "__getpwent50")]
629 pub fn getpwent() -> *mut passwd
;
633 pub fn getgrent() -> *mut ::group
;
635 pub fn getprogname() -> *const ::c_char
;
636 pub fn setprogname(name
: *const ::c_char
);
637 pub fn getloadavg(loadavg
: *mut ::c_double
, nelem
: ::c_int
) -> ::c_int
;
638 pub fn if_nameindex() -> *mut if_nameindex
;
639 pub fn if_freenameindex(ptr
: *mut if_nameindex
);
641 pub fn getpeereid(socket
: ::c_int
, euid
: *mut ::uid_t
, egid
: *mut ::gid_t
) -> ::c_int
;
644 all(target_os
= "macos", not(target_arch
= "aarch64")),
645 link_name
= "glob$INODE64"
647 #[cfg_attr(target_os = "netbsd", link_name = "__glob30")]
649 all(target_os
= "freebsd", any(freebsd11
, freebsd10
)),
650 link_name
= "glob@FBSD_1.0"
653 pattern
: *const ::c_char
,
655 errfunc
: ::Option
<extern "C" fn(epath
: *const ::c_char
, errno
: ::c_int
) -> ::c_int
>,
656 pglob
: *mut ::glob_t
,
658 #[cfg_attr(target_os = "netbsd", link_name = "__globfree30")]
660 all(target_os
= "freebsd", any(freebsd11
, freebsd10
)),
661 link_name
= "globfree@FBSD_1.0"
663 pub fn globfree(pglob
: *mut ::glob_t
);
665 pub fn posix_madvise(addr
: *mut ::c_void
, len
: ::size_t
, advice
: ::c_int
) -> ::c_int
;
667 pub fn shm_unlink(name
: *const ::c_char
) -> ::c_int
;
670 all(target_os
= "macos", target_arch
= "x86_64"),
671 link_name
= "seekdir$INODE64"
674 all(target_os
= "macos", target_arch
= "x86"),
675 link_name
= "seekdir$INODE64$UNIX2003"
677 pub fn seekdir(dirp
: *mut ::DIR
, loc
: ::c_long
);
680 all(target_os
= "macos", target_arch
= "x86_64"),
681 link_name
= "telldir$INODE64"
684 all(target_os
= "macos", target_arch
= "x86"),
685 link_name
= "telldir$INODE64$UNIX2003"
687 pub fn telldir(dirp
: *mut ::DIR
) -> ::c_long
;
688 pub fn madvise(addr
: *mut ::c_void
, len
: ::size_t
, advice
: ::c_int
) -> ::c_int
;
691 all(target_os
= "macos", target_arch
= "x86"),
692 link_name
= "msync$UNIX2003"
694 #[cfg_attr(target_os = "netbsd", link_name = "__msync13")]
695 pub fn msync(addr
: *mut ::c_void
, len
: ::size_t
, flags
: ::c_int
) -> ::c_int
;
698 all(target_os
= "macos", target_arch
= "x86"),
699 link_name
= "recvfrom$UNIX2003"
706 addr
: *mut ::sockaddr
,
707 addrlen
: *mut ::socklen_t
,
709 pub fn mkstemps(template
: *mut ::c_char
, suffixlen
: ::c_int
) -> ::c_int
;
710 #[cfg_attr(target_os = "netbsd", link_name = "__futimes50")]
711 pub fn futimes(fd
: ::c_int
, times
: *const ::timeval
) -> ::c_int
;
712 pub fn nl_langinfo(item
: ::nl_item
) -> *mut ::c_char
;
715 all(target_os
= "macos", target_arch
= "x86"),
716 link_name
= "bind$UNIX2003"
718 pub fn bind(socket
: ::c_int
, address
: *const ::sockaddr
, address_len
: ::socklen_t
) -> ::c_int
;
721 all(target_os
= "macos", target_arch
= "x86"),
722 link_name
= "writev$UNIX2003"
724 pub fn writev(fd
: ::c_int
, iov
: *const ::iovec
, iovcnt
: ::c_int
) -> ::ssize_t
;
726 all(target_os
= "macos", target_arch
= "x86"),
727 link_name
= "readv$UNIX2003"
729 pub fn readv(fd
: ::c_int
, iov
: *const ::iovec
, iovcnt
: ::c_int
) -> ::ssize_t
;
732 all(target_os
= "macos", target_arch
= "x86"),
733 link_name
= "sendmsg$UNIX2003"
735 pub fn sendmsg(fd
: ::c_int
, msg
: *const ::msghdr
, flags
: ::c_int
) -> ::ssize_t
;
737 all(target_os
= "macos", target_arch
= "x86"),
738 link_name
= "recvmsg$UNIX2003"
740 pub fn recvmsg(fd
: ::c_int
, msg
: *mut ::msghdr
, flags
: ::c_int
) -> ::ssize_t
;
748 result
: *mut *mut ::group
,
751 all(target_os
= "macos", target_arch
= "x86"),
752 link_name
= "sigaltstack$UNIX2003"
754 #[cfg_attr(target_os = "netbsd", link_name = "__sigaltstack14")]
755 pub fn sigaltstack(ss
: *const stack_t
, oss
: *mut stack_t
) -> ::c_int
;
756 pub fn sem_close(sem
: *mut sem_t
) -> ::c_int
;
757 pub fn getdtablesize() -> ::c_int
;
759 name
: *const ::c_char
,
763 result
: *mut *mut ::group
,
766 all(target_os
= "macos", target_arch
= "x86"),
767 link_name
= "pthread_sigmask$UNIX2003"
769 pub fn pthread_sigmask(how
: ::c_int
, set
: *const sigset_t
, oldset
: *mut sigset_t
) -> ::c_int
;
770 pub fn sem_open(name
: *const ::c_char
, oflag
: ::c_int
, ...) -> *mut sem_t
;
771 pub fn getgrnam(name
: *const ::c_char
) -> *mut ::group
;
773 all(target_os
= "macos", target_arch
= "x86"),
774 link_name
= "pthread_cancel$UNIX2003"
776 pub fn pthread_cancel(thread
: ::pthread_t
) -> ::c_int
;
777 pub fn pthread_kill(thread
: ::pthread_t
, sig
: ::c_int
) -> ::c_int
;
778 pub fn sched_get_priority_min(policy
: ::c_int
) -> ::c_int
;
779 pub fn sched_get_priority_max(policy
: ::c_int
) -> ::c_int
;
780 pub fn sem_unlink(name
: *const ::c_char
) -> ::c_int
;
781 #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam_r50")]
783 name
: *const ::c_char
,
787 result
: *mut *mut passwd
,
789 #[cfg_attr(target_os = "netbsd", link_name = "__getpwuid_r50")]
795 result
: *mut *mut passwd
,
798 all(target_os
= "macos", target_arch
= "x86"),
799 link_name
= "sigwait$UNIX2003"
801 pub fn sigwait(set
: *const sigset_t
, sig
: *mut ::c_int
) -> ::c_int
;
802 pub fn pthread_atfork(
803 prepare
: ::Option
<unsafe extern "C" fn()>,
804 parent
: ::Option
<unsafe extern "C" fn()>,
805 child
: ::Option
<unsafe extern "C" fn()>,
807 pub fn getgrgid(gid
: ::gid_t
) -> *mut ::group
;
809 all(target_os
= "macos", target_arch
= "x86"),
810 link_name
= "popen$UNIX2003"
812 pub fn popen(command
: *const c_char
, mode
: *const c_char
) -> *mut ::FILE
;
815 pathname
: *const ::c_char
,
819 pub fn pthread_create(
820 native
: *mut ::pthread_t
,
821 attr
: *const ::pthread_attr_t
,
822 f
: extern "C" fn(*mut ::c_void
) -> *mut ::c_void
,
823 value
: *mut ::c_void
,
825 pub fn acct(filename
: *const ::c_char
) -> ::c_int
;
827 all(target_os
= "macos", target_arch
= "x86"),
828 link_name
= "wait4$UNIX2003"
831 all(target_os
= "freebsd", any(freebsd12
, freebsd11
, freebsd10
)),
832 link_name
= "wait4@FBSD_1.0"
836 status
: *mut ::c_int
,
838 rusage
: *mut ::rusage
,
841 all(target_os
= "macos", target_arch
= "x86"),
842 link_name
= "getitimer$UNIX2003"
844 pub fn getitimer(which
: ::c_int
, curr_value
: *mut ::itimerval
) -> ::c_int
;
846 all(target_os
= "macos", target_arch
= "x86"),
847 link_name
= "setitimer$UNIX2003"
851 new_value
: *const ::itimerval
,
852 old_value
: *mut ::itimerval
,
855 pub fn regcomp(preg
: *mut regex_t
, pattern
: *const ::c_char
, cflags
: ::c_int
) -> ::c_int
;
858 preg
: *const regex_t
,
859 input
: *const ::c_char
,
861 pmatch
: *mut regmatch_t
,
867 preg
: *const regex_t
,
868 errbuf
: *mut ::c_char
,
869 errbuf_size
: ::size_t
,
872 pub fn regfree(preg
: *mut regex_t
);
874 pub fn arc4random() -> u32;
875 pub fn arc4random_buf(buf
: *mut ::c_void
, size
: ::size_t
);
876 pub fn arc4random_uniform(l
: u32) -> u32;
878 pub fn drand48() -> ::c_double
;
879 pub fn erand48(xseed
: *mut ::c_ushort
) -> ::c_double
;
880 pub fn lrand48() -> ::c_long
;
881 pub fn nrand48(xseed
: *mut ::c_ushort
) -> ::c_long
;
882 pub fn mrand48() -> ::c_long
;
883 pub fn jrand48(xseed
: *mut ::c_ushort
) -> ::c_long
;
884 pub fn srand48(seed
: ::c_long
);
885 pub fn seed48(xseed
: *mut ::c_ushort
) -> *mut ::c_ushort
;
886 pub fn lcong48(p
: *mut ::c_ushort
);
890 if #[cfg(any(target_os = "macos", target_os = "ios", target_os = "watchos"))] {
892 pub use self::apple
::*;
893 } else if #[cfg(any(target_os = "openbsd", target_os = "netbsd"))] {
895 pub use self::netbsdlike
::*;
896 } else if #[cfg(any(target_os = "freebsd", target_os = "dragonfly"))] {
898 pub use self::freebsdlike
::*;