Subject: "fast" syscalls?
To: None <tech-kern@NetBSD.org>
From: Garrett D'Amore <garrett_damore@tadpole.com>
List: tech-kern
Date: 03/16/2006 08:48:18
I'm looking at a project where I have a need for a fast user/kernel
interface.

Specifically, I am going to be sending some operations down to the
kernel (preferably in a shared region of memory, think FIFO or circular
Q), and I want to be able to have "signals" between the kernel and
userland to indicate that there is stuff in the queue (or that the queue
has been emptied, as an example).

(The operations are going to be graphics requests coming in from e.g.
Xwsfb and going to a generic framebuffer device for hardware acceleration.)

The question I have is, does anyone know of a "fast" way to e.g. kick a
kernel thread, without incurring the full overhead of a system call?  Or
am I stuck with ioctl() performance here?

Also, is there a "safe" way for user/kernel to use atomic operations on
a shared region of memory?  (Preferably an MI way.)  Then I could use it
to determine whether a kick was needed or not, and reduce some of the
syscall overhead for large batches of graphics ops.

Tks for any advice,

    -- Garrett

-- 
Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
http://www.tadpolecomputer.com/
Phone: 951 325-2134  Fax: 951 325-2191