Added .pyc (Python comp files) to gitignore
[akaros.git] / kern / include / syscall.h
index a98bb3a..f4be19a 100644 (file)
@@ -4,7 +4,7 @@
 # error "This is ROS kernel header; user programs should not #include it"
 #endif
 
-#include <ros/syscall.h>
+#include <ros/common.h>
 #include <process.h>
 
 #define SYSTRACE_ON                                    0x01
 struct systrace_record {
        uint64_t                timestamp;
        uintreg_t               syscallno;
+       uintreg_t               arg0;
+       uintreg_t               arg1;
+       uintreg_t               arg2;
+       uintreg_t               arg3;
+       uintreg_t               arg4;
+       uintreg_t               arg5;
        int                             pid;
        uint32_t                coreid;
        uint32_t                vcoreid;
 };
 
-
-intreg_t syscall(struct proc *p, uintreg_t num, uintreg_t a1, uintreg_t a2,
-                 uintreg_t a3, uintreg_t a4, uintreg_t a5);
+/* Syscall table */
+typedef intreg_t (*syscall_t)(struct proc *, uintreg_t, uintreg_t, uintreg_t,
+                              uintreg_t, uintreg_t, uintreg_t);
+struct sys_table_entry {
+       syscall_t call;
+       char *name;
+};
+extern const struct sys_table_entry syscall_table[];
+extern const int max_syscall;
+/* Syscall invocation */
+void prep_syscalls(struct proc *p, struct syscall *sysc, unsigned int nr_calls);
+void run_local_syscall(struct syscall *sysc);
+intreg_t syscall(struct proc *p, uintreg_t sc_num, uintreg_t a0, uintreg_t a1,
+                 uintreg_t a2, uintreg_t a3, uintreg_t a4, uintreg_t a5);
+void set_errno(int errno);
+int get_errno(void);
+void unset_errno(void);
+void set_errstr(char *errstr, ...);
+char *current_errstr(void);
+struct errbuf *get_cur_errbuf(void);
+void set_cur_errbuf(struct errbuf *ebuf);
+char *get_cur_genbuf(void);
+void __signal_syscall(struct syscall *sysc, struct proc *p);
 
 /* Tracing functions */
 void systrace_start(bool silent);