This is the support package for the Linux User Level Interrupt (ULI) feature. It contains source code for a library, libuli, to make using the feature easier. It also contains a man page for the library, a sample application, and test programs to help check the correctness of the kernel implementation. Building this package follows standard procedures. Type "make", "make clean", or "make install" as needed. The installed code is placed in /usr/local/. The test programs are not installed. To use the kernel feature you'll need to create a /dev/uli. Do something like the following. > cat /proc/interrupts |grep uli 63 uli > mknod /dev/uli c 10 63 At the time of writing, ULI has only been ported to IA64. Ports to other architectures are straight forward. The required steps for the kernel port are documented in the uli.c kernel source file. Ports of the library require adding a method to get the instruction pointer and global pointer of the user's handler function, and implementations of ULI_tao() and ULI_tas() which are each less than 10 lines of assembly. Currently the library and kernel only support registering ULI handlers for particular IRQ lines. The interface between the kernel and user space should be flexible enough to support many other kinds of triggers. To add a new source to the library you need only clone ULI_register_irq() and change a few lines. To add to the kernel you will need to add a new ioctl cmd for your new source. In the kernel you can clone the existing code as well. Michael A. Raymond 18 FEB 05