summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/objectmp.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-25 09:07:23 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-26 11:55:46 +0200
commitcba15292d9b7085eee4021e1927206d41ad43fd4 (patch)
tree821c819961aacaddcc595e779468cf9902e673e0 /cpukit/score/include/rtems/score/objectmp.h
parentrtems: Fix partition includes (diff)
downloadrtems-cba15292d9b7085eee4021e1927206d41ad43fd4.tar.bz2
score: Merge objectmp implementation into one file
Diffstat (limited to 'cpukit/score/include/rtems/score/objectmp.h')
-rw-r--r--cpukit/score/include/rtems/score/objectmp.h53
1 files changed, 44 insertions, 9 deletions
diff --git a/cpukit/score/include/rtems/score/objectmp.h b/cpukit/score/include/rtems/score/objectmp.h
index 1ef15b3c72..654d7aa66e 100644
--- a/cpukit/score/include/rtems/score/objectmp.h
+++ b/cpukit/score/include/rtems/score/objectmp.h
@@ -19,6 +19,12 @@
#ifndef _RTEMS_SCORE_OBJECTMP_H
#define _RTEMS_SCORE_OBJECTMP_H
+#include <rtems/score/chainimpl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/**
* @defgroup ScoreObjectMP Object Handler Multiprocessing Support
*
@@ -30,10 +36,6 @@
*/
/**@{*/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/**
* This defines the Global Object Control Block used to manage
* objects resident on other nodes. It is derived from Object.
@@ -189,15 +191,48 @@ SCORE_EXTERN uint32_t _Objects_MP_Maximum_global_objects;
*/
SCORE_EXTERN Chain_Control _Objects_MP_Inactive_global_objects;
-#ifndef __RTEMS_APPLICATION__
-#include <rtems/score/objectmp.inl>
-#endif
+/**
+ * This function allocates a Global Object control block.
+ */
-#ifdef __cplusplus
+RTEMS_INLINE_ROUTINE Objects_MP_Control *_Objects_MP_Allocate_global_object (
+ void
+)
+{
+ return (Objects_MP_Control *)
+ _Chain_Get( &_Objects_MP_Inactive_global_objects );
+}
+
+/**
+ * This routine deallocates a Global Object control block.
+ */
+
+RTEMS_INLINE_ROUTINE void _Objects_MP_Free_global_object (
+ Objects_MP_Control *the_object
+)
+{
+ _Chain_Append(
+ &_Objects_MP_Inactive_global_objects,
+ &the_object->Object.Node
+ );
+}
+
+/**
+ * This function returns whether the global object is NULL or not.
+ */
+
+RTEMS_INLINE_ROUTINE bool _Objects_MP_Is_null_global_object (
+ Objects_MP_Control *the_object
+)
+{
+ return( the_object == NULL );
}
-#endif
/**@}*/
+#ifdef __cplusplus
+}
+#endif
+
#endif
/* end of include file */