From 048789fdce6b406de3b7149f8171afd63eea1829 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Tue, 3 Jan 2012 11:10:42 -0600 Subject: 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 Reviewed-by: Melissa J. Connell Reviewed-by: Douglas R. Gilbert Reviewed-by: MATTHEW S. BARTH --- src/include/kernel/stacksegment.H | 2 ++ src/include/kernel/taskmgr.H | 3 +++ src/include/kernel/vmmmgr.H | 1 + 3 files changed, 6 insertions(+) (limited to 'src/include/kernel') 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; }; -- cgit v1.2.3