hello talib.. > if (signal_pending) > { > return -EINTER > } I think this is the problem. You return -EINTR no matter what signal is currently pending. try to study next_signal() in kernel/signal.c, I think by using this function, you can get the signal number of the pending signal(s), thus you can act accordingly. Since I am not sure if this function is exported, maybe you can use dequeue_signal() instead (also defined in kernel/signal.c). Good luck... regards, Mulyadi -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/