| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
The use case for this function is the libbsd. In FreeBSD, the interrupt
setup and binding to a processor is done in two steps. Message
based interrupts like PCIe MSI and MSI-X interrupts can be implemented
through interrupt server entries. They are setup at the default
interrupt server and may optionally move to an interrupt server bound to
a specific processor.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By default, the interrupt vector of an interrupt server request is set
to a special value which is outside the range of vectors supported by
the interrupt controller hardware.
Add rtems_interrupt_server_request_set_vector() to set the interrupt
vector in an interrupt server request.
Calls to rtems_interrupt_server_request_submit() will disable the interrupt
vector of the request. After processing of the request by the interrupt
server the interrupt vector will be enabled again.
|
|
|
|
| |
Close #3071.
|
|
|
|
| |
Update #3071.
|
|
|
|
| |
Update #3071.
|
|
|
|
|
|
|
| |
This mechanism can be used to safely move the interrupt server from one
scheduler instance to another for example.
Update #3071.
|
|
|
|
|
|
|
| |
This allows load balancing of interrupt processing in SMP
configurations.
Update #3071.
|
| |
|
|
|
|
|
|
| |
This function may be used to do a two-step interrupt processing. The
first step is done in interrupt context which calls this function. The
second step is then done in the context of the interrupt server.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A new option RTEMS_INTERRUPT_REPLACE is introduced that permits updating
the first interrupt handler for the registered interrupt vector and
matching argument. If no match is found, the install function fails
with RTEMS_UNSATISFIED.
The Interrupt Manager Extension offers interrupt handlers with an
argument pointer. It is impossible to update two words (handler and
argument) atomically on most architectures. In order to avoid an SMP
lock in bsp_interrupt_handler_dispatch() which would degrade the
interrupt response time an alternative must be provided that makes it
possible to tear-down interrupt sources without an SMP lock.
Add RTEMS_INTERRUPT_REPLACE option to Interrupt Manager Extension. This
enables a clean tear-down of interrupt sources on SMP configurations.
Instead of an interrupt handler removal a replacement handler can be
installed to silence an interrupt source. This can be used in contexts
that allow no sophisticated synchronization (e.g. in atexit() or fatal
handlers).
|
|
|
|
|
| |
This is the result of a sed script which converts all uses
of @{ into a consistent form.
|
| |
|
|
|
|
|
| |
* include/rtems/irq-extension.h: Documentation.
* libmisc/monitor/mon-prmisc.c: Fix for multiprocessing configuration.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libcsupport/include/rtems/libio_.h,
libcsupport/src/fs_null_handlers.c: Null handlers are now const.
* libi2c/libi2c.c, libi2c/libi2c.h: Documentation. Do not create
semaphores on the fly.
* cpukit/libblock/src/bdpart.c: Fixed format specifier.
* cpukit/libblock/include/rtems/bdbuf.h, rtems/include/rtems.h,
rtems/include/rtems/rtems/asr.h, rtems/include/rtems/rtems/attr.h,
rtems/include/rtems/rtems/barrier.h,
rtems/include/rtems/rtems/barriermp.h,
rtems/include/rtems/rtems/cache.h, rtems/include/rtems/rtems/clock.h,
rtems/include/rtems/rtems/config.h, rtems/include/rtems/rtems/dpmem.h,
rtems/include/rtems/rtems/event.h,
rtems/include/rtems/rtems/eventmp.h,
rtems/include/rtems/rtems/eventset.h,
rtems/include/rtems/rtems/intr.h, rtems/include/rtems/rtems/message.h,
rtems/include/rtems/rtems/modes.h, rtems/include/rtems/rtems/mp.h,
rtems/include/rtems/rtems/msgmp.h, rtems/include/rtems/rtems/object.h,
rtems/include/rtems/rtems/part.h, rtems/include/rtems/rtems/partmp.h,
rtems/include/rtems/rtems/ratemon.h,
rtems/include/rtems/rtems/region.h,
rtems/include/rtems/rtems/regionmp.h,
rtems/include/rtems/rtems/rtemsapi.h, rtems/include/rtems/rtems/sem.h,
rtems/include/rtems/rtems/semmp.h, rtems/include/rtems/rtems/signal.h,
rtems/include/rtems/rtems/signalmp.h,
rtems/include/rtems/rtems/status.h,
rtems/include/rtems/rtems/support.h,
rtems/include/rtems/rtems/taskmp.h, rtems/include/rtems/rtems/tasks.h,
rtems/include/rtems/rtems/timer.h, rtems/include/rtems/rtems/types.h,
rtems/inline/rtems/rtems/support.inl: Documentation.
* include/rtems/irq-extension.h: Documentation. Added API for
interrupt servers.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Doxygen.in: Fixed project name. Added project number. Enabled auto
brief. Disabled include graphs.
* include/rtems/irq-extension.h, libblock/include/rtems/bdpart.h,
libblock/include/rtems/bdbuf.h, libblock/include/rtems/bdpart.h,
libblock/include/rtems/blkdev.h, libblock/include/rtems/diskdevs.h,
libblock/include/rtems/ramdisk.h, libblock/src/bdbuf.c,
libblock/src/blkdev.c, libblock/src/diskdevs.c, libblock/src/ramdisk.c:
Documentation.
* libblock/src/bdpart.c: Documentation. Fixed NULL pointer access.
|
|
|
|
|
| |
* include/rtems/irq-extension.h, include/rtems/irq.h: Spelling errors
and spacing.
|
|
|
|
| |
for system information and diagnostics
|
|
|