| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a simplified path evaluation function IMFS_eval_path_devfs() for a
device only IMFS configuration.
The code size can be further reduced by the application if it disables
the support for legacy IO drivers via:
#define CONFIGURE_IMFS_DISABLE_MKNOD
#define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
Obsolete CONFIGURE_MAXIMUM_DEVICES. Remove BSP_MAXIMUM_DEVICES.
Update #3894.
Update #3898.
|
|
|
|
| |
Update #3894.
|
|
|
|
|
|
|
| |
The use of CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER does not define
anything, so remove the <rtems/btimer.h> include.
Update #3875.
|
| |
|
| |
|
|
|
|
| |
Update #3885.
|
|
|
|
| |
Update #3881.
|
|
|
|
| |
Update #3881.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In uniprocessor and SMP configurations, the context switch extensions
were called during _Thread_Do_dispatch():
void _Thread_Do_dispatch( Per_CPU_Control *cpu_self, ISR_Level level )
{
Thread_Control *executing;
executing = cpu_self->executing;
...
do {
Thread_Control *heir;
heir = _Thread_Get_heir_and_make_it_executing( cpu_self );
...
_User_extensions_Thread_switch( executing, heir );
...
_Context_Switch( &executing->Registers, &heir->Registers );
...
} while ( cpu_self->dispatch_necessary );
...
}
In uniprocessor configurations, this is fine and the context switch
extensions are called for all thread switches except the very first
thread switch to the initialization thread. However, in SMP
configurations, the context switch may be invalidated and updated in the
low-level _Context_Switch() routine. See:
https://docs.rtems.org/branches/master/c-user/symmetric_multiprocessing_services.html#thread-dispatch-details
In case such an update happens, a thread will execute on the processor
which was not seen in the previous call of the context switch
extensions. This can confuse for example event record consumers which
use events generated by a context switch extension.
Fixing this is not straight forward. The context switch extensions call
must move after the low-level context switch. The problem here is that
we may end up in _Thread_Handler(). Adding the context switch
extensions call to _Thread_Handler() covers now also the thread switch
to the initialization thread. We also have to save the last executing
thread (ancestor) of the processor. Registers or the stack cannot be
used for this purpose. We have to add it to the per-processor
information. Existing extensions may be affected, since now context
switch extensions use the stack of the heir thread. The stack checker
is affected by this.
Calling the thread switch extensions in the low-level context switch is
difficult since at this point an intermediate stack is used which is
only large enough to enable servicing of interrupts.
Update #3885.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The CONFIGURE_DISABLE_SMP_CONFIGURATION configuration option and
rtems_configuration_is_smp_enabled() were added during the SMP support
development cycle as a workaround to fix some testsuite failures in SMP
configurations. All use cases were replaced with tests for specific
conditions. The configuration option and test macro were undocumented.
Close #3876.
|
|
|
|
|
|
|
|
|
|
| |
Determine the default for CONFIGURE_INIT_TASK_INITIAL_MODES depeding on
whether RTEMS_SMP is defined or not.
In the tests, use CONFIGURE_INIT_TASK_INITIAL_MODES to explicitly
request RTEMS_NO_PREEMPT mode if necessary.
Update #3876.
|
|
|
|
|
|
|
|
|
|
| |
The IO library used a POSIX key to store an optional POSIX user
environment pointer. This pulled in the POSIX keys support in every
application configuration. Add a user environment pointer to the thread
control block (TCB) instead. Applications which do not need the POSIX
user environment will just get an overhead of one pointer per thread.
Close #3882.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The CONFIGURE_HAS_OWN_INIT_TASK_TABLE and
CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE are the last *_HAS_OWN_*
configuration options. These two options are probably unused, see also:
* https://lists.rtems.org/pipermail/users/2019-April/033129.html
* https://lists.rtems.org/pipermail/users/2019-April/033130.html
Removing them simplifies the configuration. If there is a real user need
which shows up after the removal, we can resurrect them on demand.
Using CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE would have required the
use of the undocumented CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME and
CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE configuration options.
Update #3874.
|
|
|
|
|
| |
This improves API backward compatibility of RTEMS 5.1 to previous
versions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The CONFIGURE_HAS_OWN_INIT_TASK_TABLE and
CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE are the last *_HAS_OWN_*
configuration options. These two options are probably unused, see also:
* https://lists.rtems.org/pipermail/users/2019-April/033129.html
* https://lists.rtems.org/pipermail/users/2019-April/033130.html
Removing them simplifies the configuration. If there is a real user need
which shows up after the removal, we can resurrect them on demand.
Using CONFIGURE_HAS_OWN_INIT_TASK_TABLE would have required the use of
the undocumented CONFIGURE_INIT_TASK_TABLE and
CONFIGURE_INIT_TASK_TABLE_SIZE configuration options.
Update #3873.
|
|
|
|
| |
Update #3875.
|
|
|
|
| |
Update #3875.
|
|
|
|
|
|
| |
Include <mpci.h> for MPCI_Print_statistics().
Update #3875.
|
|
|
|
| |
Update #3870
|
| |
|
| |
|
|
|
|
| |
Update #3838.
|
|
|
|
|
|
|
|
| |
Allocate new thread queue heads during objects information extend. This
removes an error case and the last dependency on the workspace in
_Thread_Initialize().
Update #3835.
|
|
|
|
| |
Update #3835.
|
|
|
|
| |
Update #3835.
|
|
|
|
|
|
|
| |
Place idle and MPCI stacks into extra linker sections. This can be
optionally used by applications to control the placement of the stacks.
Update #3835.
|
|
|
|
| |
Make functions and data static.
|
|
|
|
|
|
|
| |
Replace the BSP_DIRTY_MEMORY BSP option with a CONFIGURE_DIRTY_MEMORY
configuration option.
Update #3843.
|
|
|
|
|
|
|
|
| |
Use a dedicate system initialization step to zero the memory used for
the workspace and C program heap.
This avoids dead code in case CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is
not configured.
|
|
|
|
|
|
|
| |
Canonicalize CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY and use
defined/undefined instead of TRUE/FALSE.
Close #3862.
|
|
|
|
|
| |
Remove CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY since it is not needed and
just increases the boot time.
|
|
|
|
| |
Update #3838.
|
| |
|
|
|
|
| |
Update #3861.
|
|
|
|
| |
Update #3838.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Commit e22554535796fc29a7ed7c5e2338128e324a621d changed the error status
from ENOMEM to EAGAIN.
Update #3857.
|
|
|
|
| |
Problem introduced by 77ac1519e863b7095f69c976353f7647c6f6f63b.
|
|
|
|
|
|
|
|
|
| |
The FACE Technical Standard, Edition 3.0 and later require the definition
of the subcommand SOCKCLOSE in <devctl.h>.
Reference: ​https://www.opengroup.org/face
closes #3856.
|
|
|
|
| |
Update #2408.
|
|
|
|
|
| |
Make sure PER_CPU_DATA_OFFSET() is tested also in uniprocessor
configurations.
|
| |
|
|
|
|
|
| |
Use the user provided now handler of the test configuration to get the
time in T_now().
|
|
|
|
|
|
|
|
| |
Use CONFIGURE_MAXIMUM_PROCESSORS to configure the EDF SMP scheduler
context. This avoids hard to debug configuration errors resulting in
memory corruptions.
Close #3815.
|
|
|
|
| |
Update #3845.
|
|
|
|
|
|
|
| |
Rename CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS into
CONFIGURE_MAXIMUM_FILE_DESCRIPTORS.
Update #3753.
|
|
|
|
|
|
| |
This function is unused.
Update #3735.
|
|
|
|
|
|
|
| |
Replace the user MPCI configuration table with a system provided
_MPCI_Configuration.
Update #3735.
|
|
|
|
| |
Update #3841.
|