mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 10:53:16 +01:00
Task ids are now unsigned as the container ids will need to be encoded in the id fields as well. For requests who require even more comprehensive id input, (such as thread creation) also added is the container id so that threads _could_ potentially be created in other containers as well.
82 lines
1.5 KiB
C
82 lines
1.5 KiB
C
/*
|
|
* Main function for all tests
|
|
*
|
|
* Copyright (C) 2009 B Labs Ltd.
|
|
*/
|
|
#include <l4/api/errno.h>
|
|
#include <container.h>
|
|
#include <capability.h>
|
|
#include <thread.h>
|
|
#include <tests.h>
|
|
#include <l4lib/arch/syslib.h>
|
|
#include <l4lib/arch/syscalls.h>
|
|
#include <l4/api/space.h>
|
|
|
|
|
|
int exit_test_thread(void *arg)
|
|
{
|
|
while (1)
|
|
;
|
|
//l4_thread_switch(0);
|
|
//l4_exit(5);
|
|
return 0;
|
|
}
|
|
|
|
int exit_test(void)
|
|
{
|
|
int ret;
|
|
struct task_ids ids;
|
|
|
|
/* Create and run a new thread */
|
|
if ((ret = thread_create(exit_test_thread, 0,
|
|
TC_SHARE_SPACE | TC_AS_PAGER,
|
|
&ids)) < 0) {
|
|
printf("Top-level simple_pager creation failed.\n");
|
|
goto out_err;
|
|
} else
|
|
printf("Thread (%d) created successfully.\n", ids.tid);
|
|
|
|
// l4_thread_switch(0);
|
|
|
|
/* Kill it */
|
|
printf("Killing Thread (%d).\n", ids.tid);
|
|
if ((ret = l4_thread_control(THREAD_DESTROY, &ids)) < 0)
|
|
printf("Error: Killing Thread (%d), err = %d\n", ids.tid, ret);
|
|
else
|
|
printf("Success: Killed Thread (%d)\n", ids.tid);
|
|
|
|
|
|
#if 0
|
|
/* Wait on it */
|
|
printf("Waiting on Thread (%d) to exit.\n", ids.tid);
|
|
if ((ret = l4_thread_control(THREAD_WAIT, &ids)) >= 0)
|
|
printf("Success. Paged child returned %d\n", ret);
|
|
else
|
|
printf("Error. Wait on (%d) failed. err = %d\n",
|
|
ids.tid, ret);
|
|
|
|
#endif
|
|
return 0;
|
|
out_err:
|
|
BUG();
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
printf("%s: Container %s started\n",
|
|
__CONTAINER__, __CONTAINER_NAME__);
|
|
|
|
capability_test();
|
|
|
|
//exit_test();
|
|
|
|
/* Now quit to demo self-paging quit */
|
|
//l4_exit(0);
|
|
|
|
/* Now quit by null pointer */
|
|
// *((int *)0) = 5;
|
|
|
|
return 0;
|
|
}
|
|
|