RTEMS 6.1-rc5
Loading...
Searching...
No Matches
intr.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
11/*
12 * Copyright (C) 2008, 2024 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
529#if ISR_LOCK_NEEDS_OBJECT
530 typedef ISR_lock_Control rtems_interrupt_lock;
531#else
533#endif
534
535/* Generated from spec:/rtems/intr/if/lock-needs-object */
536
549#define RTEMS_INTERRUPT_LOCK_NEEDS_OBJECT ISR_LOCK_NEEDS_OBJECT
550
551/* Generated from spec:/rtems/intr/if/lock-context */
552
560
561/* Generated from spec:/rtems/intr/if/lock-initialize */
562
577#define rtems_interrupt_lock_initialize( _lock, _name ) \
578 _ISR_lock_Initialize( _lock, _name )
579
580/* Generated from spec:/rtems/intr/if/lock-destroy */
581
609#define rtems_interrupt_lock_destroy( _lock ) _ISR_lock_Destroy( _lock )
610
611/* Generated from spec:/rtems/intr/if/lock-acquire */
612
666#define rtems_interrupt_lock_acquire( _lock, _lock_context ) \
667 _ISR_lock_ISR_disable_and_acquire( _lock, _lock_context )
668
669/* Generated from spec:/rtems/intr/if/lock-release */
670
709#define rtems_interrupt_lock_release( _lock, _lock_context ) \
710 _ISR_lock_Release_and_ISR_enable( _lock, _lock_context )
711
712/* Generated from spec:/rtems/intr/if/lock-acquire-isr */
713
756#if ISR_LOCK_NEEDS_OBJECT
757 #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \
758 _SMP_lock_Acquire( \
759 &( _lock )->Lock, \
760 &( _lock_context )->Lock_context \
761 )
762#else
763 #define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \
764 do { (void) _lock_context; } while ( 0 )
765#endif
766
767/* Generated from spec:/rtems/intr/if/lock-release-isr */
768
802#if ISR_LOCK_NEEDS_OBJECT
803 #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \
804 _SMP_lock_Release( \
805 &( _lock )->Lock, \
806 &( _lock_context )->Lock_context \
807 )
808#else
809 #define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \
810 do { (void) _lock_context; } while ( 0 )
811#endif
812
813/* Generated from spec:/rtems/intr/if/lock-isr-disable */
814
835#define rtems_interrupt_lock_interrupt_disable( _lock_context ) \
836 _ISR_lock_ISR_disable( _lock_context )
837
838/* Generated from spec:/rtems/intr/if/lock-declare */
839
853#if ISR_LOCK_NEEDS_OBJECT
854 #define RTEMS_INTERRUPT_LOCK_DECLARE( _specifier, _designator ) \
855 _specifier rtems_interrupt_lock _designator;
856#else
857 #define RTEMS_INTERRUPT_LOCK_DECLARE( _specifier, _designator )
858#endif
859
860/* Generated from spec:/rtems/intr/if/lock-define */
861
884#if ISR_LOCK_NEEDS_OBJECT
885 #define RTEMS_INTERRUPT_LOCK_DEFINE( _specifier, _designator, _name ) \
886 _specifier rtems_interrupt_lock _designator = ISR_LOCK_INITIALIZER( _name );
887#else
888 #define RTEMS_INTERRUPT_LOCK_DEFINE( _specifier, _designator, _name )
889#endif
890
891/* Generated from spec:/rtems/intr/if/lock-initializer */
892
906#if ISR_LOCK_NEEDS_OBJECT
907 #define RTEMS_INTERRUPT_LOCK_INITIALIZER( _name ) ISR_LOCK_INITIALIZER( _name )
908#else
909 #define RTEMS_INTERRUPT_LOCK_INITIALIZER( _name ) 0
910#endif
911
912/* Generated from spec:/rtems/intr/if/lock-member */
913
924#if ISR_LOCK_NEEDS_OBJECT
925 #define RTEMS_INTERRUPT_LOCK_MEMBER( _designator ) \
926 rtems_interrupt_lock _designator;
927#else
928 #define RTEMS_INTERRUPT_LOCK_MEMBER( _designator )
929#endif
930
931/* Generated from spec:/rtems/intr/if/lock-reference */
932
945#if ISR_LOCK_NEEDS_OBJECT
946 #define RTEMS_INTERRUPT_LOCK_REFERENCE( _designator, _target ) \
947 rtems_interrupt_lock *_designator = _target;
948#else
949 #define RTEMS_INTERRUPT_LOCK_REFERENCE( _designator, _target )
950#endif
951
952/* Generated from spec:/rtems/intr/if/shared */
953
960#define RTEMS_INTERRUPT_SHARED ( (rtems_option) 0x00000000 )
961
962/* Generated from spec:/rtems/intr/if/unique */
963
972#define RTEMS_INTERRUPT_UNIQUE ( (rtems_option) 0x00000001 )
973
974/* Generated from spec:/rtems/intr/if/replace */
975
982#define RTEMS_INTERRUPT_REPLACE ( (rtems_option) 0x00000002 )
983
984/* Generated from spec:/rtems/intr/if/is-shared */
985
994#define RTEMS_INTERRUPT_IS_SHARED( _options ) \
995 ( ( _options ) & RTEMS_INTERRUPT_SHARED )
996
997/* Generated from spec:/rtems/intr/if/is-unique */
998
1007#define RTEMS_INTERRUPT_IS_UNIQUE( _options ) \
1008 ( ( _options ) & RTEMS_INTERRUPT_UNIQUE )
1009
1010/* Generated from spec:/rtems/intr/if/is-replace */
1011
1020#define RTEMS_INTERRUPT_IS_REPLACE( _options ) \
1021 ( ( _options ) & RTEMS_INTERRUPT_REPLACE )
1022
1023/* Generated from spec:/rtems/intr/if/handler */
1024
1030typedef void ( *rtems_interrupt_handler )( void * );
1031
1032/* Generated from spec:/rtems/intr/if/per-handler-routine */
1033
1041 void *,
1042 const char *,
1045 void *
1046);
1047
1048/* Generated from spec:/rtems/intr/if/entry */
1049
1075
1079 void *arg;
1080
1085
1089 const char *info;
1091
1092/* Generated from spec:/rtems/intr/if/entry-initializer */
1093
1109#define RTEMS_INTERRUPT_ENTRY_INITIALIZER( _routine, _arg, _info ) \
1110 { _routine, _arg, NULL, _info }
1111
1112/* Generated from spec:/rtems/intr/if/entry-initialize */
1113
1140static inline void rtems_interrupt_entry_initialize(
1143 void *arg,
1144 const char *info
1145)
1146{
1147 entry->handler = routine;
1148 entry->arg = arg;
1149 entry->next = NULL;
1150 entry->info = info;
1151}
1152
1153/* Generated from spec:/rtems/intr/if/entry-install */
1154
1236 rtems_vector_number vector,
1237 rtems_option options,
1239);
1240
1241/* Generated from spec:/rtems/intr/if/entry-remove */
1242
1288 rtems_vector_number vector,
1290);
1291
1292/* Generated from spec:/rtems/intr/if/handler-install */
1293
1386 rtems_vector_number vector,
1387 const char *info,
1388 rtems_option options,
1390 void *arg
1391);
1392
1393/* Generated from spec:/rtems/intr/if/handler-remove */
1394
1436 rtems_vector_number vector,
1438 void *arg
1439);
1440
1441/* Generated from spec:/rtems/intr/if/vector-is-enabled */
1442
1487 rtems_vector_number vector,
1488 bool *enabled
1489);
1490
1491/* Generated from spec:/rtems/intr/if/vector-enable */
1492
1534
1535/* Generated from spec:/rtems/intr/if/vector-disable */
1536
1578
1579/* Generated from spec:/rtems/intr/if/is-pending */
1580
1629 rtems_vector_number vector,
1630 bool *pending
1631);
1632
1633/* Generated from spec:/rtems/intr/if/raise */
1634
1669
1670/* Generated from spec:/rtems/intr/if/raise-on */
1671
1715 rtems_vector_number vector,
1716 uint32_t cpu_index
1717);
1718
1719/* Generated from spec:/rtems/intr/if/clear */
1720
1755
1756/* Generated from spec:/rtems/intr/if/get-priority */
1757
1798 rtems_vector_number vector,
1799 uint32_t *priority
1800);
1801
1802/* Generated from spec:/rtems/intr/if/set-priority */
1803
1906 rtems_vector_number vector,
1907 uint32_t priority
1908);
1909
1910/* Generated from spec:/rtems/intr/if/get-affinity */
1911
1954 rtems_vector_number vector,
1955 size_t affinity_size,
1956 cpu_set_t *affinity
1957);
1958
1959/* Generated from spec:/rtems/intr/if/set-affinity */
1960
2016 rtems_vector_number vector,
2017 size_t affinity_size,
2018 const cpu_set_t *affinity
2019);
2020
2021/* Generated from spec:/rtems/intr/if/signal-variant */
2022
2028typedef enum {
2034
2040
2046
2052
2058
2065
2066/* Generated from spec:/rtems/intr/if/attributes */
2067
2076typedef struct {
2086
2096
2108
2118
2129
2135
2141
2147
2154
2160
2166
2177
2187
2193
2199
2211
2212/* Generated from spec:/rtems/intr/if/get-attributes */
2213
2247 rtems_vector_number vector,
2248 rtems_interrupt_attributes *attributes
2249);
2250
2251/* Generated from spec:/rtems/intr/if/handler-iterate */
2252
2303 rtems_vector_number vector,
2305 void *arg
2306);
2307
2308/* Generated from spec:/rtems/intr/if/server-default */
2309
2315#define RTEMS_INTERRUPT_SERVER_DEFAULT 0
2316
2317/* Generated from spec:/rtems/intr/if/server-control */
2318
2338 #if defined(RTEMS_SMP)
2343 #endif
2344
2349
2354
2358 unsigned long errors;
2359
2363 uint32_t index;
2364
2369
2376
2377/* Generated from spec:/rtems/intr/if/server-config */
2378
2394typedef struct {
2399
2404
2412
2420
2425
2430
2441
2442/* Generated from spec:/rtems/intr/if/server-initialize */
2443
2504 rtems_task_priority priority,
2505 size_t stack_size,
2506 rtems_mode modes,
2507 rtems_attribute attributes,
2508 uint32_t *server_count
2509);
2510
2511/* Generated from spec:/rtems/intr/if/server-create */
2512
2554 uint32_t *server_index
2555);
2556
2557/* Generated from spec:/rtems/intr/if/server-handler-install */
2558
2630 uint32_t server_index,
2631 rtems_vector_number vector,
2632 const char *info,
2633 rtems_option options,
2635 void *arg
2636);
2637
2638/* Generated from spec:/rtems/intr/if/server-handler-remove */
2639
2685 uint32_t server_index,
2686 rtems_vector_number vector,
2688 void *arg
2689);
2690
2691/* Generated from spec:/rtems/intr/if/server-set-affinity */
2692
2750 uint32_t server_index,
2751 size_t affinity_size,
2752 const cpu_set_t *affinity,
2753 rtems_task_priority priority
2754);
2755
2756/* Generated from spec:/rtems/intr/if/server-delete */
2757
2793rtems_status_code rtems_interrupt_server_delete( uint32_t server_index );
2794
2795/* Generated from spec:/rtems/intr/if/server-suspend */
2796
2828rtems_status_code rtems_interrupt_server_suspend( uint32_t server_index );
2829
2830/* Generated from spec:/rtems/intr/if/server-resume */
2831
2863rtems_status_code rtems_interrupt_server_resume( uint32_t server_index );
2864
2865/* Generated from spec:/rtems/intr/if/server-move */
2866
2909 uint32_t source_server_index,
2910 rtems_vector_number vector,
2911 uint32_t destination_server_index
2912);
2913
2914/* Generated from spec:/rtems/intr/if/server-handler-iterate */
2915
2965 uint32_t server_index,
2966 rtems_vector_number vector,
2968 void *arg
2969);
2970
2971/* Generated from spec:/rtems/intr/if/server-action */
2972
2994
2999
3003 void *arg;
3005
3006/* Generated from spec:/rtems/intr/if/server-entry */
3007
3028typedef struct {
3033
3039
3044
3050
3051/* Generated from spec:/rtems/intr/if/server-entry-initialize */
3052
3091 uint32_t server_index,
3093);
3094
3095/* Generated from spec:/rtems/intr/if/server-action-prepend */
3096
3155 void *arg
3156);
3157
3158/* Generated from spec:/rtems/intr/if/server-entry-destroy */
3159
3190);
3191
3192/* Generated from spec:/rtems/intr/if/server-entry-submit */
3193
3248);
3249
3250/* Generated from spec:/rtems/intr/if/server-entry-move */
3251
3303 uint32_t server_index
3304);
3305
3306/* Generated from spec:/rtems/intr/if/server-request */
3307
3329typedef struct {
3334
3340
3341/* Generated from spec:/rtems/intr/if/server-request-initialize */
3342
3385 uint32_t server_index,
3388 void *arg
3389);
3390
3391/* Generated from spec:/rtems/intr/if/server-request-set-vector */
3392
3444static inline void rtems_interrupt_server_request_set_vector(
3446 rtems_vector_number vector
3447)
3448{
3449 request->entry.vector = vector;
3450}
3451
3452/* Generated from spec:/rtems/intr/if/server-request-destroy */
3453
3481static inline void rtems_interrupt_server_request_destroy(
3483)
3484{
3486}
3487
3488/* Generated from spec:/rtems/intr/if/server-request-submit */
3489
3538static inline void rtems_interrupt_server_request_submit(
3540)
3541{
3543}
3544
3545#ifdef __cplusplus
3546}
3547#endif
3548
3549#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
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:41
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
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
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
char rtems_interrupt_lock
This structure represents an ISR lock.
Definition: intr.h:532
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
rtems_status_code rtems_interrupt_get_priority(rtems_vector_number vector, uint32_t *priority)
Gets the priority of the interrupt vector.
Definition: irq-priority.c:51
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:1030
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:559
rtems_interrupt_signal_variant
This enumeration provides interrupt trigger signal variants.
Definition: intr.h:2028
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:1040
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:75
rtems_status_code rtems_interrupt_set_priority(rtems_vector_number vector, uint32_t priority)
Sets the priority of the interrupt vector.
Definition: irq-priority.c:39
@ RTEMS_INTERRUPT_SIGNAL_LEVEL_LOW
This interrupt signal variant indicates that the interrupt is triggered by a low level signal.
Definition: intr.h:2045
@ RTEMS_INTERRUPT_SIGNAL_EDGE_FALLING
This interrupt signal variant indicates that the interrupt is triggered by a falling edge signal.
Definition: intr.h:2057
@ RTEMS_INTERRUPT_NO_SIGNAL
This interrupt signal variant indicates that the interrupt cannot be triggered by a signal.
Definition: intr.h:2039
@ RTEMS_INTERRUPT_SIGNAL_LEVEL_HIGH
This interrupt signal variant indicates that the interrupt is triggered by a high level signal.
Definition: intr.h:2051
@ RTEMS_INTERRUPT_UNSPECIFIED_SIGNAL
This interrupt signal variant indicates that the interrupt trigger signal is unspecified.
Definition: intr.h:2033
@ RTEMS_INTERRUPT_SIGNAL_EDGE_RAISING
This interrupt signal variant indicates that the interrupt is triggered by a raising edge signal.
Definition: intr.h:2063
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
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:94
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:2076
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:2140
bool can_disable
This member is true, if the interrupt vector can be disabled by rtems_interrupt_vector_disable(),...
Definition: intr.h:2117
bool can_set_priority
This member is true, if the priority of the interrupt vector can be set by rtems_interrupt_set_priori...
Definition: intr.h:2198
bool maybe_enable
This member is true, if the interrupt vector may be enabled by rtems_interrupt_vector_enable(),...
Definition: intr.h:2107
rtems_interrupt_signal_variant trigger_signal
This member describes the trigger signal of the interrupt associated with the interrupt vector.
Definition: intr.h:2186
bool can_raise
This member is true, if the interrupt vector can be raised by rtems_interrupt_raise(),...
Definition: intr.h:2134
bool can_clear
This member is true, if the interrupt vector can be cleared by rtems_interrupt_clear(),...
Definition: intr.h:2146
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:2165
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:2153
uint32_t maximum_priority
This member represents the maximum priority value of the interrupt vector. By convention,...
Definition: intr.h:2209
bool maybe_disable
This member is true, if the interrupt vector may be disabled by rtems_interrupt_vector_disable(),...
Definition: intr.h:2128
bool can_get_priority
This member is true, if the priority of the interrupt vector can be obtained by rtems_interrupt_get_p...
Definition: intr.h:2192
bool is_maskable
This member is true, if the interrupt vector is maskable by rtems_interrupt_local_disable(),...
Definition: intr.h:2085
bool can_enable
This member is true, if the interrupt vector can be enabled by rtems_interrupt_vector_enable(),...
Definition: intr.h:2095
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:2159
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:2176
This structure represents an interrupt entry.
Definition: intr.h:1070
rtems_interrupt_handler handler
This member is the interrupt handler routine.
Definition: intr.h:1074
void * arg
This member is the interrupt handler argument.
Definition: intr.h:1079
struct rtems_interrupt_entry * next
This member is the reference to the next entry or NULL.
Definition: intr.h:1084
const char * info
This member is the descriptive information of the entry.
Definition: intr.h:1089
This structure represents an interrupt server action.
Definition: intr.h:2989
void * arg
This member is the interrupt handler argument.
Definition: intr.h:3003
struct rtems_interrupt_server_action * next
This member is the reference to the next action or NULL.
Definition: intr.h:2993
rtems_interrupt_handler handler
This member is the interrupt handler.
Definition: intr.h:2998
This structure defines an interrupt server configuration.
Definition: intr.h:2394
size_t storage_size
This member is the task storage size of the interrupt server.
Definition: intr.h:2419
rtems_mode modes
This member is the initial mode set of the interrupt server.
Definition: intr.h:2424
rtems_attribute attributes
This member is the attribute set of the interrupt server.
Definition: intr.h:2429
rtems_name name
This member is the task name of the interrupt server.
Definition: intr.h:2398
rtems_task_priority priority
This member is the initial task priority of the interrupt server.
Definition: intr.h:2403
void * storage_area
This member is the task storage area of the interrupt server.
Definition: intr.h:2411
This structure represents an interrupt server.
Definition: intr.h:2337
Chain_Node node
This member is the node for the interrupt server registry.
Definition: intr.h:2368
Chain_Control entries
This member is the chain of pending interrupt entries.
Definition: intr.h:2348
uint32_t index
This member is the server index.
Definition: intr.h:2363
void(* destroy)(struct rtems_interrupt_server_control *)
This member is the optional handler to destroy the interrupt server control.
Definition: intr.h:2374
rtems_id server
This member is the identifier of the server task.
Definition: intr.h:2353
unsigned long errors
This member is the error count.
Definition: intr.h:2358
This structure represents an interrupt server entry.
Definition: intr.h:3028
Chain_Node node
This member is the node for the interrupt entry processing.
Definition: intr.h:3032
rtems_interrupt_server_action * actions
This member is the interrupt server actions list head.
Definition: intr.h:3048
rtems_vector_number vector
This member is the interrupt vector number.
Definition: intr.h:3043
rtems_interrupt_server_control * server
This member references the interrupt server used to process the entry.
Definition: intr.h:3038
This structure represents an interrupt server request.
Definition: intr.h:3329
rtems_interrupt_server_action action
This member is the interrupt server action.
Definition: intr.h:3338
rtems_interrupt_server_entry entry
This member is the interrupt server entry.
Definition: intr.h:3333
This union represents a chain control block.
Definition: chain.h:96