Повторяю тред ,так как предыдущий неправильно запостил.
Имеется модуль ядра,kernel 2.2.14(RedHat 6.2)... По прерыванию из bottom-half обработчика прерывания посылается сигнал юзерскому процесу таким образом:
код:
...
...
struct XXX_cbd
{
unsigned long signature;
void (*isr)(void);
struct sigaction sa;
sigset_t mask;
};
...
struct siginfo info;
info.si_signo = dev->callback[channel].signo;
info.si_errno = channel;info.si_code = SI_MESGQ;// must be < 0 for info.si_ptr
info.si_pid = 0; /* sending from kernel */
info.si_uid = 0;
info.si_ptr = dev->callback[channel].context; /* XXX_cbd struct*/
send_sig_info(info.si_signo, &info, dev->callback[channel].process);
---------------------------------------------------------------------
По приходу в юзерский обработччик:
код:
static void XXX_signal_handler(int signo, siginfo_t * siginfo, void * arg)
{
if(signo == SIGUSR2 && siginfo->si_signo == SIGUSR2 &&
siginfo->si_code == SI_MESGQ && siginfo->si_pid == 0 &&
siginfo->si_uid == 0)
{
struct XXX_cbd * cptr = (struct DM6420HR_cbd *)siginfo->si_ptr;
if(cptr->signature == magic_signature && cptr->isr != NULL) (*cptr->isr)();
}
}
---------------------------------------------------------------------
Наблюдаются странные вещи:
siginfo->si_code не равно SI_MESGQ а равно 0
siginfo->si_uid не равно 0 а равно к примеру C0A30000
а siginfo->si_ptr приходит вообще равным NULL вместо того что бы указывать куда надо...
В чём может быть дело?
ЗЫ.
В RedHat 7.3 ( kernel 2.4.18) всё работает правильно.
Пытался посылать сигнал не из bottom-half обработчика(mark_bh(IMMEDIATE_BH)
) а также непосредственно из обработчика прерывания - результат тот же.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Искажается информация о сигнале при прохождении оного из kernel 2.2 в user-space (Red Hat 6.2) (2003)
- Форум Некорректная работа учебной программы обработки сигналов (2012)
- Форум user space <-> kernel space (2010)
- Форум User space and Kernel space (2005)
- Форум LINUX RED HAT 6.2 (2002)
- Форум Стример RED Hat 6.2 (2001)
- Форум Red Hat Enterprise Linux 6.2 (2012)
- Новости Red Hat Enterprise Linux 6.2 (2011)
- Форум Red Hat 6.2 и Windows (2001)
- Форум Установка Linux red hat 6.2 (2001)