diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2008-12-15 19:21:01 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2008-12-15 19:21:01 +0000 |
commit | aac75d3b9bb7bf1b7ec10cfc3c20f58f1ab2240b (patch) | |
tree | abdcbbf04573f71bc24897dfb3ee5d14a8be9a1e /cpukit/sapi/src/posixapi.c | |
parent | 2008-12-15 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-aac75d3b9bb7bf1b7ec10cfc3c20f58f1ab2240b.tar.bz2 |
2008-12-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* itron/include/rtems/itron/itronapi.h, libmisc/capture/capture.c,
libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c,
libmisc/monitor/mon-itask.c, libmisc/monitor/mon-mpci.c,
posix/include/rtems/posix/config.h,
posix/include/rtems/posix/posixapi.h,
rtems/include/rtems/rtems/config.h,
rtems/include/rtems/rtems/rtemsapi.h, rtems/src/taskinitusers.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/itronapi.c,
sapi/src/posixapi.c, sapi/src/rtemsapi.c, score/src/isr.c,
score/src/thread.c, score/src/threadcreateidle.c,
score/src/threadstackallocate.c, score/src/threadstackfree.c,
score/src/wkspace.c: Eliminate pointers to API configuration tables
in the main configuration table. Reference the main configuration
table and the API configuration tables directly using the confdefs.h
version rather than obtaining a pointer to it. This eliminated some
variables, a potential fatal error, some unnecessary default
configuration structures. Overall, about a 4.5% reduction in the code
size for minimum and hello on the SPARC.
Diffstat (limited to 'cpukit/sapi/src/posixapi.c')
-rw-r--r-- | cpukit/sapi/src/posixapi.c | 68 |
1 files changed, 22 insertions, 46 deletions
diff --git a/cpukit/sapi/src/posixapi.c b/cpukit/sapi/src/posixapi.c index 9ff55ab63e..227949b42e 100644 --- a/cpukit/sapi/src/posixapi.c +++ b/cpukit/sapi/src/posixapi.c @@ -3,7 +3,7 @@ * * NOTE: * - * COPYRIGHT (c) 1989-1999. + * COPYRIGHT (c) 1989-2008. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -39,6 +39,7 @@ #include <rtems/posix/key.h> #include <rtems/posix/mqueue.h> #include <rtems/posix/mutex.h> +#include <rtems/posix/posixapi.h> #include <rtems/posix/priority.h> #include <rtems/posix/psignal.h> #include <rtems/posix/pthread.h> @@ -55,76 +56,51 @@ * XXX */ -const posix_api_configuration_table _POSIX_Default_configuration = { - 0, /* maximum_threads */ - 0, /* maximum_mutexes */ - 0, /* maximum_condition_variables */ - 0, /* maximum_keys */ - 0, /* maximum_timers */ - 0, /* maximum_queued_signals */ - 0, /* number_of_initialization_threads */ - 0, /* maximum_message_queues */ - 0, /* maximum_semaphores */ - 0, /* maximum_barriers */ - 0, /* maximum_spinlocks */ - 0, /* maximum_rwlocks */ - NULL /* User_initialization_threads_table */ -}; - Objects_Information *_POSIX_Objects[ OBJECTS_POSIX_CLASSES_LAST + 1 ]; - -void _POSIX_API_Initialize( - rtems_configuration_table *configuration_table -) +void _POSIX_API_Initialize(void) { - const posix_api_configuration_table *api_configuration; + const posix_api_configuration_table *api; /* XXX need to assert here based on size assumptions */ assert( sizeof(pthread_t) == sizeof(Objects_Id) ); - api_configuration = configuration_table->POSIX_api_configuration; - if ( !api_configuration ) - api_configuration = &_POSIX_Default_configuration; + /* + * Install our API Object Management Table and initialize the + * various managers. + */ + api = &Configuration_POSIX_API; _Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects; - _POSIX_signals_Manager_Initialization( - api_configuration->maximum_queued_signals - ); + _POSIX_signals_Manager_Initialization( api->maximum_queued_signals ); _POSIX_Threads_Manager_initialization( - api_configuration->maximum_threads, - api_configuration->number_of_initialization_threads, - api_configuration->User_initialization_threads_table + api->maximum_threads, + api->number_of_initialization_threads, + api->User_initialization_threads_table ); _POSIX_Condition_variables_Manager_initialization( - api_configuration->maximum_condition_variables + api->maximum_condition_variables ); - _POSIX_Key_Manager_initialization( api_configuration->maximum_keys ); + _POSIX_Key_Manager_initialization( api->maximum_keys ); - _POSIX_Mutex_Manager_initialization( - api_configuration->maximum_mutexes - ); + _POSIX_Mutex_Manager_initialization( api->maximum_mutexes ); - _POSIX_Message_queue_Manager_initialization( - api_configuration->maximum_message_queues - ); + _POSIX_Message_queue_Manager_initialization( api->maximum_message_queues ); - _POSIX_Semaphore_Manager_initialization( - api_configuration->maximum_semaphores - ); + _POSIX_Semaphore_Manager_initialization( api->maximum_semaphores ); - _POSIX_Timer_Manager_initialization( api_configuration->maximum_timers ); + _POSIX_Timer_Manager_initialization( api->maximum_timers ); - _POSIX_Barrier_Manager_initialization( api_configuration->maximum_barriers ); + _POSIX_Barrier_Manager_initialization( api->maximum_barriers ); - _POSIX_RWLock_Manager_initialization( api_configuration->maximum_rwlocks ); + _POSIX_RWLock_Manager_initialization( api->maximum_rwlocks ); - _POSIX_Spinlock_Manager_initialization(api_configuration->maximum_spinlocks); + _POSIX_Spinlock_Manager_initialization(api->maximum_spinlocks); } #endif |