blob: 133b5bf721035d96e4320dfea17a95e5c2802f78 (
plain)
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
|
// libc bindings:
// https://www.man7.org/linux/man-pages/man2/<libc call>.2.html
// The buffers are int-versions of zero-terminated strings.
// int buf = aryu8.str0("some_file");
// buf mode perm-> fd
{ i64 i32 i32 -> i32 } open = "C";
// buf perm -> fd
{ i64 i32 -> i32 } creat = "C";
// fd buf len -> len
{ i32 i64 u32 -> i32 } write = "C";
// fd buf len -> len
{ i32 i64 u32 -> i32 } read = "C";
// fd -> err
{ i32 -> i32 } close = "C";
// path -> err
{ i64 -> i32 } unlink = "C";
i32 O_RDONLY = 0;
i32 O_WRONLY = 1;
i32 O_RDWR = 2;
i32 O_CREAT = 512; // 02000 on x86_64-pc-cygwin
i32 O_TRUNC = 1024; // 04000 on x86_64-pc-cygwin
i32 STDIN = 0;
i32 STDOUT = 1;
i32 STDERR = 2;
// status
{ i32 -> i32 } _exit = "C";
// Error return from many native calls
i32 errno = "C";
// addr len prot flags fd off -> void*
{ i64 i64 i32 i32 i32 i32 -> i64 } mmap = "C";
// mmap flags
i32 PROT_EXEC = 4;
i32 PROT_READ = 1;
i32 PROT_WRITE= 2;
i32 PROT_NONE = 0;
i32 MAP_PRIVATE = 2;
i32 MAP_ANON = 32;
|