diff --git a/libc-test/build.rs b/libc-test/build.rs index 48dd7c524fc9..e82740bf9e81 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -5411,6 +5411,7 @@ fn test_aix(target: &str) { "net/if_dl.h", "netdb.h", "netinet/tcp.h", + "netinet/sctp.h", "pthread.h", "pwd.h", "rpcsvc/mount.h", @@ -5644,6 +5645,13 @@ fn test_aix(target: &str) { "setdomainname" | "settimeofday" | "statfs" | "statfs64" | "statx" | "swapoff" | "swapon" | "utmpname" | "setgroups" => true, + // These non-POSIX functions are guarded by the _KERNEL macro in the AIX headers. + "recvmmsg" | "sendmmsg" | "sethostid" | "sethostname" | "splice" => true, + + // 'mount' is available in the system's libc.a and has a man page, but it is + // not declared in the AIX headers." + "mount" => true, + _ => false, } }); diff --git a/libc-test/semver/aix.txt b/libc-test/semver/aix.txt index 73163c854f30..c8e0fe1c0d3e 100644 --- a/libc-test/semver/aix.txt +++ b/libc-test/semver/aix.txt @@ -2133,6 +2133,7 @@ mmap mmsghdr mntent mode_t +mount mprotect mq_attr mq_close @@ -2363,6 +2364,7 @@ realloc realpath recv recvfrom +recvmmsg recvmsg regcomp regerror @@ -2393,6 +2395,9 @@ sched_rr_get_interval sched_setparam sched_setscheduler sched_yield +sctp_assoc_t +sctp_opt_info +sctp_peeloff seed48 seekdir select @@ -2413,6 +2418,7 @@ semget semop send send_file +sendmmsg sendmsg sendto servent @@ -2425,6 +2431,8 @@ seteuid setgid setgrent setgroups +sethostid +sethostname setitimer setlocale setlogmask @@ -2484,6 +2492,7 @@ socket socketpair socklen_t speed_t +splice sprintf srand srand48 diff --git a/src/unix/aix/mod.rs b/src/unix/aix/mod.rs index b42d0b6d2510..6110561079b5 100644 --- a/src/unix/aix/mod.rs +++ b/src/unix/aix/mod.rs @@ -49,6 +49,7 @@ pub type rlim64_t = c_ulonglong; pub type sem_t = c_int; pub type pollset_t = c_int; +pub type sctp_assoc_t = c_uint; pub type pthread_rwlockattr_t = *mut c_void; pub type pthread_condattr_t = *mut c_void; @@ -3027,6 +3028,7 @@ extern "C" { pub fn mincore(addr: caddr_t, len: size_t, vec: *mut c_char) -> c_int; pub fn mkfifoat(dirfd: c_int, pathname: *const c_char, mode: mode_t) -> c_int; pub fn mknodat(dirfd: c_int, pathname: *const c_char, mode: mode_t, dev: dev_t) -> c_int; + pub fn mount(device: *const c_char, path: *const c_char, flags: c_int) -> c_int; pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int; pub fn mq_close(mqd: crate::mqd_t) -> c_int; pub fn mq_getattr(mqd: crate::mqd_t, attr: *mut crate::mq_attr) -> c_int; @@ -3196,6 +3198,13 @@ extern "C" { addr: *mut crate::sockaddr, addrlen: *mut crate::socklen_t, ) -> ssize_t; + pub fn recvmmsg( + sockfd: c_int, + msgvec: *mut crate::mmsghdr, + vlen: c_uint, + flags: c_int, + timeout: *mut crate::timespec, + ) -> c_int; // AIX header socket.h maps recvmsg() to nrecvmsg(). #[link_name = "nrecvmsg"] pub fn recvmsg(sockfd: c_int, msg: *mut msghdr, flags: c_int) -> ssize_t; @@ -3226,6 +3235,14 @@ extern "C" { policy: c_int, param: *const crate::sched_param, ) -> c_int; + pub fn sctp_opt_info( + sd: c_int, + id: crate::sctp_assoc_t, + opt: c_int, + arg_size: *mut c_void, + size: *mut size_t, + ) -> c_int; + pub fn sctp_peeloff(s: c_int, id: *mut c_uint) -> c_int; pub fn seed48(xseed: *mut c_ushort) -> *mut c_ushort; pub fn seekdir(dirp: *mut crate::DIR, loc: c_long); pub fn sem_close(sem: *mut sem_t) -> c_int; @@ -3239,6 +3256,7 @@ extern "C" { pub fn semget(key: crate::key_t, nsems: c_int, semflag: c_int) -> c_int; pub fn semop(semid: c_int, sops: *mut sembuf, nsops: size_t) -> c_int; pub fn send_file(socket: *mut c_int, iobuf: *mut sf_parms, flags: c_uint) -> ssize_t; + pub fn sendmmsg(sockfd: c_int, msgvec: *mut mmsghdr, vlen: c_uint, flags: c_int) -> c_int; // AIX header socket.h maps sendmsg() to nsendmsg(). #[link_name = "nsendmsg"] pub fn sendmsg(sockfd: c_int, msg: *const msghdr, flags: c_int) -> ssize_t; @@ -3246,6 +3264,8 @@ extern "C" { pub fn setdomainname(name: *const c_char, len: c_int) -> c_int; pub fn setgroups(ngroups: c_int, ptr: *const crate::gid_t) -> c_int; pub fn setgrent(); + pub fn sethostid(hostid: c_int) -> c_int; + pub fn sethostname(name: *const c_char, len: c_int) -> c_int; pub fn setmntent(filename: *const c_char, ty: *const c_char) -> *mut crate::FILE; pub fn setpriority(which: c_int, who: id_t, priority: c_int) -> c_int; pub fn setpwent(); @@ -3274,6 +3294,7 @@ extern "C" { pub fn shmget(key: key_t, size: size_t, shmflg: c_int) -> c_int; pub fn shm_open(name: *const c_char, oflag: c_int, mode: mode_t) -> c_int; pub fn shm_unlink(name: *const c_char) -> c_int; + pub fn splice(socket1: c_int, socket2: c_int, flags: c_int) -> c_int; pub fn srand(seed: c_uint); pub fn srand48(seed: c_long); pub fn stat64(path: *const c_char, buf: *mut stat64) -> c_int;