[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