Написал модуль ядра. Он создаёт в /dev файлик boost. В нём определены функции open,close,read и write. По стандарту флаг match(он определён только в этом модуле) равен 0. Он отлавливает вызов open к определённым файлам. И когда кто-то открывает определённый файл, то модуль устанавливает флаг match в 1. Так вот... Будет висеть в системе даемон, типа этого:
Код: Выделить всё
int k = 0;
int fd = open("/dev/boost", O_RDONLY);
do {
read(fd, &k, sizeof(int));
} while(k!=-1);
close(fd);
Код: Выделить всё
int boost_read(struct cdev *dev, struct uio *uio, int flag) {
// sleep until match=1
memcpy((int *)uio->uio_iov->iov_base, &match, sizeof(int));
match = 0;
return 0;
}