summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpukit/ChangeLog12
-rw-r--r--cpukit/sapi/include/confdefs.h313
2 files changed, 222 insertions, 103 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index 3c8b7445e6..f9d181ea63 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,5 +1,17 @@
2008-06-17 Joel Sherrill <joel.sherrill@oarcorp.com>
+ * sapi/include/confdefs.h: When you disabled newlib reentrancy, it
+ still reserved memory for the reentrancy structure. This is about 1K
+ per task. On psim, we now reserve only 1936 bytes and only 240 remain
+ after all allocations. Further analysis will be required to narrow
+ that down. In addition, the new constant CONFIGURE_CONFDEFS_DEBUG can
+ be defined and the structure named Configuration_Memory_Debug will be
+ instantiated. This structure contains many of the component values
+ that go into the memory reservation computation. This is helpful when
+ tracking down problems.
+
+2008-06-17 Joel Sherrill <joel.sherrill@oarcorp.com>
+
* sapi/include/confdefs.h: The math in the _Configure_Object_RAM macro
was always adding heap overhead even when the number of objects
configured was zero and we would not do an allocation. This resulted
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h
index 243edd2189..c04f65da40 100644
--- a/cpukit/sapi/include/confdefs.h
+++ b/cpukit/sapi/include/confdefs.h
@@ -151,7 +151,7 @@ extern rtems_configuration_table Configuration;
*/
#ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \
- IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
+ IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
#endif
#ifdef CONFIGURE_INIT
int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
@@ -171,7 +171,7 @@ extern rtems_configuration_table Configuration;
};
const rtems_filesystem_mount_table_t
- *rtems_filesystem_mount_table = &configuration_mount_table;
+ *rtems_filesystem_mount_table = &configuration_mount_table;
const int rtems_filesystem_mount_table_size = 1;
#endif
#endif
@@ -536,12 +536,12 @@ extern rtems_configuration_table Configuration;
#ifdef CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
NULL_DRIVER_TABLE_ENTRY
#elif !defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) && \
- !defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS)
+ !defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \
+ !defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) && \
+ !defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) && \
+ !defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) && \
+ !defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) && \
+ !defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS)
NULL_DRIVER_TABLE_ENTRY
#endif
};
@@ -617,7 +617,7 @@ extern rtems_configuration_table Configuration;
{CONFIGURE_BDBUF_BUFFER_SIZE, CONFIGURE_BDBUF_BUFFER_COUNT, NULL}
};
int rtems_bdbuf_configuration_size =( sizeof(rtems_bdbuf_configuration)
- /sizeof(rtems_bdbuf_configuration[0]));
+ /sizeof(rtems_bdbuf_configuration[0]));
#endif /* CONFIGURE_INIT */
#endif /* CONFIGURE_HAS_OWN_BDBUF_TABLE */
#endif /* CONFIGURE_APPLICATION_NEEDS_LIBBLOCK */
@@ -637,39 +637,39 @@ extern rtems_configuration_table Configuration;
#endif
#ifndef CONFIGURE_MP_MAXIMUM_NODES
- #define CONFIGURE_MP_MAXIMUM_NODES 2
+ #define CONFIGURE_MP_MAXIMUM_NODES 2
#endif
#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
- #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 32
+ #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 32
#endif
#define CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \
- _Configure_Object_RAM((_global_objects), sizeof(Objects_MP_Control))
+ _Configure_Object_RAM((_global_objects), sizeof(Objects_MP_Control))
#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
- #define CONFIGURE_MP_MAXIMUM_PROXIES 32
+ #define CONFIGURE_MP_MAXIMUM_PROXIES 32
#endif
#define CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \
- _Configure_Object_RAM((_proxies) + 1, sizeof(Thread_Proxy_control) )
+ _Configure_Object_RAM((_proxies) + 1, sizeof(Thread_Proxy_control) )
#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
- #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
+ #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
#endif
#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
- #include <mpci.h>
- #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table
+ #include <mpci.h>
+ #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table
#endif
#ifdef CONFIGURE_INIT
- rtems_multiprocessing_table Multiprocessing_configuration = {
- CONFIGURE_MP_NODE_NUMBER, /* local node number */
- CONFIGURE_MP_MAXIMUM_NODES, /* maximum # nodes */
- CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS, /* maximum # global objects */
- CONFIGURE_MP_MAXIMUM_PROXIES, /* maximum # proxies */
- CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK, /* MPCI stack > minimum */
- CONFIGURE_MP_MPCI_TABLE_POINTER /* ptr to MPCI config table */
- };
+ rtems_multiprocessing_table Multiprocessing_configuration = {
+ CONFIGURE_MP_NODE_NUMBER, /* local node number */
+ CONFIGURE_MP_MAXIMUM_NODES, /* maximum # nodes */
+ CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS, /* maximum # global objects */
+ CONFIGURE_MP_MAXIMUM_PROXIES, /* maximum # proxies */
+ CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK, /* MPCI stack > minimum */
+ CONFIGURE_MP_MPCI_TABLE_POINTER /* ptr to MPCI config table */
+ };
#endif
#define CONFIGURE_MULTIPROCESSING_TABLE &Multiprocessing_configuration
@@ -897,7 +897,7 @@ extern rtems_configuration_table Configuration;
#endif
#define CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API \
- ( \
+ _Configure_From_workspace( \
sizeof (POSIX_API_Control) + \
(sizeof (void *) * (CONFIGURE_MAXIMUM_POSIX_KEYS)) \
)
@@ -916,7 +916,7 @@ extern rtems_configuration_table Configuration;
#else
#define CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(_condvars) \
_Configure_Object_RAM(_condvars, \
- sizeof(POSIX_Condition_variables_Control) )
+ sizeof(POSIX_Condition_variables_Control) )
#endif
#ifndef CONFIGURE_MAXIMUM_POSIX_KEYS
@@ -941,7 +941,7 @@ extern rtems_configuration_table Configuration;
#else
#define CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(_queued_signals) \
_Configure_From_workspace( \
- (_queued_signals) * (sizeof(POSIX_signals_Siginfo_node)) )
+ (_queued_signals) * (sizeof(POSIX_signals_Siginfo_node)) )
#endif
#ifndef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
@@ -950,7 +950,7 @@ extern rtems_configuration_table Configuration;
#else
#define CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) \
_Configure_POSIX_Named_Object_RAM( \
- _message_queues, sizeof(POSIX_Message_queue_Control) )
+ _message_queues, sizeof(POSIX_Message_queue_Control) )
#endif
#ifndef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
@@ -959,7 +959,7 @@ extern rtems_configuration_table Configuration;
#else
#define CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) \
_Configure_POSIX_Named_Object_RAM( \
- _semaphores, sizeof(POSIX_Semaphore_Control) )
+ _semaphores, sizeof(POSIX_Semaphore_Control) )
#endif
#ifndef CONFIGURE_MAXIMUM_POSIX_BARRIERS
@@ -998,27 +998,27 @@ extern rtems_configuration_table Configuration;
#else
#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
- #define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT POSIX_Init
+ #define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT POSIX_Init
#endif
#ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
- #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
+ #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
(CONFIGURE_MINIMUM_TASK_STACK_SIZE * 2)
#endif
#ifdef CONFIGURE_INIT
- posix_initialization_threads_table POSIX_Initialization_threads[] = {
- { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT, \
- CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
- };
+ posix_initialization_threads_table POSIX_Initialization_threads[] = {
+ { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT, \
+ CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
+ };
#endif
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME \
POSIX_Initialization_threads
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
- sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
- sizeof(posix_initialization_threads_table)
+ sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
+ sizeof(posix_initialization_threads_table)
#endif /* CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
@@ -1030,22 +1030,21 @@ extern rtems_configuration_table Configuration;
#endif
#define CONFIGURE_MEMORY_FOR_POSIX \
- ( \
- CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ) + \
+ ( CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ) + \
CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES( \
- CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ) + \
+ CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ) + \
CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ) + \
CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( \
- CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \
+ CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \
CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES( \
- CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ) + \
+ CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ) + \
CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( \
- CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ) + \
+ CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ) + \
CONFIGURE_MEMORY_FOR_POSIX_BARRIERS(CONFIGURE_MAXIMUM_POSIX_BARRIERS) + \
CONFIGURE_MEMORY_FOR_POSIX_SPINLOCKS( \
- CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ) + \
+ CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ) + \
CONFIGURE_MEMORY_FOR_POSIX_RWLOCKS( \
- CONFIGURE_MAXIMUM_POSIX_RWLOCKS ) + \
+ CONFIGURE_MAXIMUM_POSIX_RWLOCKS ) + \
CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ) + \
(CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE) \
)
@@ -1155,7 +1154,7 @@ extern rtems_configuration_table Configuration;
#else
#define CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS(_message_buffers) \
_Configure_Object_RAM(_message_buffers, \
- sizeof(ITRON_Message_buffer_Control))
+ sizeof(ITRON_Message_buffer_Control))
#endif
#ifndef CONFIGURE_MAXIMUM_ITRON_PORTS
@@ -1194,40 +1193,40 @@ extern rtems_configuration_table Configuration;
#else
#ifndef CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT
- #define CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT ITRON_Init
+ #define CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT ITRON_Init
#endif
#ifndef CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES
- #define CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES TA_HLNG
+ #define CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES TA_HLNG
#endif
#ifndef CONFIGURE_ITRON_INIT_TASK_PRIORITY
- #define CONFIGURE_ITRON_INIT_TASK_PRIORITY 1
+ #define CONFIGURE_ITRON_INIT_TASK_PRIORITY 1
#endif
#ifndef CONFIGURE_ITRON_INIT_TASK_STACK_SIZE
- #define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE \
+ #define CONFIGURE_ITRON_INIT_TASK_STACK_SIZE \
CONFIGURE_MINIMUM_TASK_STACK_SIZE
#endif
#ifdef CONFIGURE_INIT
- itron_initialization_tasks_table ITRON_Initialization_tasks[] = {
- { 1, /* ID */
- { (VP) 0, /* exinfo */
- CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES, /* task attributes */
- CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT, /* task start address */
- CONFIGURE_ITRON_INIT_TASK_PRIORITY, /* initial task priority */
- CONFIGURE_ITRON_INIT_TASK_STACK_SIZE /* stack size */
- }
- }
- };
+ itron_initialization_tasks_table ITRON_Initialization_tasks[] = {
+ { 1, /* ID */
+ { (VP) 0, /* exinfo */
+ CONFIGURE_ITRON_INIT_TASK_ATTRIBUTES, /* task attributes */
+ CONFIGURE_ITRON_INIT_TASK_ENTRY_POINT, /* task start address */
+ CONFIGURE_ITRON_INIT_TASK_PRIORITY, /* initial task priority */
+ CONFIGURE_ITRON_INIT_TASK_STACK_SIZE /* stack size */
+ }
+ }
+ };
#endif
#define CONFIGURE_ITRON_INIT_TASK_TABLE_NAME ITRON_Initialization_tasks
#define CONFIGURE_ITRON_INIT_TASK_TABLE_SIZE \
- sizeof(CONFIGURE_ITRON_INIT_TASK_TABLE_NAME) / \
- sizeof(itron_initialization_tasks_table)
+ sizeof(CONFIGURE_ITRON_INIT_TASK_TABLE_NAME) / \
+ sizeof(itron_initialization_tasks_table)
#endif /* CONFIGURE_ITRON_HAS_OWN_INIT_TASK_TABLE */
@@ -1240,21 +1239,20 @@ extern rtems_configuration_table Configuration;
#endif
#define CONFIGURE_MEMORY_FOR_ITRON \
- ( \
- CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES( \
- CONFIGURE_MAXIMUM_ITRON_SEMAPHORES ) + \
+ ( CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES( \
+ CONFIGURE_MAXIMUM_ITRON_SEMAPHORES ) + \
CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS( \
- CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS ) + \
+ CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS ) + \
CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES( \
- CONFIGURE_MAXIMUM_ITRON_MAILBOXES ) + \
+ CONFIGURE_MAXIMUM_ITRON_MAILBOXES ) + \
CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS( \
- CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS ) + \
+ CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS ) + \
CONFIGURE_MEMORY_FOR_ITRON_PORTS( \
- CONFIGURE_MAXIMUM_ITRON_PORTS ) + \
+ CONFIGURE_MAXIMUM_ITRON_PORTS ) + \
CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS( \
- CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS ) + \
+ CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS ) + \
CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS( \
- CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS ) + \
+ CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS ) + \
CONFIGURE_ITRON_INIT_TASK_STACK_SIZE \
)
@@ -1273,12 +1271,18 @@ extern rtems_configuration_table Configuration;
#endif /* RTEMS_ITRON_API */
-#if defined(RTEMS_NEWLIB)
+/**
+ * This macro specifies the amount of memory to be reserved for the
+ * Newlib C Library reentrancy structure -- if we are using newlib.
+ */
+
+#if (defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY))
#include <reent.h>
- #define CONFIGURE_MEMORY_PER_TASK_FOR_LIBC_REENTRANCY sizeof(struct _reent)
+ #define CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB \
+ _Configure_From_workspace(sizeof(struct _reent))
#else
- #define CONFIGURE_MEMORY_PER_TASK_FOR_LIBC_REENTRANCY 0
+ #define CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB 0
#endif
/*
@@ -1300,9 +1304,9 @@ extern rtems_configuration_table Configuration;
((_tasks) * \
(_Configure_From_workspace(CONFIGURE_MINIMUM_TASK_STACK_SIZE) + \
_Configure_From_workspace(CONFIGURE_MEMORY_PER_TASK_FOR_CLASSIC_API) + \
- _Configure_From_workspace(CONFIGURE_MEMORY_PER_TASK_FOR_LIBC_REENTRANCY) + \
- _Configure_From_workspace(CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API) + \
- _Configure_From_workspace(CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API))) + \
+ CONFIGURE_MEMORY_PER_TASK_FOR_NEWLIB + \
+ CONFIGURE_MEMORY_PER_TASK_FOR_POSIX_API + \
+ CONFIGURE_MEMORY_PER_TASK_FOR_ITRON_API)) + \
_Configure_From_workspace((_number_FP_tasks) * CONTEXT_FP_SIZE) \
)
@@ -1395,17 +1399,29 @@ extern rtems_configuration_table Configuration;
_Configure_Object_RAM(1, sizeof(API_Mutex_Control))
/**
+ * This defines the memory used by the thread ready chains. There is
+ * one chain per priority.
+ */
+#define CONFIGURE_MEMORY_FOR_THREAD_READY_CHAINS \
+ _Configure_From_workspace( \
+ ((CONFIGURE_MAXIMUM_PRIORITY+1) * sizeof(Chain_Control)) )
+/**
+ * This defines the amount of memory reserved for the IDLE task
+ * control structures and stack.
+ */
+#define CONFIGURE_MEMORY_FOR_IDLE_TASK \
+ (CONFIGURE_MEMORY_FOR_TASKS(1, 0) + \
+ (CONFIGURE_IDLE_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE))
+
+/**
* This macro accounts for general RTEMS system overhead.
*/
#define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \
- ( \
- CONFIGURE_MEMORY_FOR_TASKS(1, 0) + /* IDLE and stack */ \
- (CONFIGURE_IDLE_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE) + \
- _Configure_From_workspace( /* Ready chains */ \
- ((CONFIGURE_MAXIMUM_PRIORITY+1) * sizeof(Chain_Control)) ) + \
- CONFIGURE_INTERRUPT_VECTOR_TABLE + /* interrupt vectors */ \
+ ( CONFIGURE_MEMORY_FOR_IDLE_TASK + /* IDLE and stack */ \
+ CONFIGURE_MEMORY_FOR_THREAD_READY_CHAINS + /* Ready chains */ \
+ CONFIGURE_INTERRUPT_VECTOR_TABLE + /* interrupt vectors */ \
CONFIGURE_INTERRUPT_STACK_MEMORY + /* interrupt stack */ \
- CONFIGURE_API_MUTEX_MEMORY /* allocation mutex */ \
+ CONFIGURE_API_MUTEX_MEMORY /* allocation mutex */ \
)
/*
@@ -1495,7 +1511,7 @@ extern rtems_configuration_table Configuration;
CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS) \
)
-#if 1 && defined(CONFIGURE_INIT)
+#if defined(CONFIGURE_CONFDEFS_DEBUG) && defined(CONFIGURE_INIT)
/**
* This is a debug mechanism, so if you need to, the executable will
* have a structure with various partial values. Add to this as you
@@ -1504,23 +1520,114 @@ extern rtems_configuration_table Configuration;
* down errors and analyzing where over and under allocations are.
*/
typedef struct {
- uint32_t Classic;
- uint32_t ITRON;
+ uint32_t SYSTEM_OVERHEAD;
+ uint32_t STATIC_EXTENSIONS;
+ uint32_t INITIALIZATION_THREADS_STACKS;
+
+ uint32_t CLASSIC;
uint32_t POSIX;
- uint32_t TASKS;
- uint32_t INIT_TASK_STACKS;
- uint32_t CLASSIC_SEMAPHORES;
+ uint32_t ITRON;
+
+ /* System overhead pieces */
+ uint32_t INTERRUPT_VECTOR_TABLE;
+ uint32_t INTERRUPT_STACK_MEMORY;
+ uint32_t THREAD_READY_CHAINS;
+ uint32_t MEMORY_FOR_IDLE_TASK;
+
+ /* Classic API Pieces */
+ uint32_t TASK_VARIABLES;
+ uint32_t TIMERS;
+ uint32_t SEMAPHORES;
+ uint32_t MESSAGE_QUEUES;
+ uint32_t PARTITIONS;
+ uint32_t REGIONS;
+ uint32_t PORTS;
+ uint32_t PERIODS;
+ uint32_t BARRIERS;
+ uint32_t USER_EXTENSIONS;
+#ifdef RTEMS_POSIX_API
+ /* POSIX API Pieces */
+ uint32_t POSIX_MUTEXES;
+ uint32_t POSIX_CONDITION_VARIABLES;
+ uint32_t POSIX_KEYS;
+ uint32_t POSIX_TIMERS;
+ uint32_t POSIX_QUEUED_SIGNALS;
+ uint32_t POSIX_MESSAGE_QUEUES;
+ uint32_t POSIX_SEMAPHORES;
+ uint32_t POSIX_BARRIERS;
+ uint32_t POSIX_SPINLOCKS;
+ uint32_t POSIX_RWLOCKS;
+#endif
+#ifdef RTEMS_ITRON_API
+ /* ITRON API Pieces */
+ uint32_t ITRON_SEMAPHORES;
+ uint32_t ITRON_EVENTFLAGS;
+ uint32_t ITRON_MAILBOXES;
+ uint32_t ITRON_MESSAGE_BUFFERS;
+ uint32_t ITRON_PORTS;
+ uint32_t ITRON_MEMORY_POOLS;
+ uint32_t ITRON_FIXED_MEMORY_POOLS;
+#endif
} Configuration_Debug_t;
Configuration_Debug_t Configuration_Memory_Debug = {
- CONFIGURE_MEMORY_FOR_CLASSIC, /* MEMORY_CLASSIC */
- CONFIGURE_MEMORY_FOR_ITRON, /* MEMORY_ITRON */
- CONFIGURE_MEMORY_FOR_POSIX, /* MEMORY_POSIX */
- CONFIGURE_MEMORY_FOR_TASKS( /* MEMORY_TASKS */
- CONFIGURE_TOTAL_TASKS_AND_THREADS, CONFIGURE_TOTAL_TASKS_AND_THREADS),
- CONFIGURE_INITIALIZATION_THREADS_STACKS, /* INIT_TASK_STACKS */
- CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES + \
- CONFIGURE_LIBIO_SEMAPHORES + CONFIGURE_TERMIOS_SEMAPHORES)
+ /* General Information */
+ CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD,
+ CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS,
+ CONFIGURE_INITIALIZATION_THREADS_STACKS,
+ CONFIGURE_MEMORY_FOR_CLASSIC,
+ CONFIGURE_MEMORY_FOR_POSIX,
+ CONFIGURE_MEMORY_FOR_ITRON,
+
+ /* System overhead pieces */
+ CONFIGURE_INTERRUPT_VECTOR_TABLE,
+ CONFIGURE_INTERRUPT_STACK_MEMORY,
+ CONFIGURE_MEMORY_FOR_THREAD_READY_CHAINS,
+ CONFIGURE_MEMORY_FOR_IDLE_TASK,
+
+ /* Classic API Pieces */
+ CONFIGURE_MEMORY_FOR_TASK_VARIABLES(CONFIGURE_MAXIMUM_TASK_VARIABLES),
+ CONFIGURE_MEMORY_FOR_TIMERS(CONFIGURE_MAXIMUM_TIMERS),
+ CONFIGURE_MEMORY_FOR_SEMAPHORES(CONFIGURE_MAXIMUM_SEMAPHORES +
+ CONFIGURE_LIBIO_SEMAPHORES + CONFIGURE_TERMIOS_SEMAPHORES),
+ CONFIGURE_MEMORY_FOR_MESSAGE_QUEUES(CONFIGURE_MAXIMUM_MESSAGE_QUEUES),
+ CONFIGURE_MEMORY_FOR_PARTITIONS(CONFIGURE_MAXIMUM_PARTITIONS),
+ CONFIGURE_MEMORY_FOR_REGIONS( CONFIGURE_MAXIMUM_REGIONS ),
+ CONFIGURE_MEMORY_FOR_PORTS(CONFIGURE_MAXIMUM_PORTS),
+ CONFIGURE_MEMORY_FOR_PERIODS(CONFIGURE_MAXIMUM_PERIODS),
+ CONFIGURE_MEMORY_FOR_BARRIERS(CONFIGURE_MAXIMUM_BARRIERS),
+ CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS),
+
+#ifdef RTEMS_POSIX_API
+ /* POSIX API Pieces */
+ CONFIGURE_MEMORY_FOR_POSIX_MUTEXES( CONFIGURE_MAXIMUM_POSIX_MUTEXES ),
+ CONFIGURE_MEMORY_FOR_POSIX_CONDITION_VARIABLES(
+ CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES ),
+ CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS ),
+ CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS(
+ CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ),
+ CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(
+ CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES ),
+ CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( CONFIGURE_MAXIMUM_POSIX_SEMAPHORES ),
+ CONFIGURE_MEMORY_FOR_POSIX_BARRIERS( CONFIGURE_MAXIMUM_POSIX_BARRIERS ),
+ CONFIGURE_MEMORY_FOR_POSIX_SPINLOCKS( CONFIGURE_MAXIMUM_POSIX_SPINLOCKS ),
+ CONFIGURE_MEMORY_FOR_POSIX_RWLOCKS( CONFIGURE_MAXIMUM_POSIX_RWLOCKS ),
+ CONFIGURE_MEMORY_FOR_POSIX_TIMERS( CONFIGURE_MAXIMUM_POSIX_TIMERS ),
+#endif
+
+#ifdef RTEMS_ITRON_API
+ /* ITRON API Pieces */
+ CONFIGURE_MEMORY_FOR_ITRON_SEMAPHORES( CONFIGURE_MAXIMUM_ITRON_SEMAPHORES ),
+ CONFIGURE_MEMORY_FOR_ITRON_EVENTFLAGS( CONFIGURE_MAXIMUM_ITRON_EVENTFLAGS ),
+ CONFIGURE_MEMORY_FOR_ITRON_MAILBOXES( CONFIGURE_MAXIMUM_ITRON_MAILBOXES ),
+ CONFIGURE_MEMORY_FOR_ITRON_MESSAGE_BUFFERS(
+ CONFIGURE_MAXIMUM_ITRON_MESSAGE_BUFFERS ),
+ CONFIGURE_MEMORY_FOR_ITRON_PORTS( CONFIGURE_MAXIMUM_ITRON_PORTS ),
+ CONFIGURE_MEMORY_FOR_ITRON_MEMORY_POOLS(
+ CONFIGURE_MAXIMUM_ITRON_MEMORY_POOLS ),
+ CONFIGURE_MEMORY_FOR_ITRON_FIXED_MEMORY_POOLS(
+ CONFIGURE_MAXIMUM_ITRON_FIXED_MEMORY_POOLS ),
+#endif
};
#endif
@@ -1572,9 +1679,9 @@ extern rtems_configuration_table Configuration;
posix_api_configuration_table Configuration_POSIX_API = {
CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS,
CONFIGURE_MAXIMUM_POSIX_MUTEXES + CONFIGURE_GNAT_MUTEXES +
- CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
+ CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES +
- CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
+ CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS,
CONFIGURE_MAXIMUM_POSIX_KEYS,
CONFIGURE_MAXIMUM_POSIX_TIMERS,
CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS,
@@ -1689,7 +1796,7 @@ extern rtems_configuration_table Configuration;
#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
void _POSIX_Threads_Initialize_user_threads_body(void);
void (*_POSIX_Threads_Initialize_user_threads_p)(void) =
- _POSIX_Threads_Initialize_user_threads_body;
+ _POSIX_Threads_Initialize_user_threads_body;
#else
void (*_POSIX_Threads_Initialize_user_threads_p)(void) = NULL;
#endif
@@ -1705,7 +1812,7 @@ extern rtems_configuration_table Configuration;
#ifdef CONFIGURE_ITRON_INIT_TASK_TABLE
void _ITRON_Task_Initialize_user_tasks_body(void);
void (*_ITRON_Initialize_user_tasks_p)(void) =
- _ITRON_Task_Initialize_user_tasks_body;
+ _ITRON_Task_Initialize_user_tasks_body;
#else
void (*_ITRON_Initialize_user_tasks_p)(void) = NULL;
#endif