Use _Workspace_Allocate_or_fatal_error() consistently in case auto
extend is turned off. This helps to avoid undefined behaviour in
_API_Mutex_Allocate() in case _API_Mutex_Information() fails.
Rename rtems_filesystem_location_exists_in_same_fs_instance_as() into
rtems_filesystem_location_exists_in_same_instance_as() for consistency
with other file system instance related functions.
Rename rtems_filesystem_location_is_root() into
rtems_filesystem_location_is_instance_root() to distinguish this from
the file system root directory of the current task environment.
Reject the removal of file system instance root nodes in rmdir() and
unlink() and return the EBUSY error status. File system instances can
be removed with unmount(). Remove root node special cases in IMFS,
DOSFS, and RFS.
The changes in _Thread_Dispatch() of commits
dad36c52b8 and
d4dc7c8196 introduced a severe bug which
destroys the real-time properties of RTEMS completely.
Consider the following scenario. We have three tasks L (lowest
priority), M (middle priority), and H (highest priority). Now let a
thread dispatch from M to L happen. An interrupt occurs in
_Thread_Dispatch() here:
void _Thread_Dispatch( void )
{
[...]
post_switch:
_ISR_Enable( level );
<-- INTERRUPT
<-- AFTER INTERRUPT
_Thread_Unnest_dispatch();
_API_extensions_Run_postswitch();
}
The interrupt event makes task H ready. The interrupt code will see
_Thread_Dispatch_disable_level > 0 and thus doesn't perform a
_Thread_Dispatch(). Now we return to position "AFTER INTERRUPT". This
means task L executes now although task H is ready! Task H will execute
once someone calls _Thread_Dispatch().
Formerly, mghttpd was conditional only on networking being
enabled. It uses on pthread and must also be conditional
on POSIX threads support being enabled.
The XDR library has a problem on architectures with short enums like the
default ARM EABI. Short enums means that the size of the enum type is
variable and the smallest integer type to hold all enum values will be
selected. For many enums this is char. The XDR library uses int32_t
for enum_t. There are several evil casts from an enum type to enum_t
which leads to invalid memory accesses on short enum architectures. A
workaround is to add appropriate dummy enum values.
- A typo prevents if_smc.c from being built when configured;
- The argument passed to the interrupt handler was incorrect and the
addition of support for RTEMS_INTERRUPT_SHARED exposed it;
- A "#ifdef DEBUG" is supposed to be "#if DEBUG" since 0 is supposed to
make it quiet.