Недавно занимаюсь разработкой софта под линуксом. Нужно написать протокол связи modbus, который будет общаться с железякой.
Организовать опрос драйвера удобнее, как мне показалось, с помощью системных прерываний. И вот тут я наткнулся на проблему. Дело в том, что в моем дистрибутиве (использую Ubuntu 12.10) в /usr/include/linux отсутствует interrupt.h
Нашёл инструкцию, как добавить заголовочные файлы из исходников:
$ make headers_check
$ make INSTALL_HDR_PATH=dest headers_install
$ find dest/include \( -name .install -o -name ..install.cmd \) -delete
# cp -rv dest/include/* /usr/include
Если я правильно понимаю, это просто копирование заголовочных файлов, сгенерированных из исходников в /usr/include.
Но как только в программе появлятся
#include <linux/interrupt.h>
у меня компилятор дико ругается на файлы linux/bitops.h, linux/thread_info.h и linux/list.h:
/usr/include/linux/bitops.h:175,37 - Error - unknown type name 'u64'
/usr/include/linux/bitops.h:181,2 - Error - BITS_PER_LONG not 32 or 64
/usr/include/linux/thread_info.h:24,4 - Error - unknown type name 'u32'
/usr/include/linux/thread_info.h:25,4 - Error - unknown type name 'u32'
/usr/include/linux/thread_info.h:26,4 - Error - unknown type name 'u32'
/usr/include/linux/thread_info.h:27,4 - Error - unknown type name 'u32'
/usr/include/linux/thread_info.h:28,4 - Error - unknown type name 'u64'
/usr/include/linux/thread_info.h:29,4 - Error - unknown type name 'u32'
/usr/include/linux/thread_info.h:33,4 - Error - unknown type name 'clockid_t'
/usr/include/linux/thread_info.h:38,4 - Error - unknown type name 'u64'
/usr/include/linux/list.h:26,6 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:27,6 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:41,6 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:42,5 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:43,5 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:44,6 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:62,28 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:76,22 - Error - incomplete definition of type 'struct list_head'
/usr/include/linux/list.h:88,6 - Error - incomplete definition of type 'struct list_head'