| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix the passing of std[in/out] to child threads
- Fix deleting of managed memory in the key destructor
- Only set the key in the main loop thread
- Only allocate a shell env outside of the main loop
- Fix memory leak if the task start fails
- Remove error level from shell env, it cannot be returned this way. Add
exit_code but the API is broken so it cannot be returned.
Closes #3859
|
|
|
|
| |
Close #3949.
|
|
|
|
| |
Update #3949.
|
|
|
|
|
|
| |
Delete unused RTEMS_DECLARE_GLOBAL_SYMBOL().
Update #3799.
|
| |
|
|
|
|
| |
Update #3938.
|
|
|
|
|
|
| |
This configuration option is obsolete since 2014.
Update #1367.
|
|
|
|
|
|
|
| |
Add a test case which requires the use of __tls_guard() and
__tls_init().
Change license to BSD-2-Clause.
|
|
|
|
|
|
|
|
|
| |
Add rtems_record_dump_base64() and rtems_record_dump_base64_zlib().
Add CONFIGURE_RECORD_FATAL_DUMP_BASE64 and
CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB configuration options.
Update #3904.
|
|
|
|
| |
Update #3904.
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a race conditon in the reference counting of file descriptors
during a close() operation. After the call to the close handler, the
rtems_libio_free() function cleared the flags to zero. However, at this
point in time there may still exist some holders of the file descriptor.
With RTEMS_DEBUG enabled this could lead to failed assertions in
rtems_libio_iop_drop().
Change the code to use only atomic read-modify-write operations on the
rtems_libio_iop::flags.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|