aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
Diffstat (limited to 'std')
-rw-r--r--std/mem.zig22
-rw-r--r--std/syscall.zig10
2 files changed, 6 insertions, 26 deletions
diff --git a/std/mem.zig b/std/mem.zig
deleted file mode 100644
index a10a6c9569..0000000000
--- a/std/mem.zig
+++ /dev/null
@@ -1,22 +0,0 @@
-import "syscall.zig";
-import "std.zig";
-import "errno.zig";
-
-pub fn malloc(bytes: isize) -> ?&u8 {
- if (bytes > 4096) {
- %%stderr.printf("TODO alloc sizes > 4096B\n");
- return null;
- }
-
- const result = mmap(isize(0), 4096, MMAP_PROT_READ|MMAP_PROT_WRITE, MMAP_MAP_ANON|MMAP_MAP_SHARED, -1, 0);
-
- if (-4096 < result && result <= 0) {
- null
- } else {
- (&u8)(result)
- }
-}
-
-pub fn free(ptr: &u8) {
- munmap(isize(ptr), 4096);
-}
diff --git a/std/syscall.zig b/std/syscall.zig
index 669fb2b8c0..00a44832e3 100644
--- a/std/syscall.zig
+++ b/std/syscall.zig
@@ -250,12 +250,14 @@ fn i386_syscall6(number: isize, arg1: isize, arg2: isize, arg3: isize, arg4: isi
[arg6] "{ebp}" (arg6))
}
-pub fn mmap(address: isize, length: isize, prot: isize, flags: isize, fd: isize, offset: isize) -> isize {
- syscall6(SYS_mmap, address, length, prot, flags, fd, offset)
+pub fn mmap(address: ?&u8, length: isize, prot: isize, flags: isize, fd: isize, offset: isize) -> isize {
+ // TODO ability to cast maybe pointer to isize
+ const addr = if (const unwrapped ?= address) isize(unwrapped) else 0;
+ syscall6(SYS_mmap, addr, length, prot, flags, fd, offset)
}
-pub fn munmap(address: isize, length: isize) -> isize {
- syscall2(SYS_munmap, address, length)
+pub fn munmap(address: &u8, length: isize) -> isize {
+ syscall2(SYS_munmap, isize(address), length)
}
pub fn read(fd: isize, buf: &u8, count: isize) -> isize {