| Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
Update #3220.
|
|
|
|
|
|
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.
|
|
Update #3170.
Update #3199.
|
|
Reject non-positive CONFIGURE_MICROSECONDS_PER_TICK values.
|
|
Move it from the configuration to a separate variable.
Update #3117.
Update #3182.
|
|
Update #3117.
Update #3182.
|
|
A non-integer clock ticks per second value may lead to inaccurate time
format conversions.
Update #3117.
Update #3182.
|
|
This value is frequently used. Avoid the function call overhead and the
integer division at run-time.
Update #3117.
Update #3182.
|
|
Update #2674.
Close #3112.
Close #3113.
Close #3114.
Close #3115.
Close #3116.
|
|
|
|
POSIX mutexes are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3112.
|
|
POSIX condition variables are now available in all configurations and no
longer depend on --enable-posix.
Update #2514.
Update #3113.
|
|
POSIX rwlocks are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3115.
|
|
POSIX barriers are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3114.
|
|
Remove the OBJECTS_UNLIMITED_OBJECTS flag for the memory size
configuration.
Update #3105.
|
|
The EDF SMP scheduler supports simple thread processor affinities
(see #3059) with a small run-time overhead. The current default SMP
scheduler lacks support for thread processor affinities at all. The EDF
SMP scheduler offers a good feature set for most applications. So, use
it by default. Run-time libraries like libgomp, MTAPI, work stealing
schedulers, language interpreters (e.g. Erlang virtual machine),
maintainence of per-processor data (e.g. Universal Memory Allocator
(UMA)), etc. use a one-to-one thread processor affinity for example.
Update #3063.
|
|
Update #3059.
|
|
Update #3056.
|
|
Do not use the processor count to determine if SMP is enabled. Instead
use a dedicated configuration option. Enable SMP by default in SMP
configurations.
Add CONFIGURE_DISABLE_SMP_CONFIGURATION to all test which would fail
otherwise.
Update #3001.
|
|
Bug introduced by f778b7f3f177a39505aeea61206e95fc54f875be.
Update #3001.
|
|
Update #3001.
|
|
Enable the SMP configuration by default in case SMP is enabled. Add
configuration option CONFIGURE_DISABLE_SMP_CONFIGURATION to disable it
explicitly.
Add CONFIGURE_DISABLE_SMP_CONFIGURATION to all test which would fail
otherwise.
Update #3001.
|
|
Update #2859.
|
|
Rename CONFIGURE_SMP_MAXIMUM_PROCESSORS to CONFIGURE_MAXIMUM_PROCESSORS
since the SMP part is superfluous.
Update #2894.
|
|
Close #2895.
|
|
|
|
|
|
Enable the SMP support if CONFIGURE_SMP_MAXIMUM_PROCESSORS > 1.
Update #2893.
|
|
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.
|
|
Add configuration option CONFIGURE_MAXIMUM_THREAD_NAME_SIZE.
Update #2858.
|
|
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.
|
|
Rename _Scheduler_Assignments into _Scheduler_Initial_assignments to
make it clear that they may not reflect the run-time scheduler
assignment.
Update #2797.
|
|
Update #2556.
|
|
Do not hide network file systems if RTEMS_NETWORKING is not defined,
since they may be provided by the LibBSD.
|
|
Account for the heap minimum block size.
|
|
The priority values are only valid within a scheduler instance. Thus,
the maximum priority value must be defined per scheduler instance. The
first scheduler instance defines PRIORITY_MAXIMUM. This implies that
RTEMS_MAXIMUM_PRIORITY and POSIX_SCHEDULER_MAXIMUM_PRIORITY are only
valid for threads of the first scheduler instance. Further
API/implementation changes are necessary to fix this.
Update #2556.
|
|
Update #2494.
Update #2555.
|
|
Account for maximum message size alignment. Simplify
_CORE_message_queue_Initialize().
|
|
Account for the terminating null character. Use _POSIX_PATH_MAX instead
of NAME_MAX according to _POSIX_Semaphore_Manager_initialization() and
_POSIX_Message_queue_Manager_initialization().
|
|
Start with a copy of the Priority SMP scheduler implementation.
Update #2510.
|
|
The mq_open() function returns a descriptor to a POSIX message queue
object identified by a name. This is similar to sem_open(). In
contrast to the POSIX semaphore the POSIX message queues use a separate
object for the descriptor. This extra object is superfluous, since the
object identifier can be used directly for this purpose, just like for
the semaphores.
Update #2702.
Update #2555.
|
|
Use a red-black tree to lookup active global objects by identifier or
name.
Update #2555.
|
|
Account for the global objects table.
|
|
Global objects are no real objects with an objects information
structure.
|
|
|
|
We must provide thread queue heads for the thread wait information for
each thread proxy (thread queue heads were introduced by
d7665823b208daefb6855591d808e1f3075cedcb). The thread proxy must be
allocated before the enqueue operation.
|
|
Create implementation header file.
Update #2555.
|