summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/syscall.h1
-rw-r--r--sys/syscall_message.c16
2 files changed, 17 insertions, 0 deletions
diff --git a/sys/syscall.h b/sys/syscall.h
index ab13118..461b104 100644
--- a/sys/syscall.h
+++ b/sys/syscall.h
@@ -58,5 +58,6 @@ int _syscall_handle_objdir(syscall_context_t *ctx);
int _syscall_handle_untyped(syscall_context_t *ctx);
int _syscall_handle_pagedir(syscall_context_t *ctx);
int _syscall_handle_initrd_file(syscall_context_t *ctx);
+int _syscall_handle_message(syscall_context_t *ctx);
#endif
diff --git a/sys/syscall_message.c b/sys/syscall_message.c
new file mode 100644
index 0000000..5edf33f
--- /dev/null
+++ b/sys/syscall_message.c
@@ -0,0 +1,16 @@
+#include "api/error.h"
+#include "sys/message.h"
+#include "sys/syscall.h"
+
+int
+_syscall_handle_message(syscall_context_t *ctx)
+{
+ switch(ctx->header->callid) {
+ case SYSCALL_OBJDIR_OBJTYPE:
+ if(ctx->target.permissions & SYSCALL_PERM_OBJDIR_OBJTYPE)
+ return message_len(ctx->message.obj);
+ return -EPERM;
+ default:
+ return -EBADCALL;
+ }
+}