summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/sysinit.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-01-25Remove make preinstallChris Johns1-118/+0
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
2017-10-11score: Remove CPU_set_ControlSebastian Huber1-1/+0
Use Processor_mask instead. Update #2514.
2017-10-05posix: Implement self-contained POSIX mutexSebastian Huber1-1/+0
POSIX mutexes are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3112.
2017-10-05posix: Implement self-contained POSIX condvarSebastian Huber1-1/+0
POSIX condition variables are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3113.
2017-10-05posix: Implement self-contained POSIX rwlocksSebastian Huber1-1/+0
POSIX rwlocks are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3115.
2017-10-05posix: Implement self-contained POSIX barriersSebastian Huber1-1/+0
POSIX barriers are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3114.
2017-01-26score: Fix user extensions orderSebastian Huber1-2/+2
Use forward and reverse order for initial and dynamic extensions. This is the behaviour documented in the C Users Guide. Change thread terminate order to backward to be in line with the thread delete order. Change fatal error order to forward to ensure that initial extensions are called first due the peculiar execution context of fatal error extensions, see _Terminate() documentation. Update #2692.
2017-01-13posix: shared memory supportGedare Bloom1-0/+1
Add POSIX shared memory manager (Shm). Includes a hook-based approach for the backing memory storage that defaults to the Workspace, and a test is provided using the heap. A test is also provided for the basic use of mmap'ing a shared memory object. This test currently fails at the mmap stage due to no support for mmap.
2016-11-23posix: Add self-contained pthread spinlockSebastian Huber1-1/+0
Turn pthread_spinlock_t into a self-contained object. On uni-processor configurations, interrupts are disabled in the lock/trylock operations and the previous interrupt status is restored in the corresponding unlock operations. On SMP configurations, a ticket lock is a acquired and released in addition. The self-contained pthread_spinlock_t object is defined by Newlib in <sys/_pthreadtypes.h>. typedef struct { struct _Ticket_lock_Control _lock; __uint32_t _interrupt_state; } pthread_spinlock_t; This implementation is simple and efficient. However, this test case of the Linux Test Project would fail due to call of printf() and sleep() during spin lock ownership: https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_spin_lock/1-2.c There is only limited support for profiling on SMP configurations. Delete CORE spinlock implementation. Update #2674.
2016-06-20score: Refine system initialization orderSebastian Huber1-3/+13
2016-02-03Use linker set for POSIX User Threads initSebastian Huber1-0/+1
Update #2408.
2016-02-03Use linker set for Classic User Tasks initSebastian Huber1-0/+1
Update #2408.
2016-02-03Use linker set for MPCI initializationSebastian Huber1-2/+5
Update #2408.
2016-02-03Use linker set for driver manager initializationSebastian Huber1-2/+7
Update #2408.
2016-02-03Use linker set for libio initializationSebastian Huber1-2/+2
Update #2408.
2016-02-03Use linker set for root file system initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Keys initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional CPU Set Handler initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Spinlock initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX RWLock initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Barrier initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Timer initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Semaphore initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Message Queue initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Mutex initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Condition Variable initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Cleanup initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Threads initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional POSIX Signals initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Barrier initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Rate Monotonic initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Dual-Ported Memory initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Region initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Partition initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Semaphore initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Message Queue initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Event initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Signal initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Timer initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Classic Tasks initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Extensions initializationSebastian Huber1-0/+1
Update #2408.
2016-02-03Optional Initial Extensions initializationSebastian Huber1-1/+2
Update #2408.
2016-02-03score: Create idle threads via linker setSebastian Huber1-0/+1
This allows a more fine grained rtems_initialize_data_structures(). Update #2408.
2015-12-11Use linker set for system initializationSebastian Huber1-0/+75
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.