Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F109939388
D33478.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D33478.diff
View Options
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
@@ -130,12 +130,20 @@
.Ss Function Descriptions
The
.Fn intr_event_create
-function creates a new interrupt thread.
+function creates a new interrupt event.
The
-.Fa source
+.Fa event
argument points to a
-.Vt struct intr_event event
-pointer that will point to the newly created thread upon success.
+.Vt struct intr_event
+pointer that will reference the newly created event upon success.
+The
+.Fa source
+argument is an opaque pointer which will be passed to the
+.Fa pre_ithread ,
+.Fa post_ithread ,
+and
+.Fa post_filter
+callbacks.
The
.Fa flags
argument is a mask of properties of this thread.
@@ -150,9 +158,31 @@
.Fa disable
arguments specify optional functions used to enable and disable this
interrupt thread's interrupt source.
-The functions receive the vector corresponding to the thread's interrupt
-source as their only argument.
-The remaining arguments form a
+The
+.Fa irq
+argument is the unique interrupt vector number corresponding to the event.
+The
+.Fa pre_ithread ,
+.Fa post_ithread ,
+and
+.Fa post_filter
+arguments are callback functions that are invoked at different
+points while handling an interrupt.
+This is described in more detail in the
+.Sx Handler Callbacks
+section, below.
+They may be
+.Va NULL
+to specify no callback.
+The
+.Fa assign_cpu
+argument points to a callback function that will be invoked when binding
+an interrupt to a particular CPU.
+It may be
+.Va NULL
+if binding is unsupported.
+The
+remaining arguments form a
.Xr printf 9
argument list that is used to build the base name of the new interrupt thread.
The full name of an interrupt thread is formed by concatenating the base
@@ -160,29 +190,41 @@
.Pp
The
.Fn intr_event_destroy
-function destroys a previously created interrupt thread by releasing its
-resources and arranging for the backing kernel thread to terminate.
-An interrupt thread can only be destroyed if it has no handlers remaining.
+function destroys a previously created interrupt event by releasing its
+resources.
+.\" The following is not true (yet):
+.\"and arranging for the backing kernel thread to terminate.
+An interrupt event can only be destroyed if it has no handlers remaining.
.Pp
The
.Fn intr_event_add_handler
-function adds a new handler to an existing interrupt thread specified by
-.Fa ithread .
+function adds a new handler to an existing interrupt event specified by
+.Fa ie .
The
.Fa name
argument specifies a name for this handler.
The
+.Fa filter
+argument provide the filter function to execute.
+The
.Fa handler
-and
+argument provides the handler function to be executed from the
+event's interrupt thread.
+The
.Fa arg
-arguments provide the function to execute for this handler and an argument
-to pass to it.
+argument will be passed to the
+.Fa filter
+and
+.Fa handler
+functions when they are invoked.
The
.Fa pri
-argument specifies the priority of this handler and is used both in sorting
-it in relation to the other handlers for this thread and to specify the
-priority of the backing kernel thread.
-The
+argument specifies the priority of this handler,
+corresponding to the values defined in
+.In sys/priority.h .
+It determines the order this handler is called relative to the other handlers
+for this event, as well as the scheduling priority of of the backing kernel
+thread.
.Fa flags
argument can be used to specify properties of this handler as defined in
.In sys/bus.h .
@@ -195,10 +237,13 @@
.Pp
The
.Fn intr_event_remove_handler
-removes a handler from an interrupt thread.
+function removes an interrupt handler from the interrupt event specified by
+.Fa ie .
The
.Fa cookie
-argument specifies the handler to remove from its thread.
+argument, obtained from
+.Fn intr_event_add_handler ,
+identifies the handler to remove.
.Pp
The
.Fn intr_priority
@@ -226,6 +271,37 @@
Presently, the
.Dv INTR_ENTROPY
flag is not valid for software interrupt handlers.
+.Ss Handler Callbacks
+Each
+.Vt struct intr_event
+is assigned three optional callback functions when it is created:
+.Fa pre_ithread ,
+.Fa post_ithread ,
+and
+.Fa post_filter .
+These callbacks are intended to be defined by the interrupt controller driver,
+to allow for actions such as masking and unmasking hardware interrupt signals.
+.Pp
+When an interrupt is triggered, all filters are run to determine if any
+threaded interrupt handlers should be scheduled for execution by the associated
+interrupt thread. If no threaded handlers are scheduled, the
+.Fa post_filter
+callback is invoked which should acknowledge the interrupt and permit it to
+trigger in the future.
+If any threaded handlers are scheduled, the
+.Fa pre_ithread
+callback is invoked instead.
+This handler should acknowledge the interrupt, but it should also ensure that
+the interrupt will not fire continuously until after the threaded handlers have
+executed.
+Typically this callback masks level-triggered interrupts in an interrupt
+controller while leaving edge-triggered interrupts alone.
+Once all threaded handlers have executed,
+the
+.Fa post_ithread
+callback is invoked from the interrupt thread to enable future interrupts.
+Typically this callback unmasks level-triggered interrupts in an interrupt
+controller.
.Sh RETURN VALUES
The
.Fn intr_event_add_handler ,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Feb 12, 12:27 PM (1 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16610542
Default Alt Text
D33478.diff (5 KB)
Attached To
Mode
D33478: ithread(9): update existing function descriptions
Attached
Detach File
Event Timeline
Log In to Comment