diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2010-06-07 12:57:24 -0500 |
---|---|---|
committer | Patrick Williams <iawillia@us.ibm.com> | 2010-06-07 12:57:24 -0500 |
commit | cd86583d084a4227dbf6a7cca2934eaad2b060d1 (patch) | |
tree | 0e45df2bd93e4f684bb7e4c4b619db579623d8a9 /src/kernel | |
parent | 6db79851d2f8664216d85ba73246699d8aae94a7 (diff) | |
download | talos-hostboot-cd86583d084a4227dbf6a7cca2934eaad2b060d1.tar.gz talos-hostboot-cd86583d084a4227dbf6a7cca2934eaad2b060d1.zip |
Give tasks a void-ptr parameter like pthreads.
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/taskmgr.C | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/kernel/taskmgr.C b/src/kernel/taskmgr.C index 50b9a0848..5917abfeb 100644 --- a/src/kernel/taskmgr.C +++ b/src/kernel/taskmgr.C @@ -33,9 +33,9 @@ task_t* TaskManager::createIdleTask() return Singleton<TaskManager>::instance()._createIdleTask(); } -task_t* TaskManager::createTask(TaskManager::task_fn_t t) +task_t* TaskManager::createTask(TaskManager::task_fn_t t, void* p) { - return Singleton<TaskManager>::instance()._createTask(t, true); + return Singleton<TaskManager>::instance()._createTask(t, p, true); } tid_t TaskManager::getNextTid() @@ -45,10 +45,11 @@ tid_t TaskManager::getNextTid() task_t* TaskManager::_createIdleTask() { - return this->_createTask(&TaskManager::idleTaskLoop, false); + return this->_createTask(&TaskManager::idleTaskLoop, NULL, false); } -task_t* TaskManager::_createTask(TaskManager::task_fn_t t, bool withStack) +task_t* TaskManager::_createTask(TaskManager::task_fn_t t, + void* p, bool withStack) { task_t* task = new task_t; task->tid = this->getNextTid(); @@ -58,6 +59,9 @@ task_t* TaskManager::_createTask(TaskManager::task_fn_t t, bool withStack) // TOC[1] = TOC base -> r2 task->context.nip = (void*) ((uint64_t*) t)[0]; task->context.gprs[2] = ((uint64_t*)t)[1]; + + // Set up argument. + task->context.gprs[3] = (uint64_t) p; // Setup stack. if (withStack) |