interface for a hardware trigger driver

Philipp Ittershagen p.ittershagen at googlemail.com
Thu May 10 08:52:11 EDT 2012


(resend, forgot CC)

Hi Andre!

On Thu, May 10, 2012 at 11:09:07AM +0200, Andre Haupt wrote:
> Hi folks,
> 
> Its been a while since i last did some kernel related stuff,
> so please bear with me if this sounds strange to your ears.
> 
> What i want to achieve:
> I want to implement a hardware trigger that a user space process
> can react on.
> 
> I need a driver that blocks a process/thread until a sepcific
> hardware interrupt occurs. The process should call a kernel
> interface and then should get blocked until another
> process/thread calls another kernel interface to stop waiting
> for the irq or an interrupt actually occurs.
> 
> What i have:
> Back in the days i wrote a little character driver which implemented
> 2 ioctl commands. One command (IOCTL_TRIGGER_WAIT_IRQ) put the
> calling process to sleep using wait_evemt_interruptible() and
> the other command (IOCTL_TRIGGER_STOP_WAIT_IRQ) woke a processes
> again by calling wake_up_interruptible().
> 
> Now ioctls are frowned upon and i do not want to mess with
> majors and minors anymore either.
> 
> Do you have any hints to the right approach for such a driver?
> Should i use some sysfs interface? If yes, which? Or does
> such a driver already exist? Can it be one completely in
> user space?

Why don't you use open(), write(), read() etc. to do the job?

Tasks which should block can then do 

  echo wait > /dev/yourdevname

and another process can cancel the waiting by doing

  echo cancel > /dev/yourdevname



Greeting,

  Philipp



More information about the Kernelnewbies mailing list