Skip to content

Commit 439a4d7

Browse files
committed
Auto merge of #608 - Uplifting:unix, r=alexcrichton
add a number of linux syscalls vfork, wait4, getresuid, getresgid, personality, vhangup, swapon, swapoff, getdomainname, setdomainname, iopl, ioperm
2 parents 5e208ed + 4e0e06e commit 439a4d7

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

libc-test/build.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ fn main() {
181181
cfg.header("sys/fsuid.h");
182182
cfg.header("pty.h");
183183
cfg.header("shadow.h");
184+
if x86_64 {
185+
cfg.header("sys/io.h");
186+
}
184187
}
185188

186189
if linux || android {
@@ -194,6 +197,8 @@ fn main() {
194197
cfg.header("sys/sendfile.h");
195198
cfg.header("sys/vfs.h");
196199
cfg.header("sys/syscall.h");
200+
cfg.header("sys/personality.h");
201+
cfg.header("sys/swap.h");
197202
if !uclibc {
198203
cfg.header("sys/sysinfo.h");
199204
}

src/unix/notbsd/linux/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,10 @@ pub const PR_CAP_AMBIENT_RAISE: ::c_int = 2;
704704
pub const PR_CAP_AMBIENT_LOWER: ::c_int = 3;
705705
pub const PR_CAP_AMBIENT_CLEAR_ALL: ::c_int = 4;
706706

707+
pub const ITIMER_REAL: ::c_int = 0;
708+
pub const ITIMER_VIRTUAL: ::c_int = 1;
709+
pub const ITIMER_PROF: ::c_int = 2;
710+
707711
pub const XATTR_CREATE: ::c_int = 0x1;
708712
pub const XATTR_REPLACE: ::c_int = 0x2;
709713

@@ -1006,6 +1010,9 @@ extern {
10061010
flags: ::c_int) -> ::ssize_t;
10071011
pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int)
10081012
-> ::ssize_t;
1013+
pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int;
1014+
pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int;
1015+
pub fn vhangup() -> ::c_int;
10091016
}
10101017

10111018
extern {

src/unix/notbsd/linux/other/b64/x86_64.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,4 +574,7 @@ extern {
574574
argc: ::c_int, ...);
575575
pub fn swapcontext(uocp: *mut ucontext_t,
576576
ucp: *const ucontext_t) -> ::c_int;
577+
pub fn iopl(level: ::c_int) -> ::c_int;
578+
pub fn ioperm(from: ::c_ulong, num: ::c_ulong,
579+
turn_on: ::c_int) -> ::c_int;
577580
}

src/unix/notbsd/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -989,9 +989,19 @@ extern {
989989
pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int;
990990
pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int;
991991
pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int;
992+
pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t,
993+
suid: *mut ::uid_t) -> ::c_int;
994+
pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t,
995+
sgid: *mut ::gid_t) -> ::c_int;
996+
pub fn personality(persona: ::c_ulong) -> ::c_int;
997+
pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int;
998+
pub fn swapoff(puath: *const ::c_char) -> ::c_int;
992999
pub fn acct(filename: *const ::c_char) -> ::c_int;
9931000
pub fn brk(addr: *mut ::c_void) -> ::c_int;
9941001
pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;
1002+
pub fn vfork() -> ::pid_t;
1003+
pub fn wait4(pid: ::pid_t, status: *mut ::c_int, options: ::c_int,
1004+
rusage: *mut ::rusage) -> ::pid_t;
9951005
}
9961006

9971007
cfg_if! {

0 commit comments

Comments
 (0)