Я так понимаю, что вам известен номер прерывания и по нему нужно определить какой это пин?
Думаю что это сильно зависит от архитектуры процессора, например для процессоров от freescale, макрос gpio_to_irq() выглядит так
Цитата
#define gpio_to_irq(gpio) (MXC_GPIO_IRQ_START + (gpio))
где MXC_GPIO_IRQ_START это
Цитата
#ifdef CONFIG_MXC_TZIC
#define MXC_INTERNAL_IRQS 128
#elif defined CONFIG_ARM_GIC
/* assuem 256 is enough for GIC */
#define MXC_INTERNAL_IRQS 256
#else
#define MXC_INTERNAL_IRQS 64
#endif
#define MXC_GPIO_IRQ_START MXC_INTERNAL_IRQS
Т.е. грубо говоря, gpio_to_irq(pin) это равно (#ЧИСЛО + pin), и дальше уже нужно смотреть как представляются пины в вашей конкретной архитектуре, например e freescale, регистры gpio разбиваются на банки по 32 gpio. Если нужно обратиться к 5-му пину, 4-ого банка, то значение Pin будет равно ((4-й банк-1)*32 + 5-й пин) = (3 * 32 + 5) = 101. Но, например, для самсунгов, там уже как-то по другому.
По этому, если вам нужно определить pin, то нужно посмотреть в каком виде и как пины представляются для вашей архитектуры.
Цитата
Флаг SHARED?
Вы бы сообщили о какой платформе речь идет? Я не уверен, но мне кажется что флаг SHARED характерен для x86 артитектуры, на arm я с ним не сталкивался, как на других - не знаю.