Page MenuHomeFreeBSD

D36934.1784780867.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D36934.1784780867.diff

diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -1322,6 +1322,7 @@
MLINKS+=intr_event.9 intr_event_add_handler.9 \
intr_event.9 intr_event_create.9 \
intr_event.9 intr_event_destroy.9 \
+ intr_event.9 intr_event_handle.9 \
intr_event.9 intr_event_remove_handler.9 \
intr_event.9 intr_priority.9
MLINKS+=kernacc.9 useracc.9
diff --git a/share/man/man9/intr_event.9 b/share/man/man9/intr_event.9
--- a/share/man/man9/intr_event.9
+++ b/share/man/man9/intr_event.9
@@ -29,13 +29,14 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 15, 2022
+.Dd October 30, 2022
.Dt INTR_EVENT 9
.Os
.Sh NAME
.Nm intr_event_add_handler ,
.Nm intr_event_create ,
.Nm intr_event_destroy ,
+.Nm intr_event handle ,
.Nm intr_event_remove_handler ,
.Nm intr_priority
.Nd "kernel interrupt handler and thread API"
@@ -70,6 +71,8 @@
.Ft int
.Fn intr_event_destroy "struct intr_event *ie"
.Ft int
+.Fn intr_event_handle "struct intr_event *ie" "struct trapframe *frame"
+.Ft int
.Fn intr_event_remove_handler "void *cookie"
.Ft u_char
.Fn intr_priority "enum intr_type flags"
@@ -242,6 +245,23 @@
handler.
.Pp
The
+.Fn intr_event_handle
+function is the main entry point into the interrupt handling code.
+It must be called from an interrupt context.
+The function will execute all filter handlers associated with the interrupt
+event
+.Fa ie ,
+and schedule the associated interrupt thread to run, if applicable.
+The
+.Fa frame
+argument is used to pass a pointer to the
+.Vt struct trapframe
+containing the machine state at the time of the interrupt.
+The main body of this function runs within a
+.Xr critical 9
+section.
+.Pp
+The
.Fn intr_event_remove_handler
function removes an interrupt handler from the interrupt event specified by
.Fa ie .
@@ -313,6 +333,7 @@
.Fn intr_event_add_handler ,
.Fn intr_event_create ,
.Fn intr_event_destroy ,
+.Fn intr_event_handle ,
and
.Fn intr_event_remove_handler
functions return zero on success and non-zero on failure.
@@ -416,6 +437,23 @@
.El
.Pp
The
+.Fn intr_event_handle
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa ie
+argument is
+.Dv NULL .
+.It Bq Er EINVAL
+There are no interrupt handlers assigned to
+.Fa ie .
+.It Bq Er EINVAL
+The interrupt was not acknowledged by any filter and has no associated thread
+handler.
+.El
+.Pp
+The
.Fn intr_event_remove_handler
function will fail if:
.Bl -tag -width Er
@@ -426,6 +464,7 @@
.Dv NULL .
.El
.Sh SEE ALSO
+.Xr critical 9 ,
.Xr kthread 9 ,
.Xr locking 9 ,
.Xr malloc 9 ,

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 23, 4:27 AM (6 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29235331
Default Alt Text
D36934.1784780867.diff (2 KB)

Event Timeline