diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2010-06-07 16:39:45 -0500 |
---|---|---|
committer | Patrick Williams <iawillia@us.ibm.com> | 2010-06-07 16:39:45 -0500 |
commit | 9a4698af6ee4c095a97b8800d2d5f0a4bb282b15 (patch) | |
tree | 9f5241ee1f91d21c8043b359d7bfaeb309ecd5b8 /src/include | |
parent | aa1db69f1de27bba8ee5e128f717557780f21e0d (diff) | |
download | talos-hostboot-9a4698af6ee4c095a97b8800d2d5f0a4bb282b15.tar.gz talos-hostboot-9a4698af6ee4c095a97b8800d2d5f0a4bb282b15.zip |
Add task control syscalls.
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/kernel/syscalls.H | 3 | ||||
-rw-r--r-- | src/include/kernel/task.H | 2 | ||||
-rw-r--r-- | src/include/kernel/taskmgr.H | 3 | ||||
-rw-r--r-- | src/include/sys/syscall.h | 2 | ||||
-rw-r--r-- | src/include/sys/task.h | 20 |
5 files changed, 27 insertions, 3 deletions
diff --git a/src/include/kernel/syscalls.H b/src/include/kernel/syscalls.H index a7a0ef6b7..826ac93b9 100644 --- a/src/include/kernel/syscalls.H +++ b/src/include/kernel/syscalls.H @@ -6,6 +6,9 @@ namespace Systemcalls enum SysCalls { TASK_YIELD = 0, + TASK_START, + TASK_END, + TASK_GETTID, SYSCALL_MAX }; diff --git a/src/include/kernel/task.H b/src/include/kernel/task.H index d9256c365..4cd19bd04 100644 --- a/src/include/kernel/task.H +++ b/src/include/kernel/task.H @@ -23,4 +23,6 @@ struct task_t task_t* next; }; +enum { TASK_DEFAULT_STACK_SIZE = 4 }; + #endif diff --git a/src/include/kernel/taskmgr.H b/src/include/kernel/taskmgr.H index 34267324c..2bdb39c16 100644 --- a/src/include/kernel/taskmgr.H +++ b/src/include/kernel/taskmgr.H @@ -10,15 +10,14 @@ class TaskManager static void setCurrentTask(task_t* t); typedef void(*task_fn_t)(void*); + static task_t* createTask(task_fn_t, void*); friend class CpuManager; - friend class Kernel; protected: TaskManager(); ~TaskManager() {}; static task_t* createIdleTask(); - static task_t* createTask(task_fn_t, void*); private: tid_t getNextTid(); diff --git a/src/include/sys/syscall.h b/src/include/sys/syscall.h index b418b5d15..36f84a51f 100644 --- a/src/include/sys/syscall.h +++ b/src/include/sys/syscall.h @@ -19,7 +19,7 @@ void* _syscall7(uint64_t, void*, void*, void*, void*, void*, void*, void*); #ifdef __cplusplus } +#include <kernel/syscalls.H> #endif -#include <kernel/syscalls.H> #endif diff --git a/src/include/sys/task.h b/src/include/sys/task.h new file mode 100644 index 000000000..84ddb10f9 --- /dev/null +++ b/src/include/sys/task.h @@ -0,0 +1,20 @@ +#ifndef __SYS_TASK_H +#define __SYS_TASK_H + +#include <sys/syscall.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +void task_yield(); +int task_create(void(*)(void*), void*); +void task_end(); + +uint64_t task_gettid(); + +#ifdef __cplusplus +} +#endif +#endif |