Fixed and applied, thanks! jbra...@dismail.de, le lun. 14 oct. 2024 11:52:22 -0400, a ecrit: > * hurd/documentation.mdwn: add link to libirqhelp > * hurd/libirqhelp.mdwn: new file > --- > hurd/documentation.mdwn | 1 + > hurd/libirqhelp.mdwn | 53 +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 54 insertions(+) > create mode 100644 hurd/libirqhelp.mdwn > > diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn > index 68914697..3a662ca4 100644 > --- a/hurd/documentation.mdwn > +++ b/hurd/documentation.mdwn > @@ -78,6 +78,7 @@ is included in the section entitled > * [[libnetfs]] -- short introductory material > * [[libdiskfs]] > * [[libihash]] > + * [[libirqhelp]] > * [[libpthread]] > * [[libfshelp]] > * [[libps]] > diff --git a/hurd/libirqhelp.mdwn b/hurd/libirqhelp.mdwn > new file mode 100644 > index 00000000..201df2e3 > --- /dev/null > +++ b/hurd/libirqhelp.mdwn > @@ -0,0 +1,53 @@ > +[[!meta copyright="Copyright © 2024 Free Software Foundation, > +Inc."]] > + > +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable > +id="license" text="Permission is granted to copy, distribute and/or modify > this > +document under the terms of the GNU Free Documentation License, Version 1.2 > or > +any later version published by the Free Software Foundation; with no > Invariant > +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the > license > +is included in the section entitled [[GNU Free Documentation > +License|/fdl]]."]]"""]] > + > +[[!tag stable_URL]] > + > +Damien Zammit authored libirqhelp, which lets userspace attach and > +handle interupts. Suppose, a user presses a key on his keyboard, then > +the keyboard can send an interrupt request (an IRQ), to the the > +processor. The CPU will try to interupt the program, so that a > +callback handler can run instead. A brief overview of `x86` interrupt > +information can be found on > +[[wikipedia|https://en.wikipedia.org/wiki/Interrupt_request]]. The > +[[osdev wiki|https://wiki.osdev.org/IOAPIC]] has more technical > +information. The source for `libirqhelp` can be found in > +`$hurd-src/libirqhelp/`. > + > +First you must call `irqhelp_init ();` Then you can install an > +interupt handler with this function: > + > + struct irc * > + irqhelp_install_interrupt_handler (int gsi, int bus, int dev, > + int fun, void (*handler)(void*), > + void > *context); > + > +If `gsi` is `-1`, then ACPI will look up the global system interrupt. > +If `bus`, `dev`, and `fun` are `-1`, then you must define `gsi` > +(global system interrupt). You then use the returned `struct irc *` > +to call the other functions. > + > +You have to use this next function at some point, and you can call it > +explicitly from another thread. `arg` is casted into a `struct irc *`. > + > + void * irqhelp_server_loop (void *arg); > + > +You can enable an irq via: > + > + void irqhelp_enable_irq (struct irq *irq); > + > +You can disable an irq via: > + > + void irqhelp_disable_irq (struct irq *irq); > + > +You can deregister a handler via: > + > + error_t irqhelp_remove_interrupt_handler (struct irq *irq); > -- > 2.45.2 > >
-- Samuel <y> la vraie vie, c'est quand le prompt passe de $ à #