diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-11-12 09:00:36 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-11-12 13:25:42 +0100 |
commit | a6e7d5e492fd5e4c361d4d9aa13eb0eb951b386a (patch) | |
tree | d81496a061d3bd558edcfca047c0babbe13213f3 /cpukit/include/rtems/score/objectdata.h | |
parent | rtems: Avoid include of <rtems/score/scheduler.h> (diff) | |
download | rtems-a6e7d5e492fd5e4c361d4d9aa13eb0eb951b386a.tar.bz2 |
score: Move internal structures to objectdata.h
Update #3598.
Diffstat (limited to '')
-rw-r--r-- | cpukit/include/rtems/score/objectdata.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/cpukit/include/rtems/score/objectdata.h b/cpukit/include/rtems/score/objectdata.h new file mode 100644 index 0000000000..51258fa4a4 --- /dev/null +++ b/cpukit/include/rtems/score/objectdata.h @@ -0,0 +1,98 @@ +/** + * @file + * + * @ingroup ScoreObject + * + * @brief Object Handler Data Structures + */ + +/* + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifndef _RTEMS_SCORE_OBJECTDATA_H +#define _RTEMS_SCORE_OBJECTDATA_H + +#include <rtems/score/object.h> +#include <rtems/score/chain.h> +#include <rtems/score/rbtree.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup ScoreObject + * + * @{ + */ + +/** + * The following defines the Object Control Block used to manage + * each object local to this node. + */ +typedef struct { + /** This is the chain node portion of an object. */ + Chain_Node Node; + /** This is the object's ID. */ + Objects_Id id; + /** This is the object's name. */ + Objects_Name name; +} Objects_Control; + +#if defined( RTEMS_MULTIPROCESSING ) +/** + * @brief This defines the Global Object Control Block used to manage objects + * resident on other nodes. + */ +typedef struct { + /** + * @brief Nodes to manage active and inactive global objects. + */ + union { + /** + * @brief Inactive global objects reside on a chain. + */ + Chain_Node Inactive; + + struct { + /** + * @brief Node to lookup an active global object by identifier. + */ + RBTree_Node Id_lookup; + + /** + * @brief Node to lookup an active global object by name. + */ + RBTree_Node Name_lookup; + } Active; + } Nodes; + + /** + * @brief The global object identifier. + */ + Objects_Id id; + + /** + * @brief The global object name. + * + * Using an unsigned thirty two bit value is broken but works. If any API is + * MP with variable length names .. BOOM!!!! + */ + uint32_t name; +} Objects_MP_Control; +#endif + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ |