RTEMS 6.1-rc1
intr.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
11/*
12 * Copyright (C) 2008, 2022 embedded brains GmbH & Co. KG
13 * Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37/*
38 * This file is part of the RTEMS quality process and was automatically
39 * generated. If you find something that needs to be fixed or
40 * worded better please post a report or patch to an RTEMS mailing list
41 * or raise a bug report:
42 *
43 * https://www.rtems.org/bugs.html
44 *
45 * For information on updating and regenerating please refer to the How-To
46 * section in the Software Requirements Engineering chapter of the
47 * RTEMS Software Engineering manual. The manual is provided as a part of
48 * a release. For development sources please refer to the online
49 * documentation at:
50 *
51 * https://docs.rtems.org
52 */
53
54/* Generated from spec:/rtems/intr/if/header */
55
56#ifndef _RTEMS_RTEMS_INTR_H
57#define _RTEMS_RTEMS_INTR_H
58
59#include <stddef.h>
60#include <stdint.h>
61#include <sys/cpuset.h>
62#include <rtems/rtems/attr.h>
63#include <rtems/rtems/modes.h>
64#include <rtems/rtems/options.h>
65#include <rtems/rtems/status.h>
66#include <rtems/rtems/types.h>
68#include <rtems/score/chain.h>
69#include <rtems/score/cpu.h>
70#include <rtems/score/cpuopts.h>
71#include <rtems/score/isr.h>
73#include <rtems/score/isrlock.h>
74#include <rtems/score/smplock.h>
75
76#ifdef __cplusplus
77extern "C" {
78#endif
79
80/* Generated from spec:/rtems/intr/if/group */
81
95/* Generated from spec:/rtems/intr/if/vector-number */
96
103
104/* Generated from spec:/rtems/intr/if/level */
105
112
113/* Generated from spec:/rtems/intr/if/isr */
114
124
125/* Generated from spec:/rtems/intr/if/isr-entry */
126
133#if CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE
134 typedef ISR_Handler_entry rtems_isr_entry;
135#else
136 typedef void ( *rtems_isr_entry )( void * );
137#endif
138
139/* Generated from spec:/rtems/intr/if/catch */
140
189 rtems_isr_entry new_isr_handler,
190 rtems_vector_number vector,
191 rtems_isr_entry *old_isr_handler
192);
193
194#if !defined(RTEMS_SMP)
195 /* Generated from spec:/rtems/intr/if/disable */
196
264 #define rtems_interrupt_disable( _isr_cookie ) _ISR_Local_disable( _isr_cookie )
265#endif
266
267#if !defined(RTEMS_SMP)
268 /* Generated from spec:/rtems/intr/if/enable */
269
311 #define rtems_interrupt_enable( _isr_cookie ) _ISR_Local_enable( _isr_cookie )
312#endif
313
314#if !defined(RTEMS_SMP)
315 /* Generated from spec:/rtems/intr/if/flash */
316
354 #define rtems_interrupt_flash( _isr_cookie ) _ISR_Local_flash( _isr_cookie )
355#endif
356
357/* Generated from spec:/rtems/intr/if/local-disable */
358
427#define rtems_interrupt_local_disable( _isr_cookie ) \
428 _ISR_Local_disable( _isr_cookie )
429
430/* Generated from spec:/rtems/intr/if/local-enable */
431
468#define rtems_interrupt_local_enable( _isr_cookie ) \
469 _ISR_Local_enable( _isr_cookie )
470
471/* Generated from spec:/rtems/intr/if/is-in-progress */
472
495#define rtems_interrupt_is_in_progress() _ISR_Is_in_progress()
496
497/* Generated from spec:/rtems/intr/if/lock */
498
505
506/* Generated from spec:/rtems/intr/if/lock-context */
507
515
516/* Generated from spec:/rtems/intr/if/lock-initialize */
517
532#define rtems_interrupt_lock_initialize( _lock, _name ) \
533 _ISR_lock_Initialize( _lock, _name )
534
535/* Generated from spec:/rtems/intr/if/lock-destroy */
536
564#define rtems_interrupt_lock_destroy( _lock ) _ISR_lock_Destroy( _lock )
565
566/* Generated from spec:/rtems/intr/if/lock-acquire */
567
621#define rtems_interrupt_lock_acquire( _lock, _lock_context ) \
622 _ISR_lock_ISR_disable_and_acquire( _lock, _lock_context )
623
624/* Generated from spec:/rtems/intr/if/lock-release */
625
664#define rtems_interrupt_lock_release( _lock, _lock_context ) \
665 _ISR_lock_Release_and_ISR_enable( _lock, _lock_context )
666
667/* Generated from spec:/rtems/intr/if/lock-acquire-isr */
668
711#if defined(RTEMS_SMP)
712 #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \
713 _SMP_lock_Acquire( \
714 &( _lock )->Lock, \
715 &( _lock_context )->Lock_context \
716 )
717#else
718 #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \
719 do { (void) _lock_context; } while ( 0 )
720#endif
721
722/* Generated from spec:/rtems/intr/if/lock-release-isr */
723
757#if defined(RTEMS_SMP)
758 #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \
759 _SMP_lock_Release( \
760 &( _lock )->Lock, \
761 &( _lock_context )->Lock_context \
762 )
763#else
764 #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \
765 do { (void) _lock_context; } while ( 0 )
766#endif
767
768/* Generated from spec:/rtems/intr/if/lock-isr-disable */
769
790#define rtems_interrupt_lock_interrupt_disable( _lock_context ) \
791 _ISR_lock_ISR_disable( _lock_context )
792
793/* Generated from spec:/rtems/intr/if/lock-declare */
794
808#define RTEMS_INTERRUPT_LOCK_DECLARE( _specifier, _designator ) \
809 ISR_LOCK_DECLARE( _specifier, _designator )
810
811/* Generated from spec:/rtems/intr/if/lock-define */
812
835#define RTEMS_INTERRUPT_LOCK_DEFINE( _specifier, _designator, _name ) \
836 ISR_LOCK_DEFINE( _specifier, _designator, _name )
837
838/* Generated from spec:/rtems/intr/if/lock-initializer */
839
853#define RTEMS_INTERRUPT_LOCK_INITIALIZER( _name ) ISR_LOCK_INITIALIZER( _name )
854
855/* Generated from spec:/rtems/intr/if/lock-member */
856
867#define RTEMS_INTERRUPT_LOCK_MEMBER( _designator ) \
868 ISR_LOCK_MEMBER( _designator )
869
870/* Generated from spec:/rtems/intr/if/lock-reference */
871
884#define RTEMS_INTERRUPT_LOCK_REFERENCE( _designator, _target ) \
885 ISR_LOCK_REFERENCE( _designator, _target )
886
887/* Generated from spec:/rtems/intr/if/shared */
888
895#define RTEMS_INTERRUPT_SHARED ( (rtems_option) 0x00000000 )
896
897/* Generated from spec:/rtems/intr/if/unique */
898
907#define RTEMS_INTERRUPT_UNIQUE ( (rtems_option) 0x00000001 )
908
909/* Generated from spec:/rtems/intr/if/replace */
910
917#define RTEMS_INTERRUPT_REPLACE ( (rtems_option) 0x00000002 )
918
919/* Generated from spec:/rtems/intr/if/is-shared */
920
929#define RTEMS_INTERRUPT_IS_SHARED( _options ) \
930 ( ( _options ) & RTEMS_INTERRUPT_SHARED )
931
932/* Generated from spec:/rtems/intr/if/is-unique */
933
942#define RTEMS_INTERRUPT_IS_UNIQUE( _options ) \
943 ( ( _options ) & RTEMS_INTERRUPT_UNIQUE )
944
945/* Generated from spec:/rtems/intr/if/is-replace */
946
955#define RTEMS_INTERRUPT_IS_REPLACE( _options ) \
956 ( ( _options ) & RTEMS_INTERRUPT_REPLACE )
957
958/* Generated from spec:/rtems/intr/if/handler */
959
965typedef void ( *rtems_interrupt_handler )( void * );
966
967/* Generated from spec:/rtems/intr/if/per-handler-routine */
968
976 void *,
977 const char *,
980 void *
981);
982
983/* Generated from spec:/rtems/intr/if/entry */
984
1010
1014 void *arg;
1015
1020
1024 const char *info;
1026
1027/* Generated from spec:/rtems/intr/if/entry-initializer */
1028
1044#define RTEMS_INTERRUPT_ENTRY_INITIALIZER( _routine, _arg, _info ) \
1045 { _routine, _arg, NULL, _info }
1046
1047/* Generated from spec:/rtems/intr/if/entry-initialize */
1048
1075static inline void rtems_interrupt_entry_initialize(
1078 void *arg,
1079 const char *info
1080)
1081{
1082 entry->handler = routine;
1083 entry->arg = arg;
1084 entry->next = NULL;
1085 entry->info = info;
1086}
1087
1088/* Generated from spec:/rtems/intr/if/entry-install */
1089
1171 rtems_vector_number vector,
1172 rtems_option options,
1174);
1175
1176/* Generated from spec:/rtems/intr/if/entry-remove */
1177
1223 rtems_vector_number vector,
1225);
1226
1227/* Generated from spec:/rtems/intr/if/handler-install */
1228
1321 rtems_vector_number vector,
1322 const char *info,
1323 rtems_option options,
1325 void *arg
1326);
1327
1328/* Generated from spec:/rtems/intr/if/handler-remove */
1329
1371 rtems_vector_number vector,
1373 void *arg
1374);
1375
1376/* Generated from spec:/rtems/intr/if/vector-is-enabled */
1377
1422 rtems_vector_number vector,
1423 bool *enabled
1424);
1425
1426/* Generated from spec:/rtems/intr/if/vector-enable */
1427
1469
1470/* Generated from spec:/rtems/intr/if/vector-disable */
1471
1513
1514/* Generated from spec:/rtems/intr/if/is-pending */
1515
1564 rtems_vector_number vector,
1565 bool *pending
1566);
1567
1568/* Generated from spec:/rtems/intr/if/raise */
1569
1604
1605/* Generated from spec:/rtems/intr/if/raise-on */
1606
1650 rtems_vector_number vector,
1651 uint32_t cpu_index
1652);
1653
1654/* Generated from spec:/rtems/intr/if/clear */
1655
1690
1691/* Generated from spec:/rtems/intr/if/get-affinity */
1692
1735 rtems_vector_number vector,
1736 size_t affinity_size,
1737 cpu_set_t *affinity
1738);
1739
1740/* Generated from spec:/rtems/intr/if/set-affinity */
1741
1797 rtems_vector_number vector,
1798 size_t affinity_size,
1799 const cpu_set_t *affinity
1800);
1801
1802/* Generated from spec:/rtems/intr/if/signal-variant */
1803
1809typedef enum {
1815
1821
1827
1833
1839
1846
1847/* Generated from spec:/rtems/intr/if/attributes */
1848
1857typedef struct {
1867
1877
1889
1899
1910
1916
1922
1928
1935
1941
1947
1958
1969
1970/* Generated from spec:/rtems/intr/if/get-attributes */
1971
2005 rtems_vector_number vector,
2006 rtems_interrupt_attributes *attributes
2007);
2008
2009/* Generated from spec:/rtems/intr/if/handler-iterate */
2010
2061 rtems_vector_number vector,
2063 void *arg
2064);
2065
2066/* Generated from spec:/rtems/intr/if/server-default */
2067
2073#define RTEMS_INTERRUPT_SERVER_DEFAULT 0
2074
2075/* Generated from spec:/rtems/intr/if/server-control */
2076
2096 #if defined(RTEMS_SMP)
2101 #endif
2102
2107
2112
2116 unsigned long errors;
2117
2121 uint32_t index;
2122
2127
2134
2135/* Generated from spec:/rtems/intr/if/server-config */
2136
2152typedef struct {
2157
2162
2170
2178
2183
2188
2199
2200/* Generated from spec:/rtems/intr/if/server-initialize */
2201
2262 rtems_task_priority priority,
2263 size_t stack_size,
2264 rtems_mode modes,
2265 rtems_attribute attributes,
2266 uint32_t *server_count
2267);
2268
2269/* Generated from spec:/rtems/intr/if/server-create */
2270
2312 uint32_t *server_index
2313);
2314
2315/* Generated from spec:/rtems/intr/if/server-handler-install */
2316
2388 uint32_t server_index,
2389 rtems_vector_number vector,
2390 const char *info,
2391 rtems_option options,
2393 void *arg
2394);
2395
2396/* Generated from spec:/rtems/intr/if/server-handler-remove */
2397
2443 uint32_t server_index,
2444 rtems_vector_number vector,
2446 void *arg
2447);
2448
2449/* Generated from spec:/rtems/intr/if/server-set-affinity */
2450
2508 uint32_t server_index,
2509 size_t affinity_size,
2510 const cpu_set_t *affinity,
2511 rtems_task_priority priority
2512);
2513
2514/* Generated from spec:/rtems/intr/if/server-delete */
2515
2551rtems_status_code rtems_interrupt_server_delete( uint32_t server_index );
2552
2553/* Generated from spec:/rtems/intr/if/server-suspend */
2554
2586rtems_status_code rtems_interrupt_server_suspend( uint32_t server_index );
2587
2588/* Generated from spec:/rtems/intr/if/server-resume */
2589
2621rtems_status_code rtems_interrupt_server_resume( uint32_t server_index );
2622
2623/* Generated from spec:/rtems/intr/if/server-move */
2624
2667 uint32_t source_server_index,
2668 rtems_vector_number vector,
2669 uint32_t destination_server_index
2670);
2671
2672/* Generated from spec:/rtems/intr/if/server-handler-iterate */
2673
2723 uint32_t server_index,
2724 rtems_vector_number vector,
2726 void *arg
2727);
2728
2729/* Generated from spec:/rtems/intr/if/server-action */
2730
2752
2757
2761 void *arg;
2763
2764/* Generated from spec:/rtems/intr/if/server-entry */
2765
2786typedef struct {
2791
2797
2802
2808
2809/* Generated from spec:/rtems/intr/if/server-entry-initialize */
2810
2849 uint32_t server_index,
2851);
2852
2853/* Generated from spec:/rtems/intr/if/server-action-prepend */
2854
2913 void *arg
2914);
2915
2916/* Generated from spec:/rtems/intr/if/server-entry-destroy */
2917
2948);
2949
2950/* Generated from spec:/rtems/intr/if/server-entry-submit */
2951
3006);
3007
3008/* Generated from spec:/rtems/intr/if/server-entry-move */
3009
3061 uint32_t server_index
3062);
3063
3064/* Generated from spec:/rtems/intr/if/server-request */
3065
3087typedef struct {
3092
3098
3099/* Generated from spec:/rtems/intr/if/server-request-initialize */
3100
3143 uint32_t server_index,
3146 void *arg
3147);
3148
3149/* Generated from spec:/rtems/intr/if/server-request-set-vector */
3150
3202static inline void rtems_interrupt_server_request_set_vector(
3204 rtems_vector_number vector
3205)
3206{
3207 request->entry.vector = vector;
3208}
3209
3210/* Generated from spec:/rtems/intr/if/server-request-destroy */
3211
3239static inline void rtems_interrupt_server_request_destroy(
3241)
3242{
3244}
3245
3246/* Generated from spec:/rtems/intr/if/server-request-submit */
3247
3296static inline void rtems_interrupt_server_request_submit(
3298)
3299{
3301}
3302
3303#ifdef __cplusplus
3304}
3305#endif
3306
3307#endif /* _RTEMS_RTEMS_INTR_H */
This header file provides Classic API directive attributes.
This header file provides basic definitions used by the API and the implementation.
This header file provides types used by the Classic API.
uint32_t rtems_attribute
This type represents Classic API attributes.
Definition: attr.h:96
ISR_Handler_entry rtems_isr_entry
Interrupt service routines installed by rtems_interrupt_catch() shall have this type.
Definition: intr.h:134
rtems_status_code rtems_interrupt_server_handler_install(uint32_t server_index, rtems_vector_number vector, const char *info, rtems_option options, rtems_interrupt_handler routine, void *arg)
Installs the interrupt handler routine and argument at the interrupt vector on the interrupt server.
Definition: irq-server.c:373
rtems_status_code rtems_interrupt_server_handler_iterate(uint32_t server_index, rtems_vector_number vector, rtems_interrupt_per_handler_routine routine, void *arg)
Iterates over all interrupt handler installed at the interrupt vector and interrupt server.
Definition: irq-server.c:461
rtems_status_code rtems_interrupt_vector_disable(rtems_vector_number vector)
Disables the interrupt vector.
Definition: irq-enable-disable.c:94
ISR_Handler rtems_isr
This type defines the return type of interrupt service routines.
Definition: intr.h:123
rtems_status_code rtems_interrupt_server_handler_remove(uint32_t server_index, rtems_vector_number vector, rtems_interrupt_handler routine, void *arg)
Removes the interrupt handler routine and argument from the interrupt vector and the interrupt server...
Definition: irq-server.c:400
struct rtems_interrupt_server_control rtems_interrupt_server_control
This structure represents an interrupt server.
rtems_status_code rtems_interrupt_set_affinity(rtems_vector_number vector, size_t affinity_size, const cpu_set_t *affinity)
Sets the processor affinity set of the interrupt vector.
Definition: irq-affinity.c:42
rtems_status_code rtems_interrupt_entry_install(rtems_vector_number vector, rtems_option options, rtems_interrupt_entry *entry)
Installs the interrupt entry at the interrupt vector.
Definition: irq-generic.c:264
rtems_status_code rtems_interrupt_handler_iterate(rtems_vector_number vector, rtems_interrupt_per_handler_routine routine, void *arg)
Iterates over all interrupt handler installed at the interrupt vector.
Definition: irq-handler-iterate.c:39
rtems_status_code rtems_interrupt_is_pending(rtems_vector_number vector, bool *pending)
Checks if the interrupt is pending.
Definition: irq-raise-clear.c:43
rtems_status_code rtems_interrupt_handler_install(rtems_vector_number vector, const char *info, rtems_option options, rtems_interrupt_handler routine, void *arg)
Installs the interrupt handler routine and argument at the interrupt vector.
Definition: irq-handler-install.c:85
ISR_Vector_number rtems_vector_number
This integer type represents interrupt vector numbers.
Definition: intr.h:102
rtems_status_code rtems_interrupt_vector_is_enabled(rtems_vector_number vector, bool *enabled)
Checks if the interrupt vector is enabled.
Definition: irq-enable-disable.c:69
rtems_status_code rtems_interrupt_server_resume(uint32_t server_index)
Resumes the interrupt server.
Definition: irq-server.c:989
rtems_status_code rtems_interrupt_server_entry_move(rtems_interrupt_server_entry *entry, uint32_t server_index)
Moves the interrupt server entry to the interrupt server.
Definition: irq-server.c:800
rtems_status_code rtems_interrupt_entry_remove(rtems_vector_number vector, rtems_interrupt_entry *entry)
Removes the interrupt entry from the interrupt vector.
Definition: irq-entry-remove.c:94
rtems_status_code rtems_interrupt_server_set_affinity(uint32_t server_index, size_t affinity_size, const cpu_set_t *affinity, rtems_task_priority priority)
Sets the processor affinity of the interrupt server.
Definition: irq-server.c:1011
struct rtems_interrupt_entry rtems_interrupt_entry
This structure represents an interrupt entry.
rtems_status_code rtems_interrupt_get_attributes(rtems_vector_number vector, rtems_interrupt_attributes *attributes)
Gets the attributes of the interrupt vector.
Definition: irq-enable-disable.c:42
ISR_lock_Control rtems_interrupt_lock
This structure represents an ISR lock.
Definition: intr.h:504
rtems_status_code rtems_interrupt_server_initialize(rtems_task_priority priority, size_t stack_size, rtems_mode modes, rtems_attribute attributes, uint32_t *server_count)
Initializes the interrupt server tasks.
Definition: irq-server.c:577
rtems_status_code rtems_interrupt_server_entry_initialize(uint32_t server_index, rtems_interrupt_server_entry *entry)
Initializes the interrupt server entry.
Definition: irq-server.c:766
rtems_status_code rtems_interrupt_raise_on(rtems_vector_number vector, uint32_t cpu_index)
Raises the interrupt vector on the processor.
Definition: irq-raise-clear.c:68
void rtems_interrupt_server_entry_destroy(rtems_interrupt_server_entry *entry)
Destroys the interrupt server entry.
Definition: irq-server.c:824
ISR_Level rtems_interrupt_level
This integer type represents interrupt levels.
Definition: intr.h:111
void rtems_interrupt_server_entry_submit(rtems_interrupt_server_entry *entry)
Submits the interrupt server entry to be serviced by the interrupt server.
Definition: irq-server.c:793
rtems_status_code rtems_interrupt_server_delete(uint32_t server_index)
Deletes the interrupt server.
Definition: irq-server.c:721
rtems_status_code rtems_interrupt_server_request_initialize(uint32_t server_index, rtems_interrupt_server_request *request, rtems_interrupt_handler routine, void *arg)
Initializes the interrupt server request.
Definition: irq-server.c:851
rtems_status_code rtems_interrupt_raise(rtems_vector_number vector)
Raises the interrupt vector.
Definition: irq-raise-clear.c:59
rtems_status_code rtems_interrupt_handler_remove(rtems_vector_number vector, rtems_interrupt_handler routine, void *arg)
Removes the interrupt handler routine and argument from the interrupt vector.
Definition: irq-handler-remove.c:62
void rtems_interrupt_server_action_prepend(rtems_interrupt_server_entry *entry, rtems_interrupt_server_action *action, rtems_interrupt_handler routine, void *arg)
Prepends the interrupt server action to the list of actions of the interrupt server entry.
Definition: irq-server.c:783
rtems_status_code rtems_interrupt_catch(rtems_isr_entry new_isr_handler, rtems_vector_number vector, rtems_isr_entry *old_isr_handler)
Establishes an interrupt service routine.
Definition: intrcatch.c:46
rtems_status_code rtems_interrupt_server_suspend(uint32_t server_index)
Suspends the interrupt server.
Definition: irq-server.c:968
void(* rtems_interrupt_handler)(void *)
Interrupt handler routines shall have this type.
Definition: intr.h:965
rtems_status_code rtems_interrupt_vector_enable(rtems_vector_number vector)
Enables the interrupt vector.
Definition: irq-enable-disable.c:85
ISR_lock_Context rtems_interrupt_lock_context
This structure provides an ISR lock context for acquire and release pairs.
Definition: intr.h:514
rtems_interrupt_signal_variant
This enumeration provides interrupt trigger signal variants.
Definition: intr.h:1809
void(* rtems_interrupt_per_handler_routine)(void *, const char *, rtems_option, rtems_interrupt_handler, void *)
Visitor routines invoked by rtems_interrupt_handler_iterate() shall have this type.
Definition: intr.h:975
struct rtems_interrupt_server_action rtems_interrupt_server_action
This structure represents an interrupt server action.
rtems_status_code rtems_interrupt_server_create(rtems_interrupt_server_control *control, const rtems_interrupt_server_config *config, uint32_t *server_index)
Creates an interrupt server.
Definition: irq-server.c:656
rtems_status_code rtems_interrupt_server_move(uint32_t source_server_index, rtems_vector_number vector, uint32_t destination_server_index)
Moves the interrupt handlers installed at the interrupt vector and the source interrupt server to the...
Definition: irq-server.c:917
rtems_status_code rtems_interrupt_clear(rtems_vector_number vector)
Clears the interrupt vector.
Definition: irq-raise-clear.c:92
rtems_status_code rtems_interrupt_get_affinity(rtems_vector_number vector, size_t affinity_size, cpu_set_t *affinity)
Gets the processor affinity set of the interrupt vector.
Definition: irq-affinity.c:76
@ RTEMS_INTERRUPT_SIGNAL_LEVEL_LOW
This interrupt signal variant indicates that the interrupt is triggered by a low level signal.
Definition: intr.h:1826
@ RTEMS_INTERRUPT_SIGNAL_EDGE_FALLING
This interrupt signal variant indicates that the interrupt is triggered by a falling edge signal.
Definition: intr.h:1838
@ RTEMS_INTERRUPT_NO_SIGNAL
This interrupt signal variant indicates that the interrupt cannot be triggered by a signal.
Definition: intr.h:1820
@ RTEMS_INTERRUPT_SIGNAL_LEVEL_HIGH
This interrupt signal variant indicates that the interrupt is triggered by a high level signal.
Definition: intr.h:1832
@ RTEMS_INTERRUPT_UNSPECIFIED_SIGNAL
This interrupt signal variant indicates that the interrupt trigger signal is unspecified.
Definition: intr.h:1814
@ RTEMS_INTERRUPT_SIGNAL_EDGE_RAISING
This interrupt signal variant indicates that the interrupt is triggered by a raising edge signal.
Definition: intr.h:1844
uint32_t rtems_mode
This type represents a Classic API task mode set.
Definition: modes.h:174
uint32_t rtems_option
This type represents a Classic API directive option set.
Definition: options.h:126
rtems_status_code
This enumeration provides status codes for directives of the Classic API.
Definition: status.h:85
uint32_t rtems_name
This type represents Classic API object names.
Definition: types.h:226
uint32_t rtems_task_priority
This integer type represents task priorities of the Classic API.
Definition: types.h:257
Objects_Id rtems_id
This type represents RTEMS object identifiers.
Definition: types.h:94
void ISR_Handler
Definition: isr.h:72
uint32_t ISR_Level
Definition: isrlevel.h:60
uint32_t ISR_Vector_number
Definition: isr.h:67
#define NULL
Requests a GPIO pin group configuration.
Definition: xil_types.h:54
This header file provides the main interfaces of the ISR Handler.
This header file provides the ISR_Level related interfaces of the ISR Handler.
This header file provides the interfaces of the ISR Locks.
This header file provides the task modes API of the Task Manager.
This header file provides the Classic API directive options.
This header file provides the status codes of Classic API directives and support functions.
This header file provides interfaces of the Chain Handler which are used by the implementation and th...
This header file provides the main interfaces of the SMP Locks.
This structure represents a chain node.
Definition: chain.h:78
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:81
ISR lock control.
Definition: isrlock.h:72
Definition: deflate.c:114
Definition: intercom.c:87
Definition: mmu-config.c:53
This structure provides the attributes of an interrupt vector.
Definition: intr.h:1857
bool can_raise_on
This member is true, if the interrupt vector can be raised on a processor by rtems_interrupt_raise_on...
Definition: intr.h:1921
bool can_disable
This member is true, if the interrupt vector can be disabled by rtems_interrupt_vector_disable(),...
Definition: intr.h:1898
bool maybe_enable
This member is true, if the interrupt vector may be enabled by rtems_interrupt_vector_enable(),...
Definition: intr.h:1888
rtems_interrupt_signal_variant trigger_signal
This member describes the trigger signal of the interrupt associated with the interrupt vector.
Definition: intr.h:1967
bool can_raise
This member is true, if the interrupt vector can be raised by rtems_interrupt_raise(),...
Definition: intr.h:1915
bool can_clear
This member is true, if the interrupt vector can be cleared by rtems_interrupt_clear(),...
Definition: intr.h:1927
bool can_set_affinity
This member is true, if the affinity set of the interrupt vector can be set by rtems_interrupt_set_af...
Definition: intr.h:1946
bool cleared_by_acknowledge
This member is true, if the pending status of the interrupt associated with the interrupt vector is c...
Definition: intr.h:1934
bool maybe_disable
This member is true, if the interrupt vector may be disabled by rtems_interrupt_vector_disable(),...
Definition: intr.h:1909
bool is_maskable
This member is true, if the interrupt vector is maskable by rtems_interrupt_local_disable(),...
Definition: intr.h:1866
bool can_enable
This member is true, if the interrupt vector can be enabled by rtems_interrupt_vector_enable(),...
Definition: intr.h:1876
bool can_get_affinity
This member is true, if the affinity set of the interrupt vector can be obtained by rtems_interrupt_g...
Definition: intr.h:1940
bool can_be_triggered_by_message
This member is true, if the interrupt associated with the interrupt vector can be triggered by a mess...
Definition: intr.h:1957
This structure represents an interrupt entry.
Definition: intr.h:1005
rtems_interrupt_handler handler
This member is the interrupt handler routine.
Definition: intr.h:1009
void * arg
This member is the interrupt handler argument.
Definition: intr.h:1014
struct rtems_interrupt_entry * next
This member is the reference to the next entry or NULL.
Definition: intr.h:1019
const char * info
This member is the descriptive information of the entry.
Definition: intr.h:1024
This structure represents an interrupt server action.
Definition: intr.h:2747
void * arg
This member is the interrupt handler argument.
Definition: intr.h:2761
struct rtems_interrupt_server_action * next
This member is the reference to the next action or NULL.
Definition: intr.h:2751
rtems_interrupt_handler handler
This member is the interrupt handler.
Definition: intr.h:2756
This structure defines an interrupt server configuration.
Definition: intr.h:2152
size_t storage_size
This member is the task storage size of the interrupt server.
Definition: intr.h:2177
rtems_mode modes
This member is the initial mode set of the interrupt server.
Definition: intr.h:2182
rtems_attribute attributes
This member is the attribute set of the interrupt server.
Definition: intr.h:2187
rtems_name name
This member is the task name of the interrupt server.
Definition: intr.h:2156
rtems_task_priority priority
This member is the initial task priority of the interrupt server.
Definition: intr.h:2161
void * storage_area
This member is the task storage area of the interrupt server.
Definition: intr.h:2169
This structure represents an interrupt server.
Definition: intr.h:2095
Chain_Node node
This member is the node for the interrupt server registry.
Definition: intr.h:2126
Chain_Control entries
This member is the chain of pending interrupt entries.
Definition: intr.h:2106
uint32_t index
This member is the server index.
Definition: intr.h:2121
void(* destroy)(struct rtems_interrupt_server_control *)
This member is the optional handler to destroy the interrupt server control.
Definition: intr.h:2132
rtems_id server
This member is the identifier of the server task.
Definition: intr.h:2111
unsigned long errors
This member is the error count.
Definition: intr.h:2116
This structure represents an interrupt server entry.
Definition: intr.h:2786
Chain_Node node
This member is the node for the interrupt entry processing.
Definition: intr.h:2790
rtems_interrupt_server_action * actions
This member is the interrupt server actions list head.
Definition: intr.h:2806
rtems_vector_number vector
This member is the interrupt vector number.
Definition: intr.h:2801
rtems_interrupt_server_control * server
This member references the interrupt server used to process the entry.
Definition: intr.h:2796
This structure represents an interrupt server request.
Definition: intr.h:3087
rtems_interrupt_server_action action
This member is the interrupt server action.
Definition: intr.h:3096
rtems_interrupt_server_entry entry
This member is the interrupt server entry.
Definition: intr.h:3091
This union represents a chain control block.
Definition: chain.h:96