sys_exec() uses the FS, sys_proc_create takes args
[akaros.git] / user / parlib / syscall.c
index aa24fa7..ce166b9 100644 (file)
@@ -62,14 +62,6 @@ ssize_t sys_serial_read(void* buf, size_t len)
        return ros_syscall(SYS_serial_read, buf, len, 0, 0, 0);
 }
 
-//Run a binary loaded at the specificed address with the specified arguments
-ssize_t sys_run_binary(void* binary_buf, size_t len,
-                       const procinfo_t* pi, size_t num_colors) 
-{
-       return ros_syscall(SYS_run_binary, binary_buf, len,
-                                       pi,num_colors,0);
-}
-
 //Write a buffer over ethernet
 ssize_t sys_eth_write(void* buf, size_t len) 
 {
@@ -94,19 +86,24 @@ ssize_t sys_resource_req(int type, size_t amt_max, size_t amt_min, uint32_t flag
        return ros_syscall(SYS_resource_req, type, amt_max, amt_min, flags, 0);
 }
 
-void sys_reboot()
+void sys_reboot(void)
 {
        ros_syscall(SYS_reboot,0,0,0,0,0);
 }
 
-void sys_yield()
+void sys_yield(bool being_nice)
 {
-       ros_syscall(SYS_yield,0,0,0,0,0);
+       ros_syscall(SYS_yield, being_nice, 0, 0, 0, 0);
 }
 
-int sys_proc_create(char* path)
+int sys_proc_create(char *path, size_t path_l, char *argv[], char *envp[])
 {
-       return ros_syscall(SYS_proc_create, (uintreg_t)path, 0, 0, 0, 0);
+       struct procinfo pi;
+       if (procinfo_pack_args(&pi, argv, envp)) {
+               errno = ENOMEM;
+               return -1;
+       }
+       return ros_syscall(SYS_proc_create, path, path_l, &pi, 0, 0);
 }
 
 int sys_proc_run(int pid)
@@ -134,3 +131,18 @@ void *CT(length) sys_mmap(void *SNT addr, size_t length, int prot, int flags,
                                               prot, &extra_args, 0));
 }
 
+int sys_notify(int pid, unsigned int notif, struct notif_event *ne)
+{
+       return ros_syscall(SYS_notify, pid, notif, ne, 0, 0);
+}
+
+int sys_self_notify(uint32_t vcoreid, unsigned int notif,
+                    struct notif_event *ne)
+{
+       return ros_syscall(SYS_self_notify, vcoreid, notif, ne, 0, 0);
+}
+
+int sys_halt_core(unsigned int usec)
+{
+       return ros_syscall(SYS_halt_core, usec, 0, 0, 0, 0);
+}