summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-06-07 12:57:24 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-06-07 12:57:24 -0500
commitcd86583d084a4227dbf6a7cca2934eaad2b060d1 (patch)
tree0e45df2bd93e4f684bb7e4c4b619db579623d8a9 /src/kernel
parent6db79851d2f8664216d85ba73246699d8aae94a7 (diff)
downloadtalos-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.C12
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)
OpenPOWER on IntegriCloud