From 82fa7a749fbd1d8f17891dbd97b17a3bdae36c53 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Thu, 11 Aug 2011 00:17:29 -0500 Subject: Implement Kernel->User-space message bridge. Change-Id: Icf6fc9e10b1c39e981dddf180607b710c597112b Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/249 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III --- src/include/kernel/task.H | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/include/kernel/task.H') diff --git a/src/include/kernel/task.H b/src/include/kernel/task.H index 6cd49028d..b72322d83 100644 --- a/src/include/kernel/task.H +++ b/src/include/kernel/task.H @@ -29,17 +29,17 @@ struct task_t { /** Pointer to the CPU this task is assigned to. */ cpu_t* cpu; - /** Context information. This MUST stay here due to + /** Context information. This MUST stay here due to * save-restore asm code. */ context_t context; - + /** Task ID */ tid_t tid; /** Determines if user-space would like this task pinned to a CPU. * This value is considered a count of the number of times the pinned * as been requested, so pinning can be used recursively. */ uint64_t affinity_pinned; - + // Pointers for queue containers. task_t* prev; task_t* next; @@ -47,4 +47,17 @@ struct task_t enum { TASK_DEFAULT_STACK_SIZE = 4 }; +// Macros for manipulating task's saved contexts. +#define TASK_GETARGN(t, n) (t->context.gprs[n+4]) +#define TASK_GETARG0(t) (TASK_GETARGN(t,0)) +#define TASK_GETARG1(t) (TASK_GETARGN(t,1)) +#define TASK_GETARG2(t) (TASK_GETARGN(t,2)) +#define TASK_GETARG3(t) (TASK_GETARGN(t,3)) +#define TASK_GETARG4(t) (TASK_GETARGN(t,4)) +#define TASK_GETARG5(t) (TASK_GETARGN(t,5)) +#define TASK_GETARG6(t) (TASK_GETARGN(t,6)) +#define TASK_GETARG7(t) (TASK_GETARGN(t,7)) +#define TASK_SETRTN(t, n) (t->context.gprs[3] = (n)) + + #endif -- cgit v1.2.3