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

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 4 Jun 2011 19:45:51 +0200 (CEST)

Author: bonefish
Date: 2011-06-04 19:45:51 +0200 (Sat, 04 Jun 2011)
New Revision: 41909
Changeset: https://dev.haiku-os.org/changeset/41909

Added:
   
haiku/branches/developer/bonefish/signals/headers/private/kernel/util/KernelReferenceable.h
   
haiku/branches/developer/bonefish/signals/src/system/kernel/util/KernelReferenceable.cpp
Modified:
   haiku/branches/developer/bonefish/signals/src/system/kernel/util/Jamfile
Log:
Added class KernelReferenceable, a simple BReferenceable (and
DeferredDeletable) subclass that reimplements LastReferenceReleased() to use
deferred_delete() instead of delete, when interrupts are disabled.


Added: 
haiku/branches/developer/bonefish/signals/headers/private/kernel/util/KernelReferenceable.h
===================================================================
--- 
haiku/branches/developer/bonefish/signals/headers/private/kernel/util/KernelReferenceable.h
                         (rev 0)
+++ 
haiku/branches/developer/bonefish/signals/headers/private/kernel/util/KernelReferenceable.h
 2011-06-04 17:45:51 UTC (rev 41909)
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2011, Ingo Weinhold, ingo_weinhold@xxxxxxx
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef _KERNEL_UTIL_KERNEL_REFERENCEABLE_H
+#define _KERNEL_UTIL_KERNEL_REFERENCEABLE_H
+
+
+#include <Referenceable.h>
+
+#include <heap.h>
+
+
+namespace BKernel {
+
+
+struct KernelReferenceable : BReferenceable, DeferredDeletable {
+protected:
+       virtual void                            LastReferenceReleased();
+};
+
+
+}      // namespace BKernel
+
+
+using BKernel::KernelReferenceable;
+
+
+#endif /* _KERNEL_UTIL_KERNEL_REFERENCEABLE_H */

Modified: 
haiku/branches/developer/bonefish/signals/src/system/kernel/util/Jamfile
===================================================================
--- haiku/branches/developer/bonefish/signals/src/system/kernel/util/Jamfile    
2011-06-04 14:09:24 UTC (rev 41908)
+++ haiku/branches/developer/bonefish/signals/src/system/kernel/util/Jamfile    
2011-06-04 17:45:51 UTC (rev 41909)
@@ -5,6 +5,7 @@
 KernelMergeObject kernel_util.o :
        AVLTreeBase.cpp
        kernel_cpp.cpp
+       KernelReferenceable.cpp
        khash.cpp
        list.cpp
        queue.cpp

Added: 
haiku/branches/developer/bonefish/signals/src/system/kernel/util/KernelReferenceable.cpp
===================================================================
--- 
haiku/branches/developer/bonefish/signals/src/system/kernel/util/KernelReferenceable.cpp
                            (rev 0)
+++ 
haiku/branches/developer/bonefish/signals/src/system/kernel/util/KernelReferenceable.cpp
    2011-06-04 17:45:51 UTC (rev 41909)
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2011, Ingo Weinhold, ingo_weinhold@xxxxxxx
+ * Distributed under the terms of the MIT License.
+ */
+
+
+#include <util/KernelReferenceable.h>
+
+#include <int.h>
+
+
+void
+KernelReferenceable::LastReferenceReleased()
+{
+       if (are_interrupts_enabled())
+               delete this;
+       else
+               deferred_delete(this);
+}


Other related posts:

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