Commit Graph
1302 Commits
Author SHA1 Message Date
Sebastian Huber 9f9f1408a1 rtems: Clarify scheduler of created task 2022-03-29 17:19:42 +02:00
Joel Sherrill 9bbf4003f3 cpukit/include/rtems/confdefs/libpci.h: Manual file header clean up 2022-03-25 11:19:28 -05:00
Joel Sherrill c35816aaa1 cpukit/include/pci: Manual header file clean up 2022-03-25 11:19:28 -05:00
Joel Sherrill 9982e8e4c1 cpukit/include/drvmgr: Manual header file clean up 2022-03-25 11:19:28 -05:00
Joel Sherrill 06c9ab3e2f cpukit/include/pci.h: Manual header clean up 2022-03-25 11:19:28 -05:00
Joel Sherrill 3d43589812 cpukit/include/*.h: Change license to BSD-2
Updates #3053.
2022-03-25 11:19:28 -05:00
Joel Sherrill 77d1ac6c22 cpukit/include/sys: Change license to BSD-2.
Updates #3053.
2022-03-25 11:19:28 -05:00
Joel Sherrill fb5f575b9f cpukit/include/rtems: Change license to BSD-2
Updates #3053.
2022-03-25 11:19:28 -05:00
Joel Sherrill 3ec0b2676d cpukit/include/linux: Change license to BSD-2
Updates #3053.
2022-03-25 11:19:28 -05:00
Joel Sherrill 35d1f9a238 cpukit/include/dev: Change license to BSD-2
Updates #3053.
2022-03-25 11:19:28 -05:00
Joel Sherrill 628bd9b682 cpukit/: Update Eric Norum contact info and normalize file headers 2022-03-24 10:01:51 -05:00
Sebastian Huber 36615183d6 smp: Add fatal error
Add SMP-specifc SMP_FATAL_MULTITASKING_START_ON_NOT_ONLINE_PROCESSOR
fatal error.  This fatal error helps to diagnose a broken SMP startup
sequence.  Without this error a context switch using the NULL pointer
for the thread control block happens which may be difficult to debug.
2022-03-24 11:10:49 +01:00
Sebastian Huber cc1c944042 libtest: Add scheduler test support
Add support to record scheduler operations.  This support is especially
important for tests in SMP configurations since the thread switch extension is
quite difficult to use due to the asynchronous nature of thread dispatching.
In contrast, the scheduler operations occur normally in a deterministic order.

Update #3716.
2022-03-24 11:10:48 +01:00
Sebastian Huber d0de6fdfa8 score: Add _IO_Relax()
This function may be used to burn a couple of processor cycles with
minimum impact on the system bus.  It may be used in busy wait loops.
Since it is a global function, it is possible to wrap it in device
driver test code.
2022-03-24 11:10:48 +01:00
Sebastian Huber 7fe3c62329 thread.hpp: Fix redefinition of default argument
A default argument shall be defined only once.

Close #4632.
2022-03-18 16:13:04 +01:00
Sebastian Huber f311caf984 bsps/irq: Improve affinity set handling
Restrict the affinity set to the set of online processors.  Make sure
the affinity set for an interrupt vector contains at least one online
processor.

Update #3269.
2022-03-16 07:29:27 +01:00
Christian Mauderer bb2e149e0b cpukit: Automated IMD header file clean up
Use the same form of IMD in all copyright lines

Update #4625.
2022-03-10 09:15:19 +01:00
Christian Mauderer d7955b245e bsps and cpukit: Manual file header clean up
Updates #4625.
2022-03-10 09:15:19 +01:00
Joel Sherrill 255fe433fd cpukit/: Scripted embedded brains header file clean up
Updates #4625.
2022-03-10 08:43:49 +01:00
Joel Sherrill 2fb29836b0 cpukit/include/adainclude: Change license to BSD-2
Updates #3053.
2022-02-28 10:28:05 -06:00
Joel Sherrill 46a16ada0c cpukit/include/rtems/posix/*.h: Change license to BSD-2
Updates #3053.
2022-02-28 10:28:05 -06:00
Joel Sherrill a2ed06e38f cpukit/include/rtems/rtems/*.h: Change license to BSD-2
Updates #3053.
2022-02-28 10:28:05 -06:00
Joel Sherrill 7b85efb8c4 cpukit/include/rtems/score/[s-z]*.h: Change license to BSD-2
Updates #3053.
2022-02-28 10:28:04 -06:00
Joel Sherrill 7ebce35902 cpukit/include/rtems/score/[a-r]*.h: Change license to BSD-2
Updates #3053.
2022-02-28 10:28:04 -06:00
Sebastian Huber 8f1e8f8f26 kern_ntptime.c: Port to RTEMS
Remove previous adjtime() implementation.

Update #2348.
2022-02-21 14:16:41 +01:00
Sebastian Huber d69acf87dc config: CONFIGURE_DISABLE_NEWLIB_REENTRANCY
Do not initialize Thread_Control::libc_reent if
CONFIGURE_DISABLE_NEWLIB_REENTRANCY is defined.  This helps to catch errors
with a NULL pointer exception rather than a corruption of the thread control
block.
2022-02-21 11:08:30 +01:00
Christian Mauderer 7b5948d4d2 termios: Pass number of sent chars to l_start
At the moment the line discipline start function (l_start) has no
possibility to get feedback about the number of characters that have
been sent. This patch passes that information via an additional
parameter.

The change might trigger a warning on existing code because of a pointer
mismatch but it shouldn't break it. An existing function with the old
API will just ignore the additional parameter.

Update #4493
2022-02-10 09:07:26 +01:00
Sebastian Huber 2145e0c7bf Remove obsolete rtems_gxx_*() implementation
GCC versions prior to 6.1 used a RTEMS thread model based on
rtems_gxx_*() functions. GCC version 6.1 or later uses the
self-contained synchronization objects of Newlib <sys/lock.h> for the
RTEMS thread model.

Remove the obsolete implementation.

Close #3143.
2022-01-27 11:06:46 +01:00
Sebastian Huber d40477161e rtems: Fix Clock Manager parameter descriptions
Update #4572.
2021-12-22 08:17:50 +01:00
Vikram Garhwal 75b3f48aa3 libfdt: overlay: make overlay_get_target() public
This is done to get the target path for the overlay nodes which is very useful
in many cases. For example, Xen hypervisor needs it when applying overlays
because Xen needs to do further processing of the overlay nodes, e.g. mapping of
resources(IRQs and IOMMUs) to other VMs, creation of SMMU pagetables, etc.

Signed-off-by: Vikram Garhwal <fnu.vikram@xilinx.com>
Message-Id: <1637204036-382159-2-git-send-email-fnu.vikram@xilinx.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Andre Przywara c07e23899b fdtget: Fix signedness comparisons warnings
With -Wsign-compare, compilers warn about a mismatching signedness in
the different legs of the conditional operator, in fdtget.c.

In the questionable expression, we are constructing a 16-bit value out of
two unsigned 8-bit values, however are relying on the compiler's
automatic expansion of the uint8_t to a larger type, to survive the left
shift. This larger type happens to be an "int", so this part of the
expression becomes signed.

Fix this by explicitly blowing up the uint8_t to a larger *unsigned* type,
before doing the left shift. And while we are at it, convert the hardly
readable conditional operator usage into a sane switch/case expression.

This fixes "make fdtget", when compiled with -Wsign-compare.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Message-Id: <20210618172030.9684-3-andre.przywara@arm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Justin Covell a582ab37c2 Set last_comp_version correctly in new dtb and fix potential version issues in fdt_open_into
Changes in v3:
- Remove noop version sets
- Set version correctly on loaded fdt in fdt_open_into

Fixes: f1879e1a50eb ("Add limited read-only support for older (V2 and V3) device tree to libfdt.")

Signed-off-by: Justin Covell <jujugoboom@gmail.com>

Message-Id: <20201229041749.2187-1-jujugoboom@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Tom Rini 03b601aff1 libfdt: Internally perform potentially unaligned loads
Commits 6dcb8ba4 "libfdt: Add helpers for accessing unaligned words"
introduced changes to support unaligned reads for ARM platforms and
11738cf01f15 "libfdt: Don't use memcpy to handle unaligned reads on ARM"
improved the performance of these helpers.

On further discussion, while there are potential cases where we could be
used on platforms that do not fixup unaligned reads for us, making this
choice the default is very expensive in terms of binary size and access
time.  To address this, introduce and use new fdt{32,64}_ld_ functions
that call fdt{32,64}_to_cpu() as was done prior to the above mentioned
commits.  Leave the existing load functions as unaligned-safe and
include comments in both cases.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
Message-Id: <20201211022736.31657-1-trini@konsulko.com>
Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Tom Rini 064a1d76a4 libfdt: Check for 8-byte address alignment in fdt_ro_probe_()
The device tree must be loaded in to memory at an 8-byte aligned
address.  Add a check for this condition in fdt_ro_probe_() and a new
error code to return if we are not.

Signed-off-by: Tom Rini <trini@konsulko.com>
Message-Id: <20201104130605.28874-1-trini@konsulko.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Andre Przywara 611a2a5a51 libfdt: Fix kernel-doc comments
The API documentation in libfdt.h seems to follow the Linux kernel's
kernel-doc format[1].

Running "scripts/kernel-doc -v -none" on the file reports some problems,
mostly missing return values and missing parameter descriptions.

Fix those up by providing the missing bits, and fixing the other small
issues reported by the script.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/doc-guide/kernel-doc.rst
Message-Id: <20201012165331.25016-1-andre.przywara@arm.com>

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Patrick Oppenlander f5379faf35 libfdt: add extern "C" for C++
Signed-off-by: Patrick Oppenlander <patrick.oppenlander@gmail.com>
Message-Id: <20200616011217.15253-1-patrick.oppenlander@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-12-14 16:00:44 +01:00
Sebastian Huber 868e6d8a75 rtems: Improve ordering in <rtems/rtems/intr.h>
Move the data structure definitions closer to the directives which use
them.
2021-12-13 07:32:58 +01:00
Sebastian Huber fb17dfb1ad Avoid ISR_LOCK_MEMBER() since it confuses Doxygen
If RTEMS_SMP is not defined, then Doxygen adds the comments intended for
conditional the lock member to the next member.
2021-12-09 16:37:30 +01:00
Sebastian Huber 39e6f53298 score: Fix _Workspace_Initialize_for_one_area()
In _Workspace_Initialize_for_one_area(), properly check  if there is enough
free memory available for the configured workspace size.

The bug was introduced by commit 3d0620b607.
2021-12-07 16:32:54 +01:00
Sebastian Huber 69d643f711 score: Fix atomic stores for C++
Close #4566.
2021-12-07 12:24:15 +01:00
Sebastian Huber 9089bcc7b9 rtems: Move all Interrupt Manager stuff to intr.h
Since the previous Interrupt Manager Extension API moved to the
Interrupt Manager, we can move the interfaces to <rtems/rtems/intr.h> so
that they are available via #include <rtems.h>.
2021-12-02 15:11:39 +01:00
Sebastian Huber 0d83bed2e5 rtems: Move scheduler directives to own header
Move all rtems_scheduler_* directives to the new header file
<rtems/rtems/scheduler.h>.  Add a Scheduler Manager API and
implementation group.
2021-12-02 14:09:51 +01:00
Sebastian Huber d7205f0083 libc: Optimize malloc() initialization
The BSPs provide memory for the separate C Program Heap initialization
via _Memory_Get().  Most BSPs provide exactly one memory area.  Only two
BSPs provide more than one memory area (arm/altera-cyclone-v and
bsps/powerpc/mpc55xxevb).  Only if more than one memory area is
provided, there is a need to use _Heap_Extend().  Provide two
implementations to initialize the separate C Program Heap and let the
BSP select one of the implementations based on the number of provided
memory areas.  This gets rid of a dependency on _Heap_Extend().  It
also avoids dead code sections for most BSPs.

Change licence to BSD-2-Clause according to file history.

Update #3053.
2021-11-30 08:33:12 +01:00
Sebastian Huber 3d0620b607 score: Optimize Workspace Handler initialization
The BSPs provide memory for the workspace initialization via
_Memory_Get().  Most BSPs provide exactly one memory area.  Only two
BSPs provide more than one memory area (arm/altera-cyclone-v and
bsps/powerpc/mpc55xxevb).  Only if more than one memory area is
provided, there is a need to use _Heap_Extend().  Provide two
implementations to initialize the workspace handler and let the BSP
select one of the implementations based on the number of provided memory
areas.  This gets rid of a dependency on _Heap_Extend().  It also avoids
dead code sections for most BSPs.
2021-11-30 08:31:59 +01:00
Sebastian Huber 675e879b8b rtems: Replace "precision" with "resolution"
Resolution is the right term for the documented property.
2021-11-23 15:18:25 +01:00
Sebastian Huber 546846472a score: Properly continue the thread during restart
The _Thread_queue_Extract() does not deal with potential priority
updates and the SMP locking protocol handling.  Use
_Thread_queue_Continue().  For the POSIX signals processing this is
currently probably unnecessary, however, the use case is similar to the
restart so use the same appoach.

Close #4546.
2021-11-23 11:00:28 +01:00
Sebastian Huber 2e56aabdb1 score: Move _Thread_queue_Extract()
Move _Thread_queue_Extract() since this function is not used by the core
services (threads, semaphores, mutexes, message queues).

Update #4546.
2021-11-23 11:00:28 +01:00
Sebastian Huber e429e9742a score: Simplify thread wait state handling
Remove the THREAD_WAIT_STATE_READY_AGAIN and simply use the initial value to
indicate that a thread does not wait on something.  Rename
THREAD_WAIT_FLAGS_INITIAL to THREAD_WAIT_STATE_READY.  This change is necessary
so that _Thread_Continue() can be called for threads which never waited on
something (for example dormant threads).

Update #4546.
2021-11-23 11:00:28 +01:00
Sebastian Huber 50aef135a4 score: Add _Thread_MP_Extract_proxy()
Remove _Thread_queue_Extract_with_proxy() and move the proxy extraction
to _Thread_MP_Extract_proxy().  Move similar code blocks of the previous
caller of _Thread_queue_Extract_with_proxy() to helper functions.

Update #4546.
2021-11-23 11:00:28 +01:00
Sebastian Huber c69a70a597 rtems: Fix rtems_scheduler_remove_processor()
Return an error status for the following error condition in
rtems_scheduler_remove_processor():

While an attempt is made to remove a processor from a scheduler, while
the processor is the only processor owned by the scheduler, if a thread
exists which uses the scheduler as a helping scheduler, then the
processor shall not be removed.

The reason is that ask for help requests and withdraw node requests are
processed asynchronously in any order.  An ask for help request carried
out on a scheduler without a processor is undefined behaviour.

Update error status description.

Update #4544.
2021-11-23 11:00:28 +01:00