summaryrefslogtreecommitdiffstats
path: root/cpukit/sapi/src/exinit.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Update _Copyright_NoticeSebastian Huber2020-05-061-3/+2
| | | | | Add the _Copyright_Notice to a special linker set to prevent a garbage collection of this item.
* Canonicalize config.h includeSebastian Huber2020-04-161-1/+1
| | | | | | | | Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
* config: Initialize IO drivers on demandSebastian Huber2020-02-261-13/+0
|
* bsps: Rework work area initializationSebastian Huber2020-02-041-0/+13
| | | | | | | | | | | | | | | | | | | | The work area initialization was done by the BSP through bsp_work_area_initialize(). This approach predated the system initialization through the system initialization linker set. The workspace and C program heap were unconditionally initialized. The aim is to support RTEMS application configurations which do not need the workspace and C program heap. In these configurations, the workspace and C prgram heap should not get initialized. Change all bsp_work_area_initialize() to implement _Memory_Get() instead. Move the dirty memory, sbrk(), per-CPU data, workspace, and malloc() heap initialization into separate system initialization steps. This makes it also easier to test the individual initialization steps. This change adds a dependency to _Heap_Extend() to all BSPs. This dependency will be removed in a follow up change. Update #3838.
* Remove superfluous <rtems/system.h> includesSebastian Huber2019-03-141-1/+0
|
* score: Use self-contained API mutexSebastian Huber2017-12-041-9/+0
| | | | | | | | | | Use a self-contained recursive mutex for API_Mutex_Control. The API mutexes are protected against asynchronous thread cancellation. Add dedicated mutexes for libatomic and TOD. Close #2629. Close #2630.
* score: Simplify linker set APISebastian Huber2016-12-061-8/+3
| | | | | | | | | | | | | | | | | Resurrect RTEMS_LINKER_SET_BEGIN() and RTEMS_LINKER_SET_END(). Add new macros RTEMS_LINKER_SET_ITEM_COUNT(), RTEMS_LINKER_SET_IS_EMPTY(), and RTEMS_LINKER_SET_FOREACH(). Remove confusing RTEMS_LINKER_SET_ASSIGN_BEGIN() and RTEMS_LINKER_SET_ASSIGN_END(). Fix RTEMS_LINKER_SET_SIZE() to return the size in characters as specified by the documentation. Update #2408. Update #2790.
* score: More robust linker setsSebastian Huber2016-10-121-2/+5
| | | | | Update #2408. Update #2790.
* score: Make _Objects_Information_table constSebastian Huber2016-05-041-1/+2
| | | | | The _Objects_Information_table is statically initialized. So, we can make it read-only.
* score: Use ISR lock for IO driver registrationSebastian Huber2016-03-141-1/+1
| | | | | | Create implementation header file. Update #2555.
* score: Replace watchdog handler implementationSebastian Huber2016-03-041-3/+0
| | | | | | | | | Use a red-black tree instead of delta chains. Close #2344. Update #2554. Update #2555. Close #2606.
* score: Avoid SCORE_EXTERNSebastian Huber2016-02-171-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | Delete SCORE_INIT. This finally removes the some.h: #ifndef SOME_XYZ_EXTERN #define SOME_XYZ_EXTERN extern #endif SOME_XYZ_EXTERN type xyz; some_xyz.c: #define SOME_XYZ_EXTERN #include <some.h> pattern in favour of some.h: extern type xyz; some_xyz.c #include <some.h> type xyz; Update #2559.
* Delete unused API extensionsSebastian Huber2016-02-031-26/+8
|
* Use linker set for MPCI initializationSebastian Huber2016-02-031-52/+2
| | | | Update #2408.
* Use linker set for driver manager initializationSebastian Huber2016-02-031-58/+0
| | | | Update #2408.
* posix: Delete empty _POSIX_API_Initialize()Sebastian Huber2016-02-031-7/+0
|
* Optional CPU Set Handler initializationSebastian Huber2016-02-031-3/+0
| | | | Update #2408.
* rtems: Delete empty _RTEMS_API_Initialize()Sebastian Huber2016-02-031-3/+0
|
* Optional Extensions initializationSebastian Huber2016-02-031-2/+0
| | | | Update #2408.
* Optional Initial Extensions initializationSebastian Huber2016-02-031-2/+0
| | | | Update #2408.
* score: Create idle threads via linker setSebastian Huber2016-02-031-15/+15
| | | | | | This allows a more fine grained rtems_initialize_data_structures(). Update #2408.
* Statically initialize _Objects_Information_tableSebastian Huber2016-02-031-6/+13
|
* Revert "drvmgr: Move bsp_driver_level_hook() calls"Sebastian Huber2016-01-261-0/+4
| | | | | | | | | The --enable-drvmgr configure option controls the driver manager startup and not if the driver manager is present or not. Presence of the driver manager is determined by the architecture (only available on sparc so far). This reverts commit 61bbf9194ff4bdbc1b48e6ac9919c02b358e5701.
* drvmgr: Move bsp_driver_level_hook() callsSebastian Huber2016-01-261-4/+0
|
* score: Statically initialize TOD handlerSebastian Huber2016-01-121-1/+0
|
* Use linker set for system initializationSebastian Huber2015-12-111-4/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make rtems_initialize_data_structures(), rtems_initialize_before_drivers() and rtems_initialize_device_drivers() static. Rename rtems_initialize_start_multitasking() to rtems_initialize_executive() and call the registered system initialization handlers in this function. Add system initialization API available via #include <rtems/sysinit.h>. Update the documentation accordingly. This is no functional change, only the method to call the existing initialization routines changes. Instead of direct function calls a table of function pointers contained in the new RTEMS system initialization linker set is used. This table looks like this (the actual addresses depend on the target). nm *.exe | grep _Linker | sort 0201a2d0 D _Linker_set__Sysinit_begin 0201a2d0 D _Linker_set__Sysinit_bsp_work_area_initialize 0201a2d4 D _Linker_set__Sysinit_bsp_start 0201a2d8 D _Linker_set__Sysinit_rtems_initialize_data_structures 0201a2dc D _Linker_set__Sysinit_bsp_libc_init 0201a2e0 D _Linker_set__Sysinit_rtems_initialize_before_drivers 0201a2e4 D _Linker_set__Sysinit_bsp_predriver_hook 0201a2e8 D _Linker_set__Sysinit_rtems_initialize_device_drivers 0201a2ec D _Linker_set__Sysinit_bsp_postdriver_hook 0201a2f0 D _Linker_set__Sysinit_end Add test sptests/spsysinit01. Update #2408.
* score: Statically initialize system stateSebastian Huber2015-12-081-4/+1
| | | | Update #2408.
* score: Delete unused API extensionsSebastian Huber2015-12-081-7/+0
| | | | Update #2408.
* score: Statically initialize API extensionsSebastian Huber2015-12-081-2/+0
| | | | Update #2408.
* Remove <rtems/debug.h>Sebastian Huber2015-12-071-7/+0
| | | | Close #2477.
* timecounter: Use in RTEMSAlexander Krutwig2015-05-201-0/+1
| | | | | | | | Replace timestamp implementation with FreeBSD bintime and timecounters. New test sptests/sptimecounter02. Update #2271.
* DRVMGR: added driver manager to cpukit/libdrvmgrDaniel Hellstrom2015-04-171-0/+63
|
* score: Statically initialize IO managerSebastian Huber2014-04-101-3/+0
| | | | | | | | | | | | This simplifies the RTEMS initialization and helps to avoid a memory overhead. The workspace demands of the IO manager were not included in the <rtems/confdefs.h> workspace size estimate. This is also fixed as a side-effect. Update documentation and move "Specifying Application Defined Device Driver Table" to the section end. This sub-section is not that important for the user. Mentioning this at the beginning may lead to confusion.
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* posix: Use interal mutex for once implementationSebastian Huber2014-03-191-1/+2
| | | | | | Enable pthread_once() for all configurations. The pthread_once() function is one means to initialize POSIX keys. Another use case is the C++ support.
* POSIX keys now enabled in all configurations.Joel Sherrill2014-03-071-10/+4
| | | | | | | Formerly POSIX keys were only enabled when POSIX threads were enabled. Because they are a truly safe alternative to per-task variables in an SMP system, they are being enabled in all configurations.
* sapi: Moved smp initialization and added cpuset initilization.Jennifer Averett2014-03-071-2/+5
| | | | | | | SMP must be initialized in order to know the current set of cores available. Without this, you cannot initialize the default cpu_set_t associated with Classic API tasks and POSIX threads.
* score: SMP initialization and shutdown changesSebastian Huber2014-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename _SMP_Request_other_cores_to_perform_first_context_switch() into _SMP_Request_start_multitasking() since this requests now a multitasking start on all configured and available processors. The name corresponds _Thread_Start_multitasking() and _SMP_Start_multitasking_on_secondary_processor() actions issued in response to this request. Move in source file to right place. Rename PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING into PER_CPU_STATE_READY_TO_START_MULTITASKING. Rename PER_CPU_STATE_BEGIN_MULTITASKING into PER_CPU_STATE_REQUEST_START_MULTITASKING. Rename _SMP_Request_other_cores_to_shutdown() into _SMP_Request_shutdown(). Add a per-CPU state lock to protect all changes. This was necessary to offer a controlled shutdown of the system (atomic read/writes alone are not sufficient for this kind of synchronization). Add documentation for Per_CPU_State. Delete debug output. New tests smptests/smpfatal01 and smptests/smpfatal02.
* score: Add and use <rtems/score/smpimpl.h>Sebastian Huber2014-02-191-10/+2
| | | | | Collect SMP implementation specific parts in the <rtems/score/smpimpl.h> header file.
* score: Delete _Thread_BSP_contextSebastian Huber2014-02-191-8/+2
| | | | | | | | | | | | Do not return to BSP context in the exit() shutdown path. This makes it possible to re-use the initialization stack. It can be used for the interrupt stack for example. On targets with a small RAM this is a considerable benefit. This change eliminates also some special cases and simplifies the code. Delete _Thread_Set_global_exit_status(), _Thread_Get_global_exit_status() and _Thread_Stop_multitasking().
* score: _Priority_bit_map_Handler_initialization()Sebastian Huber2013-08-201-2/+0
| | | | | | | Delete _Priority_bit_map_Handler_initialization() and rely on BSS initialization. Move definition of _Priority_Major_bit_map and _Priority_Bit_map to separate file. Move definition of __log2table also to this file.
* smp: Generalize _Thread_Start_multitasking()Sebastian Huber2013-08-051-2/+4
| | | | | | | | | | Add context parameter to _Thread_Start_multitasking() and use this function in rtems_smp_secondary_cpu_initialize(). This avoids duplication of code. Fix missing floating point context initialization in rtems_smp_secondary_cpu_initialize(). Now performed via _Thread_Start_multitasking().
* score: Delete SYSTEM_STATE_BEGIN_MULTITASKINGSebastian Huber2013-08-051-2/+0
| | | | | Nothing happened between the SYSTEM_STATE_BEGIN_MULTITASKING to SYSTEM_STATE_UP transition.
* score: Rename tod.h to todimpl.hSebastian Huber2013-08-011-1/+1
|
* score: Create mpci implementation headerSebastian Huber2013-07-261-3/+0
| | | | | Move implementation specific parts of mpci.h into new header file mpciimpl.h. The mpci.h contains now only the application visible API.
* score: Create thread implementation headerSebastian Huber2013-07-261-1/+1
| | | | | | | | Move implementation specific parts of thread.h and thread.inl into new header file threadimpl.h. The thread.h contains now only the application visible API. Remove superfluous header file includes from various files.
* score: Create prioritybitmap implementation headerSebastian Huber2013-07-261-1/+1
| | | | | | | | Move implementation specific parts of prioritybitmap.h and prioritybitmap.inl into new header file prioritybitmapimpl.h. The prioritybitmap.h contains now only the application visible API. Move content of bitfield.h into prioritybitmapimpl.h.
* score: Create scheduler implementation headerSebastian Huber2013-07-261-1/+2
| | | | | | Move implementation specific parts of scheduler.h and scheduler.inl into new header file schedulerimpl.h. The scheduler.h contains now only the application visible API.
* sapi: Create extension implementation headerSebastian Huber2013-07-231-1/+1
| | | | | | Move implementation specific parts of extension.h and extension.inl into new header file extensionimpl.h. The extension.h contains now only the application visible API.
* score: Create watchdog implementation headerSebastian Huber2013-07-221-1/+1
| | | | | | Move implementation specific parts of watchdog.h and watchdog.inl into new header file watchdogimpl.h. The watchdog.h contains now only the application visible API.