1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
use core::ffi;
use super::raw;
use super::types::*;
#[cfg(have_syscall = "close")]
#[inline(always)]
pub unsafe fn close(fd: int) -> int {
raw::syscall1(raw::CLOSE, fd as raw::V) as int
}
#[cfg(have_syscall = "creat")]
#[inline(always)]
pub unsafe fn creat(pathname: *const char, mode: mode_t) -> int {
raw::syscall2(raw::CREAT, pathname as raw::V, mode as raw::V) as int
}
#[cfg(have_syscall = "getpid")]
#[inline(always)]
pub unsafe fn getpid() -> pid_t {
raw::syscall0(raw::GETPID) as pid_t
}
#[cfg(have_syscall = "open")]
#[inline(always)]
pub unsafe fn open(pathname: *const char, flags: int, mode: mode_t) -> int {
raw::syscall3(
raw::OPEN,
pathname as raw::V,
flags as raw::V,
mode as raw::V,
) as int
}
#[cfg(have_syscall = "read")]
#[inline(always)]
pub unsafe fn read(fd: int, buf: *mut ffi::c_void, count: size_t) -> ssize_t {
raw::syscall3(raw::READ, fd as raw::V, buf as raw::V, count as raw::V) as ssize_t
}
#[cfg(have_syscall = "sync")]
#[inline(always)]
pub unsafe fn sync() {
raw::syscall0(raw::SYNC);
}
#[cfg(have_syscall = "syncfs")]
#[inline(always)]
pub unsafe fn syncfs(fd: int) -> int {
raw::syscall1(raw::SYNCFS, fd as raw::V) as int
}
#[cfg(have_syscall = "lseek")]
#[inline(always)]
pub unsafe fn lseek(fd: int, offset: off_t, whence: int) -> off_t {
raw::syscall3(raw::LSEEK, fd as raw::V, offset as raw::V, whence as raw::V) as off_t
}
#[cfg(have_syscall = "write")]
#[inline(always)]
pub unsafe fn write(fd: int, buf: *const ffi::c_void, count: size_t) -> ssize_t {
raw::syscall3(raw::WRITE, fd as raw::V, buf as raw::V, count as raw::V) as ssize_t
}
#[cfg(have_syscall = "_llseek")]
#[inline(always)]
pub unsafe fn _llseek(
fd: int,
offset_high: ffi::c_ulong,
offset_low: ffi::c_ulong,
result: *mut loff_t,
whence: uint,
) -> int {
raw::syscall5(
raw::_LLSEEK,
fd as raw::V,
offset_high as raw::V,
offset_low as raw::V,
result as raw::V,
whence as raw::V,
) as int
}