Ongoing work for adding per-thread UTCB structures.

Added setting of utcb address to l4_thread_control.
This is going to be moved to exchange_registers() since we need to pass
both the utcb physical and virtual address and exregs fits such context
modification better than thread_control.
This commit is contained in:
Bahadir Balban
2009-04-29 16:53:04 +03:00
parent 54a9b2901d
commit 7a81db8782
35 changed files with 424 additions and 72 deletions

View File

@@ -11,9 +11,8 @@
#include INC_GLUE(context.h)
#include <l4/types.h>
enum exregs_flags {
EXREGS_SET_PAGER = 1,
};
#define EXREGS_SET_PAGER 1
#define EXREGS_SET_UTCB 2
/* Structure passed by userspace pagers for exchanging registers */
struct exregs_data {
@@ -21,6 +20,8 @@ struct exregs_data {
u32 valid_vect;
u32 flags;
l4id_t pagerid;
unsigned long utcb_phys;
unsigned long utcb_virt;
};

View File

@@ -68,6 +68,8 @@ struct kip {
u32 arch_syscall2;
u32 arch_syscall3;
u32 utcb;
struct kernel_desc kdesc;
} __attribute__((__packed__));

View File

@@ -1,7 +1,7 @@
#ifndef __THREAD_H__
#define __THREAD_H__
#define THREAD_CREATE_MASK 0x00F0
#define THREAD_CREATE_MASK 0x0030
/* Create new thread and new space */
#define THREAD_NEW_SPACE 0x0010
@@ -12,7 +12,11 @@
/* Create new thread, use given space */
#define THREAD_SAME_SPACE 0x0030
/* Shared UTCB, New UTCB, No UTCB */
#define THREAD_UTCB_MASK 0x00C0
#define THREAD_UTCB_NEW 0x0040
#define THREAD_UTCB_SAME 0x0080
#define THREAD_UTCB_NONE 0x00C0
#define THREAD_ACTION_MASK 0x000F