How to establish a priority to an interrupt handler
Hi,
I'm using Ubuntu 10.04 with the 2.6.31-11-rt patch installed. I'm developing a PCI device driver using hardware interrupts.
As I read at the RT wiki
(https://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch ) interrupts are moved to kernel threads called Threaded Interrupts in the RT patch.
I would like to give a priority chosen by me to my IRQ handler, but I don't know how to do it, or if it is possible (it seems it is).
I've found (http://lwn.net/Articles/302043/ ) that what I had to use in order to get Threaded Interrupt is:
int request_threaded_irq(unsigned int irq, irq_handler_t handler,
irq_handler_t quick_check_handler, unsigned long flags, const char *name, void *dev)
But there is not priority there!
Using ps -eo pid,pri,rtprio,cmd I've seen my handler runs with priority 50.
I also used :
int request_irq (unsigned int irq, void (*handler) (int, void *, struct pt_regs *), unsigned long irqflags, const char *devname, void *dev_id);
and using ps command here my handler still runs with priority 50. Shouldn't it work as a non threaded interrupt then? Why 50 instead 99 or the highest priority one?
Which function should I use to chose the priority for the IRQ thread?
Is there any other function to call from this context where my handler could know its priority?
Please I wish to be personally CC'ed the answers/comments posted to the list in response to my posting because I'm not subscribed to the list.
Thank you very much
Mónica
Quoted 2 lines · Monica Puig-Pey
I'm developing a PCI device driver using hardware interrupts. I would like to give a priority chosen by me to my IRQ handler,
Please note that
1) priorities are relative to the other priorites currently in use, so assigning a fixed priority does not make sense unless you know all the other priorites; and
2) it is the job of the administrator, not of the driver writer, to determine which device gets the highest priority.
Regards,
Clemens