Changeset e6c87f7 in rtems for cpukit/sapi
- Timestamp:
- 03/04/14 21:54:12 (10 years ago)
- Branches:
- 4.11, 5, master
- Children:
- f4accfd
- Parents:
- 5c332349
- git-author:
- Joel Sherrill <joel.sherrill@…> (03/04/14 21:54:12)
- git-committer:
- Joel Sherrill <joel.sherrill@…> (03/07/14 19:21:11)
- Location:
- cpukit/sapi
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/sapi/include/confdefs.h
r5c332349 re6c87f7 30 30 31 31 /* 32 * COPYRIGHT (c) 1989-201 1.32 * COPYRIGHT (c) 1989-2014. 33 33 * On-Line Applications Research Corporation (OAR). 34 34 * … … 1723 1723 */ 1724 1724 1725 /* 1726 * POSIX Keys are available whether or not the POSIX API is enabled. 1727 */ 1728 #include <rtems/posix/key.h> 1729 1730 #ifndef CONFIGURE_MAXIMUM_POSIX_KEYS 1731 #define CONFIGURE_MAXIMUM_POSIX_KEYS 0 1732 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 0 1733 #else 1734 #ifndef CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 1735 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS \ 1736 (CONFIGURE_MAXIMUM_POSIX_KEYS * \ 1737 (CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_TASKS)) 1738 #endif 1739 #endif 1740 1741 #define CONFIGURE_MEMORY_FOR_POSIX_KEYS(_keys, _key_value_pairs) \ 1742 (_Configure_Object_RAM(_keys, sizeof(POSIX_Keys_Control) ) \ 1743 + _Configure_From_workspace( \ 1744 _key_value_pairs * sizeof(POSIX_Keys_Key_value_pair))) 1745 1746 /* 1747 * The rest of the POSIX threads API features are only available when 1748 * POSIX is enabled. 1749 */ 1750 1725 1751 #ifdef RTEMS_POSIX_API 1726 1727 1752 #include <sys/types.h> 1728 1753 #include <signal.h> … … 1733 1758 #include <rtems/posix/mqueue.h> 1734 1759 #include <rtems/posix/mutex.h> 1735 #include <rtems/posix/key.h>1736 1760 #include <rtems/posix/psignal.h> 1737 1761 #include <rtems/posix/pthread.h> … … 1775 1799 sizeof(POSIX_Condition_variables_Control) ) 1776 1800 1777 #ifndef CONFIGURE_MAXIMUM_POSIX_KEYS1778 #define CONFIGURE_MAXIMUM_POSIX_KEYS 01779 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 01780 #else1781 #ifndef CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS1782 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS \1783 CONFIGURE_MAXIMUM_POSIX_KEYS \1784 * (CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_TASKS)1785 #endif1786 #endif1787 #define CONFIGURE_MEMORY_FOR_POSIX_KEYS(_keys, _key_value_pairs) \1788 (_Configure_Object_RAM(_keys, sizeof(POSIX_Keys_Control) ) \1789 + _Configure_From_workspace(_key_value_pairs * sizeof(POSIX_Keys_Key_value_pair)))1790 1791 1801 #ifndef CONFIGURE_MAXIMUM_POSIX_TIMERS 1792 1802 #define CONFIGURE_MAXIMUM_POSIX_TIMERS 0 … … 1895 1905 CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES + \ 1896 1906 CONFIGURE_MAXIMUM_GO_CHANNELS + CONFIGURE_GO_INIT_CONDITION_VARIABLES) + \ 1897 CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS, \1898 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS ) + \1899 1907 CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( \ 1900 1908 CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ) + \ … … 2214 2222 CONFIGURE_TOTAL_TASKS_AND_THREADS, CONFIGURE_TOTAL_TASKS_AND_THREADS) + \ 2215 2223 CONFIGURE_MEMORY_FOR_CLASSIC + \ 2224 CONFIGURE_MEMORY_FOR_POSIX_KEYS( \ 2225 CONFIGURE_MAXIMUM_POSIX_KEYS, \ 2226 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS ) + \ 2216 2227 CONFIGURE_MEMORY_FOR_POSIX + \ 2217 2228 CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS + \ … … 2345 2356 CONFIGURE_MAXIMUM_ADA_TASKS + CONFIGURE_MAXIMUM_FAKE_ADA_TASKS + 2346 2357 CONFIGURE_GO_INIT_CONDITION_VARIABLES + CONFIGURE_MAXIMUM_GO_CHANNELS, 2347 CONFIGURE_MAXIMUM_POSIX_KEYS,2348 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS,2349 2358 CONFIGURE_MAXIMUM_POSIX_TIMERS, 2350 2359 CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS, … … 2390 2399 CONFIGURE_STACK_SPACE_SIZE, /* required stack space */ 2391 2400 CONFIGURE_MAXIMUM_USER_EXTENSIONS, /* maximum dynamic extensions */ 2401 CONFIGURE_MAXIMUM_POSIX_KEYS, /* POSIX keys are always */ 2402 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS, /* enabled */ 2392 2403 CONFIGURE_MICROSECONDS_PER_TICK, /* microseconds per clock tick */ 2393 2404 1000 * CONFIGURE_MICROSECONDS_PER_TICK, /* nanoseconds per clock tick */ … … 2526 2537 uint32_t USER_EXTENSIONS; 2527 2538 2539 /* POSIX API managers that are always enabled */ 2540 uint32_t POSIX_KEYS; 2541 2528 2542 #ifdef RTEMS_POSIX_API 2529 2543 /* POSIX API Pieces */ 2530 2544 uint32_t POSIX_MUTEXES; 2531 2545 uint32_t POSIX_CONDITION_VARIABLES; 2532 uint32_t POSIX_KEYS;2533 2546 uint32_t POSIX_TIMERS; 2534 2547 uint32_t POSIX_QUEUED_SIGNALS; … … 2581 2594 CONFIGURE_MEMORY_FOR_BARRIERS(CONFIGURE_BARRIERS), 2582 2595 CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS), 2596 CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS, \ 2597 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS ), 2583 2598 2584 2599 #ifdef RTEMS_POSIX_API … … 2590 2605 CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES + 2591 2606 CONFIGURE_MAXIMUM_GO_CHANNELS + CONFIGURE_GO_INIT_CONDITION_VARIABLES), 2592 CONFIGURE_MEMORY_FOR_POSIX_KEYS( CONFIGURE_MAXIMUM_POSIX_KEYS, \2593 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS ),2594 2607 CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS( 2595 2608 CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS ), … … 2656 2669 * If an attempt was made to configure POSIX objects and 2657 2670 * the POSIX API was not configured into RTEMS, error out. 2671 * 2672 * @note POSIX Keys are always available so the parameters 2673 * CONFIGURE_MAXIMUM_POSIX_KEYS and 2674 * CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS are not in this list. 2658 2675 */ 2659 2676 #if !defined(RTEMS_POSIX_API) … … 2661 2678 (CONFIGURE_MAXIMUM_POSIX_MUTEXES != 0) || \ 2662 2679 (CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES != 0) || \ 2663 (CONFIGURE_MAXIMUM_POSIX_KEYS != 0) || \2664 (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS != 0) || \2665 2680 (CONFIGURE_MAXIMUM_POSIX_TIMERS != 0) || \ 2666 2681 (CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS != 0) || \ … … 2748 2763 * likely to be error. 2749 2764 */ 2750 #if defined(RTEMS_POSIX_API) 2751 #if (CONFIGURE_MAXIMUM_POSIX_KEYS != 0) && \ 2752 (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS != 0) 2753 #if (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS < \ 2754 CONFIGURE_MAXIMUM_POSIX_KEYS) 2755 #error "Fewer POSIX Key pairs than POSIX Key!" 2756 #endif 2757 #endif 2765 #if (CONFIGURE_MAXIMUM_POSIX_KEYS != 0) && \ 2766 (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS != 0) 2767 #if (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS < CONFIGURE_MAXIMUM_POSIX_KEYS) 2768 #error "Fewer POSIX Key pairs than POSIX Key!" 2769 #endif 2758 2770 #endif 2759 2771 -
cpukit/sapi/include/rtems/config.h
r5c332349 re6c87f7 9 9 10 10 /* 11 * COPYRIGHT (c) 1989-201 1.11 * COPYRIGHT (c) 1989-2014. 12 12 * On-Line Applications Research Corporation (OAR). 13 13 * … … 143 143 */ 144 144 uint32_t maximum_extensions; 145 146 /** 147 * This field contains the maximum number of POSIX API 148 * keys which are configured for this application. 149 */ 150 uint32_t maximum_keys; 151 152 /** 153 * This field contains the maximum number of POSIX API 154 * key value pairs which are configured for this application. 155 * 156 * @note There can be potentially be a key/value pair for 157 * every thread to use every key. But normally this 158 * many are not needed in a system. 159 */ 160 uint32_t maximum_key_value_pairs; 145 161 146 162 /** -
cpukit/sapi/src/exinit.c
r5c332349 re6c87f7 2 2 * @file 3 3 * 4 * @brief Device Driver Initialization Functions4 * @brief Initialization Manager 5 5 * 6 6 * @ingroup ClassicRTEMS … … 8 8 9 9 /* 10 * Initialization Manager 11 * 12 * COPYRIGHT (c) 1989-2011. 10 * COPYRIGHT (c) 1989-2014. 13 11 * On-Line Applications Research Corporation (OAR). 14 12 * … … 58 56 59 57 #include <rtems/rtems/rtemsapi.h> 60 #ifdef RTEMS_POSIX_API 61 #include <rtems/posix/posixapi.h> 62 #endif 58 #include <rtems/posix/posixapi.h> 63 59 64 60 Objects_Information *_Internal_Objects[ OBJECTS_INTERNAL_CLASSES_LAST + 1 ]; … … 148 144 _IO_Manager_initialization(); 149 145 150 #ifdef RTEMS_POSIX_API 151 _POSIX_API_Initialize(); 152 #endif 146 _POSIX_API_Initialize(); 153 147 154 148 _System_state_Set( SYSTEM_STATE_BEFORE_MULTITASKING ); -
cpukit/sapi/src/posixapi.c
r5c332349 re6c87f7 8 8 9 9 /* 10 * COPYRIGHT (c) 1989-201 0.10 * COPYRIGHT (c) 1989-2014. 11 11 * On-Line Applications Research Corporation (OAR). 12 12 * … … 23 23 24 24 #include <rtems/system.h> /* include this before checking RTEMS_POSIX_API */ 25 26 #include <rtems/config.h> 27 #include <rtems/posix/keyimpl.h> 28 #include <rtems/posix/posixapi.h> 29 25 30 #ifdef RTEMS_POSIX_API 26 27 31 #include <sys/types.h> 28 32 #include <mqueue.h> 29 33 #include <rtems/config.h> 30 34 #include <rtems/posix/barrierimpl.h> 35 #include <rtems/posix/config.h> 31 36 #include <rtems/posix/condimpl.h> 32 #include <rtems/posix/config.h>33 #include <rtems/posix/keyimpl.h>34 37 #include <rtems/posix/mqueueimpl.h> 35 38 #include <rtems/posix/muteximpl.h> 36 39 #include <rtems/posix/onceimpl.h> 37 #include <rtems/posix/posixapi.h>38 40 #include <rtems/posix/priorityimpl.h> 39 41 #include <rtems/posix/psignalimpl.h> … … 44 46 #include <rtems/posix/spinlockimpl.h> 45 47 #include <rtems/posix/time.h> 48 #endif 46 49 47 50 void _POSIX_Fatal_error( POSIX_Fatal_domain domain, int eno ) … … 69 72 _Objects_Information_table[OBJECTS_POSIX_API] = _POSIX_Objects; 70 73 71 _POSIX_signals_Manager_Initialization();72 _POSIX_Threads_Manager_initialization();73 _POSIX_Condition_variables_Manager_initialization();74 74 _POSIX_Key_Manager_initialization(); 75 _POSIX_Mutex_Manager_initialization(); 76 _POSIX_Message_queue_Manager_initialization(); 77 _POSIX_Once_Manager_initialization(); 78 _POSIX_Semaphore_Manager_initialization(); 79 _POSIX_Timer_Manager_initialization(); 80 _POSIX_Barrier_Manager_initialization(); 81 _POSIX_RWLock_Manager_initialization(); 82 _POSIX_Spinlock_Manager_initialization(); 75 76 #ifdef RTEMS_POSIX_API 77 _POSIX_signals_Manager_Initialization(); 78 _POSIX_Threads_Manager_initialization(); 79 _POSIX_Condition_variables_Manager_initialization(); 80 _POSIX_Mutex_Manager_initialization(); 81 _POSIX_Message_queue_Manager_initialization(); 82 _POSIX_Once_Manager_initialization(); 83 _POSIX_Semaphore_Manager_initialization(); 84 _POSIX_Timer_Manager_initialization(); 85 _POSIX_Barrier_Manager_initialization(); 86 _POSIX_RWLock_Manager_initialization(); 87 _POSIX_Spinlock_Manager_initialization(); 88 #endif 83 89 } 84 85 #endif
Note: See TracChangeset
for help on using the changeset viewer.