mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 19:03:15 +01:00
Full IPC working.
- Test0 has a full ipc mr read/write test. - A full ipc occurs for definite only if both parties use the FULL IPC flag. Otherwise the thread that makes the ipc copy rules on whether it was a short or a full copy.
This commit is contained in:
@@ -351,11 +351,12 @@ int sys_ipc(syscall_context_t *regs)
|
||||
unsigned int ipc_type = 0;
|
||||
int ret = 0;
|
||||
|
||||
#if 0
|
||||
if (regs->r2)
|
||||
__asm__ __volatile__ (
|
||||
"1:\n"
|
||||
"b 1b\n");
|
||||
|
||||
#endif
|
||||
/* Check arguments */
|
||||
if (from < L4_ANYTHREAD) {
|
||||
ret = -EINVAL;
|
||||
@@ -391,7 +392,12 @@ int sys_ipc(syscall_context_t *regs)
|
||||
return ret;
|
||||
|
||||
error:
|
||||
// printk("Erroneous ipc by: %d. Err: %d\n", current->tid, ret);
|
||||
/*
|
||||
* This is not always an error. For example a send/recv
|
||||
* thread may go to suspension before receive phase.
|
||||
*/
|
||||
//printk("Erroneous ipc by: %d. from: %d, to: %d, Err: %d\n",
|
||||
// current->tid, from, to, ret);
|
||||
ipc_type = IPC_INVALID;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include INC_SUBARCH(mm.h)
|
||||
|
||||
/* Abort debugging conditions */
|
||||
#define DEBUG_ABORTS
|
||||
// #define DEBUG_ABORTS
|
||||
#if defined (DEBUG_ABORTS)
|
||||
#define dbg_abort(...) dprintk(__VA_ARGS__)
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user