[rtems commit] score: New macros and functions
Sebastian Huber
sebh at rtems.org
Wed Apr 11 13:24:00 UTC 2012
Module: rtems
Branch: master
Commit: 5eb434e67ed31111eb90b92cf75248f2ff9d1086
Changeset: http://git.rtems.org/rtems/commit/?id=5eb434e67ed31111eb90b92cf75248f2ff9d1086
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Wed Apr 11 15:04:22 2012 +0200
score: New macros and functions
New macros
o _Objects_Maximum_per_allocation(),
o rtems_resource_is_unlimited(), and
o rtems_resource_maximum_per_allocation().
New function
o _Objects_Is_unlimited().
---
cpukit/sapi/include/confdefs.h | 2 +-
cpukit/sapi/include/rtems/config.h | 6 ++++++
cpukit/score/inline/rtems/score/object.inl | 20 ++++++++++++++++++++
cpukit/score/src/objectinitializeinformation.c | 7 +++----
4 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h
index ab8e473..d896c59 100644
--- a/cpukit/sapi/include/confdefs.h
+++ b/cpukit/sapi/include/confdefs.h
@@ -954,7 +954,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
* for memory usage.
*/
#define _Configure_Max_Objects(_max) \
- ((_max) & ~RTEMS_UNLIMITED_OBJECTS)
+ rtems_resource_maximum_per_allocation(_max)
/**
* This macro accounts for how memory for a set of configured objects is
diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h
index 25ddfda..407b19e 100644
--- a/cpukit/sapi/include/rtems/config.h
+++ b/cpukit/sapi/include/rtems/config.h
@@ -37,6 +37,12 @@ extern "C" {
#define rtems_resource_unlimited(resource) \
( resource | RTEMS_UNLIMITED_OBJECTS )
+#define rtems_resource_is_unlimited(resource) \
+ _Objects_Is_unlimited(resource)
+
+#define rtems_resource_maximum_per_allocation(resource) \
+ _Objects_Maximum_per_allocation(resource)
+
/*
* This is kind of kludgy but it allows targets to totally ignore the
* optional APIs like POSIX safely.
diff --git a/cpukit/score/inline/rtems/score/object.inl b/cpukit/score/inline/rtems/score/object.inl
index ac07e68..6a4fe21 100644
--- a/cpukit/score/inline/rtems/score/object.inl
+++ b/cpukit/score/inline/rtems/score/object.inl
@@ -352,5 +352,25 @@ RTEMS_INLINE_ROUTINE void _Objects_Open_string(
#endif
}
+/**
+ * Returns if the object maximum specifies unlimited objects.
+ *
+ * @param[in] maximum The object maximum specification.
+ *
+ * @retval true Unlimited objects are available.
+ * @retval false The object count is fixed.
+ */
+RTEMS_INLINE_ROUTINE bool _Objects_Is_unlimited( uint32_t maximum )
+{
+ return (maximum & OBJECTS_UNLIMITED_OBJECTS) != 0;
+}
+
+/*
+ * We cannot use an inline function for this since it may be evaluated at
+ * compile time.
+ */
+#define _Objects_Maximum_per_allocation( maximum ) \
+ ((Objects_Maximum) ((maximum) & ~OBJECTS_UNLIMITED_OBJECTS))
+
#endif
/* end of include file */
diff --git a/cpukit/score/src/objectinitializeinformation.c b/cpukit/score/src/objectinitializeinformation.c
index 01e1f96..4ddb11b 100644
--- a/cpukit/score/src/objectinitializeinformation.c
+++ b/cpukit/score/src/objectinitializeinformation.c
@@ -62,7 +62,7 @@ void _Objects_Initialize_information(
{
static Objects_Control *null_local_table = NULL;
uint32_t minimum_index;
- uint32_t maximum_per_allocation;
+ Objects_Maximum maximum_per_allocation;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t index;
#endif
@@ -92,9 +92,8 @@ void _Objects_Initialize_information(
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
- information->auto_extend =
- (maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
- maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;
+ information->auto_extend = _Objects_Is_unlimited( maximum );
+ maximum_per_allocation = _Objects_Maximum_per_allocation( maximum );
/*
* Unlimited and maximum of zero is illogical.
More information about the vc
mailing list