/kernel/trunk/generic/include/ipc/ipc.h |
---|
37,8 → 37,9 |
#define IPC_MAX_ASYNC_CALLS 4 |
/* Flags for calls */ |
#define IPC_CALL_ANSWERED 1 /**< This is answer to a call */ |
#define IPC_CALL_STATIC_ALLOC 2 /**< This call will not be freed on error */ |
#define IPC_CALL_ANSWERED 0x1 /**< This is answer to a call */ |
#define IPC_CALL_STATIC_ALLOC 0x2 /**< This call will not be freed on error */ |
#define IPC_CALL_DISPATCHED 0x4 /**< Call is in dispatch queue */ |
/* Flags for ipc_wait_for_call */ |
#define IPC_WAIT_NONBLOCKING 1 |
/kernel/trunk/generic/src/console/console.c |
---|
38,9 → 38,31 |
#include <print.h> |
#include <arch/atomic.h> |
#define BUFLEN 2048 |
static char debug_buffer[BUFLEN]; |
static size_t offset = 0; |
/** Initialize stdout to something that does not print, but does not fail |
* |
* Save data in some buffer so that it could be retrieved in the debugger |
*/ |
static void null_putchar(chardev_t *d, const char ch) |
{ |
if (offset >= BUFLEN) |
offset = 0; |
debug_buffer[offset++] = ch; |
} |
static chardev_operations_t null_stdout_ops = { |
.write = null_putchar |
}; |
chardev_t null_stdout = { |
.name = "null", |
.op = &null_stdout_ops |
}; |
/** Standard input character device. */ |
chardev_t *stdin = NULL; |
chardev_t *stdout = NULL; |
chardev_t *stdout = &null_stdout; |
/** Get character from character device. Do not echo character. |
* |
/kernel/trunk/generic/src/ipc/ipc.c |
---|
184,6 → 184,7 |
{ |
answerbox_t *callerbox = request->callerbox; |
request->flags &= ~IPC_CALL_DISPATCHED; |
request->flags |= IPC_CALL_ANSWERED; |
spinlock_lock(&box->lock); |
217,6 → 218,7 |
list_remove(&request->list); |
/* Append request to dispatch queue */ |
list_append(&request->list, &box->dispatched_calls); |
request->flags |= IPC_CALL_DISPATCHED; |
} else { |
if (!(flags & IPC_WAIT_NONBLOCKING)) { |
/* Wait for event to appear */ |