diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2023-02-15 15:07:56 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2023-02-15 15:07:56 +0100 |
| commit | 1645da679ce50b13b6f19a062eabd2d869762a07 (patch) | |
| tree | 37e19f84000df69bb2a7d88a2f3db800ead6a85a /lib/sys | |
| parent | 3a369468f7daae5b3a60feaa50c6050b240be6d4 (diff) | |
add framebuffer image support
Diffstat (limited to 'lib/sys')
| -rw-r--r-- | lib/sys/creat.h | 2 | ||||
| -rw-r--r-- | lib/sys/ioctl.h | 2 | ||||
| -rw-r--r-- | lib/sys/mkdir.h | 2 | ||||
| -rw-r--r-- | lib/sys/mknod.h | 2 | ||||
| -rw-r--r-- | lib/sys/mmap.h | 10 | ||||
| -rw-r--r-- | lib/sys/mount.h | 2 | ||||
| -rw-r--r-- | lib/sys/read.h | 3 | ||||
| -rw-r--r-- | lib/sys/rmdir.h | 2 | ||||
| -rw-r--r-- | lib/sys/sync.h | 2 | ||||
| -rw-r--r-- | lib/sys/syscalls.h | 2 | ||||
| -rw-r--r-- | lib/sys/types.h | 21 | ||||
| -rw-r--r-- | lib/sys/unlink.h | 2 | ||||
| -rw-r--r-- | lib/sys/unmount.h | 2 | ||||
| -rw-r--r-- | lib/sys/wait4.h | 6 |
14 files changed, 44 insertions, 16 deletions
diff --git a/lib/sys/creat.h b/lib/sys/creat.h index 9c6e492..b8c4650 100644 --- a/lib/sys/creat.h +++ b/lib/sys/creat.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int creat(const char *pathname, unsigned int mode) +static int creat(const char *pathname, unsigned int mode) { return syscall(CREAT, pathname, mode); } diff --git a/lib/sys/ioctl.h b/lib/sys/ioctl.h index 4bf73f7..b3358d4 100644 --- a/lib/sys/ioctl.h +++ b/lib/sys/ioctl.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int ioctl(unsigned int fd, unsigned int cmd, void *arg) +static int ioctl(unsigned int fd, unsigned int cmd, void *arg) { return syscall(IOCTL, fd, cmd, arg); } diff --git a/lib/sys/mkdir.h b/lib/sys/mkdir.h index 2de3b01..2505c97 100644 --- a/lib/sys/mkdir.h +++ b/lib/sys/mkdir.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int mkdir(const char *pathname, unsigned int mode) +static int mkdir(const char *pathname, unsigned int mode) { return syscall(MKDIR, pathname, mode); } diff --git a/lib/sys/mknod.h b/lib/sys/mknod.h index b51c4ef..89efad9 100644 --- a/lib/sys/mknod.h +++ b/lib/sys/mknod.h @@ -5,7 +5,7 @@ #include "types.h" -int mknod(const char *filename, mode_t mode, unsigned int dev) +static int mknod(const char *filename, mode_t mode, unsigned int dev) { return syscall(MKNOD, filename, mode, dev); } diff --git a/lib/sys/mmap.h b/lib/sys/mmap.h index d555e68..f16493e 100644 --- a/lib/sys/mmap.h +++ b/lib/sys/mmap.h @@ -1,6 +1,7 @@ #ifndef MMAP_H #define MMAP_H #include "syscalls.h" +#include "sizes.h" #define PROT_READ 0x1 #define PROT_WRITE 0x2 @@ -10,9 +11,14 @@ #define MAP_SHARED 0x1 #define MAP_PRIVATE 0x2 -static void * mmap(void * addr, unsigned long size, int prot, int flags, int fd, int offset) +static void *mmap(void * addr, u64 size, u64 prot, u64 flags, u64 fd, u64 offset) { - return syscall(MMAP, size, prot, flags, fd, offset); + __asm__( + "mov $9, %rax\n" + "mov %rcx, %r10\n" + "syscall\n" + ); + //return syscall(MMAP, addr, size, prot, flags, fd, offset); } #endif diff --git a/lib/sys/mount.h b/lib/sys/mount.h index 6451b22..a5dd505 100644 --- a/lib/sys/mount.h +++ b/lib/sys/mount.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int mount(const char *src, const char *target, const char *type, unsigned long flags, const void *data) +static int mount(const char *src, const char *target, const char *type, unsigned long flags, const void *data) { return syscall(MOUNT, src, target, type, flags, data); } diff --git a/lib/sys/read.h b/lib/sys/read.h index 61e5576..b7d0851 100644 --- a/lib/sys/read.h +++ b/lib/sys/read.h @@ -1,8 +1,9 @@ #ifndef READ_H #define READ_H #include "syscalls.h" +#include "sizes.h" -static int read(unsigned int fd, char * buf, unsigned long count) +static u64 read(unsigned int fd, char * buf, unsigned long count) { return syscall(READ, fd, buf, count, 0, 0); } diff --git a/lib/sys/rmdir.h b/lib/sys/rmdir.h index 1656ee9..70712c1 100644 --- a/lib/sys/rmdir.h +++ b/lib/sys/rmdir.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int rmdir(const char *pathname) +static int rmdir(const char *pathname) { return syscall(RMDIR, pathname); } diff --git a/lib/sys/sync.h b/lib/sys/sync.h index fe61454..0039801 100644 --- a/lib/sys/sync.h +++ b/lib/sys/sync.h @@ -3,7 +3,7 @@ #include "syscalls.h" -void sync() +static void sync() { syscall(SYNC); } diff --git a/lib/sys/syscalls.h b/lib/sys/syscalls.h index 50e8a4f..4b1341a 100644 --- a/lib/sys/syscalls.h +++ b/lib/sys/syscalls.h @@ -7,7 +7,7 @@ __asm__ ( "mov %rsi, %rdi\n" "mov %rdx, %rsi\n" "mov %rcx, %rdx\n" - "mov %r8, %rcx\n" + "mov %r8, %r10\n" "mov %r9, %r8\n" "mov 8(%rsp), %r9\n" "syscall\n" diff --git a/lib/sys/types.h b/lib/sys/types.h index de8ce80..f9e3440 100644 --- a/lib/sys/types.h +++ b/lib/sys/types.h @@ -2,12 +2,32 @@ #define TYPES_H #include "sizes.h" +#include "time.h" #define BUFSIZ 16384 typedef u64 dev_t; typedef u32 mode_t; +struct rusage { + struct timespec ru_utime; + struct timespec ru_stime; + long int ru_maxrss; + long int ru_ixrss; + long int ru_idrss; + long int ru_isrss; + long int ru_minflt; + long int ru_majflt; + long int ru_nswap; + long int ru_inblock; + long int ru_oublock; + long int ru_msgsnd; + long int ru_msgrcv; + long int ru_nsignals; + long int ru_nvcsw; + long int ru_nivcsw; +}; + static dev_t inline device(dev_t major, dev_t minor) { dev_t dev; @@ -18,4 +38,5 @@ static dev_t inline device(dev_t major, dev_t minor) return dev; } + #endif diff --git a/lib/sys/unlink.h b/lib/sys/unlink.h index a0f66e3..7a143b0 100644 --- a/lib/sys/unlink.h +++ b/lib/sys/unlink.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int unlink(const char *pathname) +static int unlink(const char *pathname) { return syscall(UNLINK, pathname); } diff --git a/lib/sys/unmount.h b/lib/sys/unmount.h index 1331e65..808c774 100644 --- a/lib/sys/unmount.h +++ b/lib/sys/unmount.h @@ -3,7 +3,7 @@ #include "syscalls.h" -int unmount(char *pathname, int flags) +static int unmount(char *pathname, int flags) { return syscall(UMOUNT2, pathname, flags); } diff --git a/lib/sys/wait4.h b/lib/sys/wait4.h index e70539e..673d259 100644 --- a/lib/sys/wait4.h +++ b/lib/sys/wait4.h @@ -2,11 +2,11 @@ #define WAIT4_H #include "syscall.h" -#include "sizes.h" +#include "types.h" -int wait4(u64 pid, int *stat_addr, int options) +static int wait4(u64 pid, int *stat_addr, int options, struct rusage *usage) { - return syscall(WAIT4, pid, stat_addr, options); + return syscall(WAIT4, pid, stat_addr, options, usage); } #endif |