[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] kernel2: Rueckgabewerte des RPC-Syscall aktualisiert



! kernel2: Vor einer Weile wurde kernel1 und der Userspace in Hinsicht
  auf die Rueckgabewerte des RPC-Syscall geaendert (-errno statt -1). Da
  hat dazu gefuerhrt, dass unter kernel2 blockierte RPCs nicht
  wiederholt wurden. Mit -EAGAIN geht das wieder und alles ist gut.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/kernel2/src/syscalls/rpc.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/kernel2/src/syscalls/rpc.c b/src/kernel2/src/syscalls/rpc.c
index 688c4ea..da4cbd1 100644
--- a/src/kernel2/src/syscalls/rpc.c
+++ b/src/kernel2/src/syscalls/rpc.c
@@ -36,6 +36,7 @@
 #include <types.h>
 #include <stdint.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #include "kernel.h"
 #include "syscall.h"
@@ -135,7 +136,7 @@ int syscall_fastrpc(pid_t callee_pid, size_t metadata_size, void* metadata,
     if (!process) {
         // FIXME
         // abort_task("RPC zu nicht vorhandenem Prozess");
-        return -1;
+        return -ESRCH;
     }
 
     callee = list_get_element_at(process->threads, 0);
@@ -146,11 +147,11 @@ int syscall_fastrpc(pid_t callee_pid, size_t metadata_size, void* metadata,
     if (metadata_size + data_size > 8 * PAGE_SIZE) {
         // FIXME
         // abort_task("RPC-Datenblock zu gross: %d Bytes", data_size);
-        return -1;
+        return -EINVAL;
     }
 
     if (callee->process->rpc_handler == NULL) {
-        return -1;
+        return -EINVAL;
     }
 
 /*
@@ -196,7 +197,7 @@ int syscall_fastrpc(pid_t callee_pid, size_t metadata_size, void* metadata,
         ((callee->process->blocked_by_pid) ||
         !pm_block_rpc(callee->process, syscall_pm_get_pid())))
     {
-        return -1;
+        return -EAGAIN;
     }
 
     // Interrupt Stack Frame des aufgerufenen Tasks mappen
-- 
1.6.0.2