summaryrefslogtreecommitdiff
path: root/kernel/cpu/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/cpu/syscall.c')
-rw-r--r--kernel/cpu/syscall.c81
1 files changed, 60 insertions, 21 deletions
diff --git a/kernel/cpu/syscall.c b/kernel/cpu/syscall.c
index 9c3dde0..0dd2356 100644
--- a/kernel/cpu/syscall.c
+++ b/kernel/cpu/syscall.c
@@ -16,6 +16,7 @@
#include <network/tcp.h>
#include <network/udp.h>
#include <poll.h>
+#include <queue.h>
#include <random.h>
#include <socket.h>
#include <string.h>
@@ -553,29 +554,67 @@ int syscall_fcntl(int fd, int cmd, int arg) {
return 0;
}
+int syscall_queue_create(void) {
+ return queue_create();
+}
+
+int syscall_queue_mod_entries(int fd, int flag, struct queue_entry *entries,
+ int num_entries) {
+ return queue_mod_entries(fd, flag, entries, num_entries);
+}
+
+int syscall_queue_wait(int fd, struct queue_entry *events, int num_events) {
+ return queue_wait(fd, events, num_events);
+}
+
int (*syscall_functions[])() = {
- (void(*))syscall_open, (void(*))syscall_read,
- (void(*))syscall_write, (void(*))syscall_pread,
- (void(*))syscall_pwrite, (void(*))syscall_fork,
- (void(*))syscall_exec, (void(*))syscall_getpid,
- (void(*))syscall_exit, (void(*))syscall_wait,
- (void(*))syscall_brk, (void(*))syscall_sbrk,
- (void(*))syscall_pipe, (void(*))syscall_dup2,
- (void(*))syscall_close, (void(*))syscall_openpty,
- (void(*))syscall_poll, (void(*))syscall_mmap,
- (void(*))syscall_accept, (void(*))syscall_bind,
- (void(*))syscall_socket, (void(*))syscall_shm_open,
- (void(*))syscall_ftruncate, (void(*))syscall_fstat,
- (void(*))syscall_msleep, (void(*))syscall_uptime,
- (void(*))syscall_mkdir, (void(*))syscall_recvfrom,
- (void(*))syscall_sendto, (void(*))syscall_kill,
- (void(*))syscall_sigaction, (void(*))syscall_chdir,
- (void(*))syscall_getcwd, (void(*))syscall_isatty,
- (void(*))syscall_randomfill, (void(*))syscall_munmap,
- (void(*))syscall_open_process, (void(*))syscall_lseek,
- (void(*))syscall_connect, (void(*))syscall_setsockopt,
- (void(*))syscall_getpeername, (void(*))syscall_fcntl,
+ (void(*))syscall_open,
+ (void(*))syscall_read,
+ (void(*))syscall_write,
+ (void(*))syscall_pread,
+ (void(*))syscall_pwrite,
+ (void(*))syscall_fork,
+ (void(*))syscall_exec,
+ (void(*))syscall_getpid,
+ (void(*))syscall_exit,
+ (void(*))syscall_wait,
+ (void(*))syscall_brk,
+ (void(*))syscall_sbrk,
+ (void(*))syscall_pipe,
+ (void(*))syscall_dup2,
+ (void(*))syscall_close,
+ (void(*))syscall_openpty,
+ (void(*))syscall_poll,
+ (void(*))syscall_mmap,
+ (void(*))syscall_accept,
+ (void(*))syscall_bind,
+ (void(*))syscall_socket,
+ (void(*))syscall_shm_open,
+ (void(*))syscall_ftruncate,
+ (void(*))syscall_fstat,
+ (void(*))syscall_msleep,
+ (void(*))syscall_uptime,
+ (void(*))syscall_mkdir,
+ (void(*))syscall_recvfrom,
+ (void(*))syscall_sendto,
+ (void(*))syscall_kill,
+ (void(*))syscall_sigaction,
+ (void(*))syscall_chdir,
+ (void(*))syscall_getcwd,
+ (void(*))syscall_isatty,
+ (void(*))syscall_randomfill,
+ (void(*))syscall_munmap,
+ (void(*))syscall_open_process,
+ (void(*))syscall_lseek,
+ (void(*))syscall_connect,
+ (void(*))syscall_setsockopt,
+ (void(*))syscall_getpeername,
+ (void(*))syscall_fcntl,
(void(*))syscall_clock_gettime,
+ (void(*))syscall_queue_create,
+ (void(*))syscall_queue_mod_entries,
+ (void(*))syscall_queue_wait,
+
};
void int_syscall(reg_t *r);