mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 19:03:15 +01:00
Added helper to extract raw thread id from fully qualified thread id
Currently, the tid returned from kernel contains container id as well, which makes it sufficient to do inter-container syscalls without any preparation. The helpers added are for presentation purposes only. Container id is deleted so that the raw thread id is available for printing or similar.
This commit is contained in:
@@ -144,6 +144,20 @@ static inline void l4_restore_ipcregs(void)
|
||||
l4_set_sender(l4_get_utcb()->saved_sender);
|
||||
}
|
||||
|
||||
#define TASK_CID_MASK 0xFF000000
|
||||
#define TASK_ID_MASK 0x00FFFFFF
|
||||
#define TASK_CID_SHIFT 24
|
||||
|
||||
static inline l4id_t __raw_tid(l4id_t tid)
|
||||
{
|
||||
return tid & TASK_ID_MASK;
|
||||
}
|
||||
|
||||
static inline l4id_t __cid(l4id_t tid)
|
||||
{
|
||||
return (tid & TASK_CID_MASK) >> TASK_CID_SHIFT;
|
||||
}
|
||||
|
||||
static inline l4id_t self_tid(void)
|
||||
{
|
||||
struct task_ids ids;
|
||||
@@ -152,6 +166,11 @@ static inline l4id_t self_tid(void)
|
||||
return ids.tid;
|
||||
}
|
||||
|
||||
static inline l4id_t __raw_self_tid(void)
|
||||
{
|
||||
return __raw_tid(self_tid());
|
||||
}
|
||||
|
||||
static inline int l4_send_full(l4id_t to, unsigned int tag)
|
||||
{
|
||||
l4_set_tag(tag);
|
||||
|
||||
@@ -195,7 +195,7 @@ void handle_requests(void)
|
||||
void main(void)
|
||||
{
|
||||
|
||||
printf("\n%s: Started with thread id %x\n", __TASKNAME__, self_tid());
|
||||
printf("\n%s: Started with thread id %x\n", __TASKNAME__, __raw_self_tid());
|
||||
|
||||
init();
|
||||
|
||||
|
||||
@@ -19,5 +19,7 @@ SECTIONS
|
||||
.rodata1 : { *(.rodata1) }
|
||||
. = ALIGN(4K);
|
||||
.data : { *(.data) }
|
||||
.got : { *(.got) }
|
||||
.got.plt : { *(.got.plt) }
|
||||
.bss : { *(.bss) }
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ l4id_t pagerid;
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
printf("\n%s: Started with thread id %x\n", __TASKNAME__, getpid());
|
||||
printf("\n%s: Started with thread id %x\n", __TASKNAME__, __raw_tid(getpid()));
|
||||
|
||||
parent_of_all = getpid();
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
|
||||
/* Compare two pid strings. We use strings because we dont have atoi() */
|
||||
if (!strcmp(pidbuf, parent_of_all)) {
|
||||
printf("EXECVE TEST -- PASSED --\n");
|
||||
printf("\nThread (%x): Continues to sync with the pager...\n\n", getpid());
|
||||
printf("\nThread (%x): Continues to sync with the pager...\n\n", __raw_tid(getpid()));
|
||||
while (1)
|
||||
wait_pager(pagerid);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user