Hi, do you have to use the semaphore or does a spinlock also meet your needs? If you are in kernel 2.4 you can use one of the task_queues (e.g the scheduler queue, timer and immediate queue also run at irq context) but that won't have a better speed than your solution because it also gets the processor when tasks are scheduled (all 10ms I think). In 2.6 it would be the work_queue (schedule_work()). So the best way is to use spinlocks and do the work in a tasklet at interrupt context.
Oliver J?rn Engel schrieb: > On Tue, 30 May 2006 11:46:09 +0200, Laurent Lagrange wrote: >> Thanks for your answer, but a tasklet runs in interrupt context >> (in_interrupt() != 0) so it doesn't support schedule() call >> included in "down" semaphore function. > > Do you have code you can show? > > J?rn >