Preparing to add utcbs at disjoint virtual addresses.

This will help when syscalls have long arguments individual
utcbs can be mapped to server tasks and kept mapped in until the
tasks die, as opposed to map requests every time a server task maps
a different utcb at the same virtual address.

The changes have preparation code to also passing the utcb info
through the stack as part of the environment.

To sum up env and arg regions have also been added above the stack and
env region is to be used to pass on the utcb address information at
task startup.
This commit is contained in:
Bahadir Balban
2008-02-28 00:25:04 +00:00
parent 6e6a92be8b
commit e7b0e46065
10 changed files with 91 additions and 41 deletions

View File

@@ -26,7 +26,7 @@ extern __l4_thread_switch_t __l4_thread_switch;
unsigned int l4_thread_switch (u32 dest);
typedef int (*__l4_getid_t)(struct task_ids *ids);
extern __l4_getid_t __l4_getpid;
extern __l4_getid_t __l4_getid;
int l4_getid(struct task_ids *ids);
typedef int (*__l4_ipc_t)(l4id_t to, l4id_t from);

View File

@@ -21,15 +21,17 @@ struct utcb {
u32 tid; /* Thread id */
/*
* This field is used by servers as the ptr to current tcb,
* i.e. the task that this server is serving to.
* For passing ipc data larger than mrs,
* that is, if the callee is allowed to map it
*/
unsigned long usr_handle;
char userbuf[];
};
extern struct utcb *utcb;
static inline struct utcb *l4_get_utcb()
{
return *(struct utcb **)USER_UTCB_REF;
return utcb;
// (struct utcb **)USER_UTCB_REF;
}
/* Functions to read/write utcb registers */

View File

@@ -14,7 +14,6 @@
/* SHMID used betweeen FS0 and BLKDEV0 servers */
#define FS_BLKDEV_SHMID 0
/*** IPC Tags used between server tasks ***/
/* For ping ponging */