Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
}
Функция выгрузки модуля из системы имеет стандартный вид:
static void __exit task_off(void)
{
return;
}
module_init(task_on);
module_exit(task_off);
Загружаемый модуль получим при помощи следующего Makefile:
.PHONY = clean
CC = gcc
CFLAGS = -O2 -Wall
KERNELDIR = /usr/src/linux
MODFLAGS = -D__KERNEL__ -DMODULE -I$(KERNELDIR)/include
all: task.o
task.o: task.c
$(CC) $(CFLAGS) $(MODFLAGS) -c task.c
clean:
rm -f *.o *~ core
Процесс sfc уже запущен на выполнение. После загрузки модуля информация об этом процессе будет собрана в файле /var/log/messages. Cравните результаты работы модуля с данными о процессе, которые находятся в /proc.
Остановимся подробнее на информации, касающейся адресов обработчиков сигналов:
Apr 18 21:18:17 darkstar kernel: 0 - 0x00000000
.......
Apr 18 21:18:17 darkstar kernel: 8 - 0x00000000
Apr 18 21:18:17 darkstar kernel: 9 - 0x080484D8 <----
Apr 18 21:18:17 darkstar kernel: 10 - 0x00000000
.......
Apr 18 21:18:17 darkstar kernel: 30 - 0x00000000
Как мы видим, все адреса обработчиков сигналов имеют значение SIG_DFL, т.е. NULL. Это значит, что при поступлении любого из этих сигналов процессу, система выполнит стандартные действия.
Исключение составляет сигнал под номером 9 (10-й в списке). Согласно перечню, приведенному в <asm-i386/signal.h>, это сигнал SIGUSR1:
#define SIGUSR1 10