Commit Graph

33268 Commits

Author SHA1 Message Date
Geert Uytterhoeven
18a775942c libfdt: Fix FDT_ERR_NOTFOUND typos in documentation
The actual error is FDT_ERR_NOTFOUND, not FDT_ERR_NOT_FOUND.

Fixes: d29126c90acb0d70 ("libfdt: Add iterator over properties")
Fixes: 902d0f0953d0074b ("libfdt: Add a subnodes iterator macro")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02 07:52:19 +01:00
Geert Uytterhoeven
ab3efccd42 libfdt: Fix fdt_getprop_by_offset() parameter name in documentation
The second parameter of fdt_getprop_by_offset() is called "offset", not
"ffset".

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02 07:52:19 +01:00
David Gibson
bef6dfc588 libfdt: Don't use memcpy to handle unaligned reads on ARM
6dcb8ba4 "libfdt: Add helpers for accessing unaligned words" introduced
the fdt32_ld() and fdt64_ld() helpers for loading values from the FDT blob
which might not be naturally aligned.  This matters for ARM, where
attempting a plain unaligned load will often cause an exception.

However, it seems the memcpy() we used here was surprisingly expensive,
making libfdt nearly 6x slower on at least some ARM platforms.

This patch takes an alternative approach, using a bunch of 1-byte loads
and shifts to implement the helpers.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02 07:52:19 +01:00
John Clarke
8bd3915555 libfdt: return correct value if #size-cells property is not present
According to the device tree specification, the default value for
#size-cells is 1, but fdt_size_cells() was returning 2 if this property
was not present.

This patch also makes fdt_address_cells() and fdt_size_cells() conform
to the behaviour documented in libfdt.h. The defaults are only returned
if fdt_getprop() returns -FDT_ERR_NOTFOUND, otherwise the actual error
is returned.

Signed-off-by: John Clarke <johnc@kirriwa.net>
2020-03-02 07:52:18 +01:00
Sebastian Huber
fcb11510c6 score: Fix context switch extensions (SMP)
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.
2020-02-28 07:50:19 +01:00
Jan Sommer
2220a536e3 bsp/pc386: Fix interrupt enable to make debug option work again 2020-02-27 08:30:15 +01:00
Sebastian Huber
61e2d73f09 bsp/mpc5643l_*: Exclude some tests
These tests do not fit into the available memory.
2020-02-27 08:25:40 +01:00
Sebastian Huber
c36fae22fe config: Initialize IO drivers on demand 2020-02-26 08:23:28 +01:00
Sebastian Huber
01c97e643a score: Fix label defined but not used warning
Update #3835.
2020-02-25 14:50:43 +01:00
Sebastian Huber
470dfa1f35 config: Resurrect NULL_DRIVER_TABLE_ENTRY
This define may be used by application configurations for the
CONFIGURE_APPLICATION_EXTRA_DRIVERS definition.

Update #3875.
2020-02-25 14:03:33 +01:00
Sebastian Huber
a78495eda2 config: Add <rtems/confdefs/wkspace.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Change licence of <rtems/confdefs.h> to BSD-2-Clause according to file
history.

Update #3053.
Close #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
1fb1cf1a3a config: Add <rtems/confdefs/objectsposix.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
35e58c45f7 config: Add <rtems/confdefs/wkspacesupport.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
d20209b065 config: Add <rtems/confdefs/objectsclassic.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
f5a2fd8628 config: Add <rtems/confdefs/threads.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
40db0518a9 config: Add <rtems/confdefs/unlimited.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
7b6596f56f config: Add <rtems/confdefs/iodrivers.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
fe84ab5c6c config: Add <rtems/confdefs/console.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
8314933907 config: Add <rtems/confdefs/initthread.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:38 +01:00
Sebastian Huber
b15d1cba0f config: Add <rtems/confdefs/inittask.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
8f3419bd88 config: Add <rtems/confdefs/extensions.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
fb0caca9bc config: Add <rtems/confdefs/newlib.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
32561f5f5b config: Add <rtems/confdefs/clock.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
1d35bf2a7f config: Add <rtems/confdefs/mcpi.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
03aff2cf85 config: Add <rtems/confdefs/malloc.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Move the default configuration to library files so that application
configurations do not include the definitions for the default case.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
691b61498e config: Add <rtems/confdefs/bdbuf.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
591e973662 config: Add <rtems/confdefs/scheduler.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:37 +01:00
Sebastian Huber
16082210d6 config: Add <rtems/confdefs/libio.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:36 +01:00
Sebastian Huber
0f8e139e14 config: Add <rtems/confdefs/percpu.h>
Remove comments and copyrightable content from the moved content.  Use
BSD-2-Clause for new file according to file history of
<rtems/confdefs.h>.

Update #3053.
Update #3875.
2020-02-25 07:18:36 +01:00
Sebastian Huber
f45d0b2f8e config: Add <rtems/confdefs/bsp.h>
Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:36 +01:00
Sebastian Huber
55a7316159 config: Add <rtems/confdefs/libpci.h>
Derive copyright and license for new file form the file history.

Update #3875.
2020-02-25 07:18:36 +01:00
Sebastian Huber
cadd8d18e3 config: Add <rtems/confdefs/obsolete.h>
Unify handling of obsolete configuration options.  Remove comments and
copyrightable content from the moved content.  Use BSD-2-Clause license
for new file.

Update #3053.
Update #3875.
2020-02-25 07:18:36 +01:00
Sebastian Huber
0561cc1c7c config: Remove _Configure_Max_Objects()
Use rtems_resource_maximum_per_allocation() directly.  The use of
_Configure_Zero_or_one() was superfluous.

Update #3875.
2020-02-25 07:18:36 +01:00
Sebastian Huber
cfe683859c config: Improve _Configure_From_workspace()
Commit 4c09f4b3fe changed the cast from
size_t to ssize_t to try to fix an workspace issue on 16-bit
architectures.  This change was reverted by commit
7ff6115b8b for the workspace but not
_Configure_From_workspace().  Change the cast to uintptr_t to be in line
with the Heap Handler.
2020-02-25 07:18:36 +01:00
Sebastian Huber
c7f748a100 config: Remove CONFIGURE_DISABLE_SMP_CONFIGURATION
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.
2020-02-25 07:18:36 +01:00
Sebastian Huber
ca82a6038e rtems: Change timer server task mode setting
Use the non-preempt mode only in uni-processor configurations.

Update #3876.
2020-02-25 07:18:35 +01:00
Sebastian Huber
e50e42b820 score: _Scheduler_Is_non_preempt_mode_supported()
If the non-preempt mode for threads is supported depends on the
scheduler implementation.  Add
_Scheduler_Is_non_preempt_mode_supported() to indicate this.

Update #3876.
2020-02-25 07:18:35 +01:00
Sebastian Huber
5b8d80d726 config: CONFIGURE_INIT_TASK_INITIAL_MODES
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.
2020-02-25 07:18:35 +01:00
Sebastian Huber
51614bd5bf bsps/clock: Use _SMP_Get_processor_maximum()
Use a specific test to enable the fast idle mode instead of using the
rtems_configuration_is_smp_enabled() workaround.

Update #3876.
2020-02-25 07:18:35 +01:00
Sebastian Huber
1ada3e55f6 score: Add _SMP_Need_inter_processor_interrupts()
Test for the proper system condition instead of using the
rtems_configuration_is_smp_enabled() workaround.

Update #3876.
2020-02-25 07:18:35 +01:00
Sebastian Huber
ba74ebde74 libio: Add POSIX user environment pointer to TCB
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.
2020-02-25 07:18:26 +01:00
Sebastian Huber
ba46b9368e config: Add _SMP_Is_enabled
Move the is SMP enabled configuration constant out of the
configuration table.

Since this was the last configuration constant in
rtems_configuration_table, remove this type.

Update #3875.
2020-02-25 07:15:19 +01:00
Sebastian Huber
567455b67a config: Add _SMP_Processor_configure_maximum
Move the processor maximum configuration constant out of the
configuration table.

Update #3875.
2020-02-25 07:15:19 +01:00
Sebastian Huber
ad85c00966 config: Add _Workspace_Is_unified
Move the unified workspace configuration constant out of the
configuration table.

Provide a default definition of the unified workspace constant.

Update #3875.
2020-02-25 07:15:19 +01:00
Sebastian Huber
ba7b2df7f0 config: Add _Workspace_Size
Move the workspace size configuration constant out of the configuration
table.

Update #3875.
2020-02-25 07:15:19 +01:00
Sebastian Huber
5180762ccb config: Add _Thread_Idle_body
Move the idle thread body configuration constant out of the
configuration table.

Provide a default definition of the idle thread body constant.

Update #3875.
2020-02-25 07:15:19 +01:00
Sebastian Huber
c70d112599 config: Add _Thread_Idle_stack_size
Move the idle thread stack size configuration constant out of the
configuration table.

Add THREAD_IDLE_STACK_SIZE_DEFAULT and use it to provide a default
definition of the idle thread stack size constant.

Update #3875.
2020-02-25 07:15:19 +01:00
Sebastian Huber
308a2e0fdc config: Add _Watchdog_Ticks_per_timeslice
Move the ticks per timeslice configuration constant out of the
configuration table.

Add WATCHDOG_TICKS_PER_TIMESLICE_DEFAULT and use it to provide a default
definition of the watchdog ticks per timeslice constant.

Update #3875.
2020-02-25 07:15:18 +01:00
Sebastian Huber
b8648bdc0c config: Add _Watchdog_Microseconds_per_tick
Move the microseconds per tick configuration constant out of the
configuration table.

Add WATCHDOG_MICROSECONDS_PER_TICK_DEFAULT and use it to provide a
default definition of the watchdog ticks constants.

Update #3875.
2020-02-25 07:15:18 +01:00
Sebastian Huber
3b4795b46f config: Remove CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
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.
2020-02-25 07:15:18 +01:00