Added an asynchronous sys_null_async() call and wrappers
[akaros.git] / lib / syscall.c
index 0123620..7f1faf8 100644 (file)
@@ -16,7 +16,7 @@ syscall(int num, uint32_t a1, uint32_t a2, uint32_t a3, uint32_t a4, uint32_t a5
        // The "volatile" tells the assembler not to optimize
        // this instruction away just because we don't use the
        // return value.
-       // 
+       //
        // The last clause tells the assembler that this can
        // potentially change the condition codes and arbitrary
        // memory locations.
@@ -31,7 +31,7 @@ syscall(int num, uint32_t a1, uint32_t a2, uint32_t a3, uint32_t a4, uint32_t a5
                  "D" (a4),
                  "S" (a5)
                : "cc", "memory");
-       
+
        return ret;
 }
 
@@ -71,6 +71,14 @@ error_t waiton_syscall(syscall_desc_t* desc, syscall_rsp_t* rsp)
        return 0;
 }
 
+void sys_null_async(syscall_desc_t* desc)
+{
+       syscall_req_t syscall = {SYS_null, 0, {[0 ... (NUM_SYS_ARGS-1)] 0}};
+       desc->cleanup = NULL;
+       desc->data = NULL;
+       async_syscall(&syscall, desc);
+}
+
 void sys_cputs_async(const char *s, size_t len, syscall_desc_t* desc,
                      void (*cleanup_handler)(void*), void* cleanup_data)
 {