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:
Bahadir Balban
2009-05-19 15:39:01 +03:00
parent 3bbbcdfefa
commit cc96e2c86c
7 changed files with 30 additions and 22 deletions

View File

@@ -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;
}

View File

@@ -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