[haiku-commits] r40208 - in haiku/branches/developer/bonefish/signals: headers/private/kernel src/system/kernel

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 11 Jan 2011 20:43:57 +0100 (CET)

Author: bonefish
Date: 2011-01-11 20:43:57 +0100 (Tue, 11 Jan 2011)
New Revision: 40208
Changeset: http://dev.haiku-os.org/changeset/40208

Modified:
   
haiku/branches/developer/bonefish/signals/headers/private/kernel/thread_types.h
   haiku/branches/developer/bonefish/signals/src/system/kernel/team.cpp
Log:
Added locking to Team. Doesn't protect anything yet.


Modified: 
haiku/branches/developer/bonefish/signals/headers/private/kernel/thread_types.h
===================================================================
--- 
haiku/branches/developer/bonefish/signals/headers/private/kernel/thread_types.h 
    2011-01-11 19:34:05 UTC (rev 40207)
+++ 
haiku/branches/developer/bonefish/signals/headers/private/kernel/thread_types.h 
    2011-01-11 19:43:57 UTC (rev 40208)
@@ -297,10 +297,18 @@
        static  Team*                           Create(const char* name, bool 
kernel);
        static  Team*                           Get(team_id id);
 
+                       bool                            Lock()
+                                                                       { 
mutex_lock(&fLock); return true; }
+                       void                            Unlock()
+                                                                       { 
mutex_unlock(&fLock); }
+
                        void                            SetName(const char* 
name);
 
 private:
-                                                               Team(team_id 
teamID);
+                                                               Team(bool 
kernel);
+
+private:
+                       mutex                           fLock;
 };
 
 

Modified: haiku/branches/developer/bonefish/signals/src/system/kernel/team.cpp
===================================================================
--- haiku/branches/developer/bonefish/signals/src/system/kernel/team.cpp        
2011-01-11 19:34:05 UTC (rev 40207)
+++ haiku/branches/developer/bonefish/signals/src/system/kernel/team.cpp        
2011-01-11 19:43:57 UTC (rev 40208)
@@ -530,10 +530,21 @@
 //     #pragma mark - Team
 
 
-Team::Team(team_id teamID)
+Team::Team(bool kernel)
 {
+       // allocate an ID
+       id = kernel ? 1 : allocate_thread_id();
+
+       // init mutex
+       if (kernel) {
+               mutex_init(&fLock, "Team:kernel");
+       } else {
+               char lockName[16];
+               snprintf(lockName, sizeof(lockName), "Team:%" B_PRId32, id);
+               mutex_init_etc(&fLock, lockName, MUTEX_FLAG_CLONE_NAME);
+       }
+
        next = siblings_next = children = parent = NULL;
-       id = teamID;
        name[0] = '\0';
        args[0] = '\0';
        num_threads = 0;
@@ -610,6 +621,8 @@
 
        delete job_control_entry;
                // usually already NULL and transferred to the parent
+
+       mutex_destroy(&fLock);
 }
 
 
@@ -617,7 +630,7 @@
 Team::Create(const char* name, bool kernel)
 {
        // create the team object
-       Team* team = new(std::nothrow) Team(kernel ? 1 : allocate_thread_id());
+       Team* team = new(std::nothrow) Team(kernel);
        if (team == NULL)
                return NULL;
        ObjectDeleter<Team> teamDeleter(team);


Other related posts:

  • » [haiku-commits] r40208 - in haiku/branches/developer/bonefish/signals: headers/private/kernel src/system/kernel - ingo_weinhold