summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-06-16 15:54:21 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-06-16 15:54:21 +0000
commit4cb19041d7d78d9ae29f878871e4d2b89b9abc22 (patch)
tree3efcf5818a29323bf55577ffbb324cd301249519 /cpukit/rtems
parent2008-06-13 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-4cb19041d7d78d9ae29f878871e4d2b89b9abc22.tar.bz2
2008-06-16 Joel Sherrill <joel.sherrill@oarcorp.com>
* rtems/include/rtems/rtems/config.h, rtems/include/rtems/rtems/tasks.h, rtems/src/taskgetnote.c, rtems/src/tasks.c, rtems/src/tasksetnote.c, sapi/include/confdefs.h: Add CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS.
Diffstat (limited to 'cpukit/rtems')
-rw-r--r--cpukit/rtems/include/rtems/rtems/config.h13
-rw-r--r--cpukit/rtems/include/rtems/rtems/tasks.h12
-rw-r--r--cpukit/rtems/src/taskgetnote.c4
-rw-r--r--cpukit/rtems/src/tasks.c18
-rw-r--r--cpukit/rtems/src/tasksetnote.c4
5 files changed, 46 insertions, 5 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/config.h b/cpukit/rtems/include/rtems/rtems/config.h
index 5afc3063d4..4298e6a215 100644
--- a/cpukit/rtems/include/rtems/rtems/config.h
+++ b/cpukit/rtems/include/rtems/rtems/config.h
@@ -48,6 +48,12 @@ typedef struct {
uint32_t maximum_tasks;
/**
+ * This field indicates whether Classic API notepads are
+ * enabled or disabled.
+ */
+ boolean notepads_enabled;
+
+ /**
* This field contains the maximum number of Classic API
* Timers which are configured for this application.
*/
@@ -110,6 +116,13 @@ typedef struct {
rtems_initialization_tasks_table *User_initialization_tasks_table;
} rtems_api_configuration_table;
+/**
+ * This macro returns the value of the notepads enabled field
+ * in the Classic API configuration table.
+ */
+#define rtems_configuration_get_notepads_enabled() \
+ rtems_configuration_get_rtems_api_configuration()->notepads_enabled
+
#ifdef __cplusplus
}
#endif
diff --git a/cpukit/rtems/include/rtems/rtems/tasks.h b/cpukit/rtems/include/rtems/rtems/tasks.h
index f09b0eb329..fe9f20ef45 100644
--- a/cpukit/rtems/include/rtems/rtems/tasks.h
+++ b/cpukit/rtems/include/rtems/rtems/tasks.h
@@ -201,16 +201,24 @@ typedef struct {
/**
* This is the API specific information required by each thread for
* the RTEMS API to function correctly.
+ *
+ * @note Notepads must be the last entry in the structure and memory
+ * will be taken away from this structure when allocated if
+ * notespads are disabled by the application configuration.
*/
typedef struct {
- /** This field contains the notepads for this task. */
- uint32_t Notepads[ RTEMS_NUMBER_NOTEPADS ];
/** This field contains the pending events for this task. */
rtems_event_set pending_events;
/** This field contains the event wait condition for this task. */
rtems_event_set event_condition;
/** This field contains the Classic API Signal information for this task. */
ASR_Information Signal;
+ /**
+ * This field contains the notepads for this task.
+ *
+ * @note MUST BE LAST ENTRY.
+ */
+ uint32_t Notepads[ RTEMS_NUMBER_NOTEPADS ];
} RTEMS_API_Control;
/**
diff --git a/cpukit/rtems/src/taskgetnote.c b/cpukit/rtems/src/taskgetnote.c
index dffb2da2d6..b3983f322a 100644
--- a/cpukit/rtems/src/taskgetnote.c
+++ b/cpukit/rtems/src/taskgetnote.c
@@ -17,6 +17,7 @@
#endif
#include <rtems/system.h>
+#include <rtems/config.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/support.h>
#include <rtems/rtems/modes.h>
@@ -60,6 +61,9 @@ rtems_status_code rtems_task_get_note(
Objects_Locations location;
RTEMS_API_Control *api;
+ if ( !rtems_configuration_get_notepads_enabled() )
+ return RTEMS_NOT_CONFIGURED;
+
if ( !note )
return RTEMS_INVALID_ADDRESS;
diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c
index afde09a704..442f5e6954 100644
--- a/cpukit/rtems/src/tasks.c
+++ b/cpukit/rtems/src/tasks.c
@@ -16,6 +16,7 @@
#endif
#include <rtems/system.h>
+#include <rtems/config.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/support.h>
#include <rtems/rtems/modes.h>
@@ -49,8 +50,17 @@ boolean _RTEMS_tasks_Create_extension(
{
RTEMS_API_Control *api;
int i;
+ size_t to_allocate;
- api = _Workspace_Allocate( sizeof( RTEMS_API_Control ) );
+ /*
+ * Notepads must be the last entry in the structure and they
+ * can be left off if disabled in the configuration.
+ */
+ to_allocate = sizeof( RTEMS_API_Control );
+ if ( !rtems_configuration_get_notepads_enabled() )
+ to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
+
+ api = _Workspace_Allocate( to_allocate );
if ( !api )
return FALSE;
@@ -61,8 +71,10 @@ boolean _RTEMS_tasks_Create_extension(
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
- for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
- api->Notepads[i] = 0;
+ if ( rtems_configuration_get_notepads_enabled() ) {
+ for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
+ api->Notepads[i] = 0;
+ }
return TRUE;
}
diff --git a/cpukit/rtems/src/tasksetnote.c b/cpukit/rtems/src/tasksetnote.c
index c8d5f82b77..ebb501998e 100644
--- a/cpukit/rtems/src/tasksetnote.c
+++ b/cpukit/rtems/src/tasksetnote.c
@@ -17,6 +17,7 @@
#endif
#include <rtems/system.h>
+#include <rtems/config.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/support.h>
#include <rtems/rtems/modes.h>
@@ -59,6 +60,9 @@ rtems_status_code rtems_task_set_note(
Objects_Locations location;
RTEMS_API_Control *api;
+ if ( !rtems_configuration_get_notepads_enabled() )
+ return RTEMS_NOT_CONFIGURED;
+
/*
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.