Commit Graph

33496 Commits

Author SHA1 Message Date
Sebastian Huber
d2c98c1104 dev/sc16is752: Fix declaration 2020-08-05 09:18:27 +02:00
Sebastian Huber
1b42158588 arm/atsam: Make interrupt server configurable
The external UART over SPI device SC16IS752 uses the interrupt server
for interrupt processing. The interrupt server is also heavily used by
libbsd. The interrupt processing for the SC16IS752 is time critical and
doesn't work if network traffic is processed at the same priority.
With #4033 custom interrupt servers are available. Change
atsam_sc16is752_spi_create() to support user-defined interrupt servers.
Introduced atsam_sc16is752_spi_config to cut down the argument count of
this function.

Close #4039.
2020-08-05 07:00:36 +02:00
Sebastian Huber
81631dea2e smpschededf02: Document reset() function 2020-08-04 15:48:32 +02:00
Sebastian Huber
9566538823 termios: Make rtems_termios_ttyMutex private
This mutex is used to maintain termios internal data structures.
2020-08-04 15:48:32 +02:00
Sebastian Huber
2ae557eb04 score: Use flexible-array member for C99 and later
This addresses compiler warnings like this:

warning: array subscript 0 is outside the bounds of an interior
zero-length array 'abc[0]' [-Wzero-length-bounds]
2020-08-04 15:48:32 +02:00
Christian Mauderer
87fdb206fa dosfs: Fix memory leak on failed mounts.
Currently if mount fails, a converter isn't destroyed. We have to take
care of two cases:

1. The user doesn't provide a converter.

In this case mounting a dosfs creates a default converter. This patch
makes sure that the converter is destroyed again if mount failes for
this case.

2. The user provides a converter.

In this case it's not sure that the dosfs specific routines are reached
because mount can fail before that. Therefore the user has to destroy
the converter himself again. This patch adds a documentation for that
and implements it in the media server.

Closes #4042.
2020-08-04 08:24:17 +02:00
Christian Mauderer
6014fadb5a bsps/beagle: Remove some debug output from I2C. 2020-08-03 09:11:13 +02:00
Sebastian Huber
29e7a069f8 dev/spi-memdrv: Fix use of uninit mem_param_ptr 2020-08-03 08:53:31 +02:00
Sebastian Huber
c60942ea5b rtems: Add rtems_interrupt_server_create()
Add rtems_interrupt_server_destroy().

Before this patch, the only way to create interrupt servers was
rtems_interrupt_server_initialize(). This function creates the default
interrupt server and in SMP configurations additional interrupt servers
for the additional processors. The interrupt server is heavily used by
libbsd. This includes the epoch based reclamation which performs time
consuming resource and memory deallocation work. This does not work well
with time critical services, for example an UART over SPI or I2C. One
approach to address this problem is to allow the application to create
custom interrupt servers with the right priority and task properties.
The interrupt server API accounted for this, however, it was not
implemented before this patch.

Close #4034.
2020-08-03 08:52:41 +02:00
Christian Mauderer
02c9eb8567 bsps/fdt: Make sure data is cache aligned
The cache of the fdt blob is flushed after copy. Therefore it should be
aligned.
2020-07-31 08:26:14 +02:00
Christian Mauderer
29a73d876c bsp/imx: Use GPIOs for SPI CS
The chip select lines of the iMX SPI module doesn't work well for a
generic API like the one RTEMS uses. The existing solution only worked
in some special cases and had odd bugs when trying transfers of
different sizes (like deselecting between each byte for lengths that are
not dividable by 4).

With this patch the same approach like on FreeBSD or Linux is used:
Treat the CS lines as GPIOs.

Update 3869
2020-07-31 08:26:14 +02:00
Christian Mauderer
0f4b911c01 bsp/imx: Add a GPIO driver
Update 3869
2020-07-31 08:26:14 +02:00
Sebastian Huber
a3bcc79a1f bsps/lm32: Use shared <bsp/irq.h>
Having a duplicate header with the shared includes is a build system
inconsistency.  You may use one header file to build the libraries and
another one is installed (overwriting the other).

Update #3269.
2020-07-31 07:01:09 +02:00
Aschref Ben Thabet
699f465c50 psxhdrs/strncat: Fix string truncation warning 2020-07-30 14:57:57 +02:00
Jan Sommer
21c7e3a41f i386: Fix possible race condition on first context restore
Make sure that the esp is restored before the eflags register.

When the init task is initially restored, system interrupts are activated when the
eflags register is loaded.
If the esp register still points to an address in the interrupt stack
area (from early system initlization) the ISR might overwrite its own
stack.

Closes #4031
2020-07-29 11:39:02 +02:00
Sebastian Huber
4444094d02 spmisc01: Include missing header file
Update #4032.
2020-07-24 07:31:43 +02:00
Sebastian Huber
7746b0def9 malloc: Make deferred free support optional
Only include the deferred free support if free() is actually used by the
application.

The free() implementation in RTEMS supports that allocated memory is
freed in interrupt context.  Since the heap is protected by a mutex, the
frees issued in interrupt context cannot immediately be freed to the
heap, instead they are placed on a deferred free list.  This list is
emptied by the core allocation function
rtems_heap_allocate_aligned_with_boundary().  This adds a dependency to
free() in rtems_heap_allocate_aligned_with_boundary(). In order to
better support applications which only allocate memory and never free
it, this dependency should be avoided.  Provide a weak default
implementation of _Malloc_Process_deferred_frees() for
rtems_heap_allocate_aligned_with_boundary().  In the free() module
provide the strong implementation.

Close #4032.
2020-07-24 07:14:02 +02:00
Sebastian Huber
6f94a830bd score: Add RTEMS_WEAK
Update #4032.
2020-07-24 07:12:58 +02:00
Sebastian Huber
b2ff5fe310 spintrcritical_support: Remove
This test support was replaced by T_interrupt_test() is no longer used.
2020-07-23 09:27:48 +02:00
Sebastian Huber
6b795cd75d spintrcritical24: Use T_interrupt_test() 2020-07-23 09:27:48 +02:00
Sebastian Huber
23b9debe12 spintrcritical23: Use T_interrupt_test() 2020-07-23 09:27:48 +02:00
Sebastian Huber
1414e710db spintrcritical22: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
59ee302074 spintrcritical21: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
38636e23c6 spintrcritical20: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
aebdd1dacb spintrcritical18: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
031e8246d4 spintrcritical16: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
1c2e05d4e3 spintrcritical15: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
5020a281b5 spintrcritical13/14: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
8cbba4496a spintrcritical11/12: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
be2f9d74cb spintrcritical10: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
a231276908 spintrcritical09: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
5f66ac86dd spintrcritical08: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
2831395812 spintrcritical06/spintrcritical07: Remove tests
These two tests check conditions which no longer exist in the thread
queue implementation.  The are obsolete since the change to use
red-black trees for the priority queues.
2020-07-23 09:27:47 +02:00
Sebastian Huber
21f7333979 spintrcritical01/2/3/4/5: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
857a65dc7e psxintrcritical01: Use T_interrupt_test() 2020-07-23 09:27:47 +02:00
Sebastian Huber
cc3fd8fcf1 libtest: Add T_interrupt_test()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
c9d2405848 libtest: Add rtems_test_run()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
dddc9a5818 libtest: Add quiet assert NULL pointer checks
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
467ef5b431 libtest: Add T_unreachable()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
d702c9f47d libtest: Make check message optional
This macro magic is in line with C11 and C++11, but limits the maximum
count of arguments.

Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
35d9af6901 libtest: Add T_CHECK_FMT
Rename internal function T_check_true() to T_check() and use the new
flag T_CHECK_FMT to indicate if a format string is present.  This is a
preparation step to make the format string optional.

Make the check context the first parameter.

The API remains the same.

Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
7781404026 libtest: Add T_stop()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
34e4df5590 libtest: Split POSIX Keys support
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
63e4278429 libtest: Add T_get_scope()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
cb3c6bdc0f libtest: Add push/pop fixture support
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
6b27e3251e libtest: Support custom scope messages via fixture
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
c081c68d34 libtest: Add T_make_runner()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
af9266541f libtest: Add T_get_one_clock_tick_busy()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
e3e3b871ee libtest: Add T_busy()
Update #3199.
2020-07-23 09:27:47 +02:00
Sebastian Huber
361404e87d libtest: Move <t.h> to <rtems/test.h>
Update #3199.
2020-07-23 09:27:45 +02:00