aboutsummaryrefslogtreecommitdiff
path: root/lib/sys
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-02-15 15:07:56 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2023-02-15 15:07:56 +0100
commit1645da679ce50b13b6f19a062eabd2d869762a07 (patch)
tree37e19f84000df69bb2a7d88a2f3db800ead6a85a /lib/sys
parent3a369468f7daae5b3a60feaa50c6050b240be6d4 (diff)
add framebuffer image support
Diffstat (limited to 'lib/sys')
-rw-r--r--lib/sys/creat.h2
-rw-r--r--lib/sys/ioctl.h2
-rw-r--r--lib/sys/mkdir.h2
-rw-r--r--lib/sys/mknod.h2
-rw-r--r--lib/sys/mmap.h10
-rw-r--r--lib/sys/mount.h2
-rw-r--r--lib/sys/read.h3
-rw-r--r--lib/sys/rmdir.h2
-rw-r--r--lib/sys/sync.h2
-rw-r--r--lib/sys/syscalls.h2
-rw-r--r--lib/sys/types.h21
-rw-r--r--lib/sys/unlink.h2
-rw-r--r--lib/sys/unmount.h2
-rw-r--r--lib/sys/wait4.h6
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