Another idea is to do something with msgsnd()/msgrcv() to allow the kernel to do interprocess communication with userland processes. Some of the older operating systems (DEC's TOPS-10, for example) used this technique. Later Mark Hittinger bugs at pu.net