diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2012-01-03 11:10:42 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-01-05 00:57:01 -0600 |
commit | 048789fdce6b406de3b7149f8171afd63eea1829 (patch) | |
tree | 2291287f0fd3cb05441a96e72346e27436ebbba1 /src/include | |
parent | a001b92d6d5ab2383a7c8c51f1ee43f8095d1d56 (diff) | |
download | talos-hostboot-048789fdce6b406de3b7149f8171afd63eea1829.tar.gz talos-hostboot-048789fdce6b406de3b7149f8171afd63eea1829.zip |
Fix race condition between stackmanager and vmmmanager.
Change-Id: Ie3f3fb2050428af1fc398b1577dfc090cd7d26cf
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/591
Tested-by: Jenkins Server
Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com>
Reviewed-by: Melissa J. Connell <missyc@us.ibm.com>
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: MATTHEW S. BARTH <msbarth@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/kernel/stacksegment.H | 2 | ||||
-rw-r--r-- | src/include/kernel/taskmgr.H | 3 | ||||
-rw-r--r-- | src/include/kernel/vmmmgr.H | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/src/include/kernel/stacksegment.H b/src/include/kernel/stacksegment.H index 2d3474dc6..460a61b49 100644 --- a/src/include/kernel/stacksegment.H +++ b/src/include/kernel/stacksegment.H @@ -108,6 +108,8 @@ class StackSegment : public Segment * @brief Delete previously created stack for a task. * * @param i_task - Task ID of task owning the stack. + * + * @note This function obtains the VMM-subsystem spinlock. */ static void deleteStack(tid_t i_task); diff --git a/src/include/kernel/taskmgr.H b/src/include/kernel/taskmgr.H index 63aa76484..b38618d22 100644 --- a/src/include/kernel/taskmgr.H +++ b/src/include/kernel/taskmgr.H @@ -125,6 +125,9 @@ class TaskManager * @param[in] t - The task to end. * @param[in] retval - Return value from the task. * @param[in] status - TASK_STATUS_* enumeration of how the task ended. + * + * @note This function obtains the VMM-subsystem spinlock as part of + * releasing the task stack. */ static void endTask(task_t* t, void* retval, int status); diff --git a/src/include/kernel/vmmmgr.H b/src/include/kernel/vmmmgr.H index 845066229..3782bb762 100644 --- a/src/include/kernel/vmmmgr.H +++ b/src/include/kernel/vmmmgr.H @@ -200,6 +200,7 @@ class VmmManager public: friend class Block; + friend class StackSegment; }; |