Подскажите, есть модуль создающий поток, который должен отлавливать определенные сигналы. Но проблема в том, что поток вообще не видит сигналов, вот код:
int
netf_thread(void *empty)
{
spin_lock_irq( ¤t->sighand->siglock );
sigfillset( ¤t->blocked );
siginitsetinv( ¤t->blocked, sigmask(SIGUSR1) | sigmask(SIGTERM) );
recalc_sigpending();
spin_unlock_irq( ¤t->sighand->siglock );
daemonize("netf");
do {
set_current_state( TASK_INTERRUPTIBLE );
schedule_timeout( 2 * HZ );
if ( signal_pending( current )) {
# никак не попаду в эту часть кода при посылки сигнала
# через kill -9 <pid>
#
# а также не ловится через вызов:
# kill_proc( thread_pid, SIGTERM, 1 );
}
} } while ( !atomic_read( &f_exit ) );
}
static int __init
init_netf_module(void)
{
init_completion( &thread_complete );
thread_pid = kernel_thread( netf_thread, NULL, CLONE_FS | СLONE_SIGHAND );
if ( thread_pid < 0 ) {
printk("Can't create thread\n");
return -ENOMEM;
}
return 0;
}
static void __exit
cleanup_netf_module(void)
{
atomic_set( &f_exit, 1 );
kill_proc( thread_pid, SIGTERM, 1 );
wait_for_completion( &thread_complete );
}
В чем ошибка ?
Похожие темы
- Форум Kernel thread destroy (2004)
- Форум oprofile & external kernel modules (2010)
- Форум вызов generic_make_request из обработчика запросов блочного устройства (2019)
- Форум [kernel] NUMA (2011)
- Форум block device driver: не работает чтение (2024)
- Форум pci driver (2008)
- Форум LKM (2008)
- Форум LKM (2005)
- Форум LKM-rootkit (2005)
- Форум Разработка LKM (2006)