This shows you the differences between two versions of the page.
linux-kernel-internals:task-2014 [2014/04/06 13:38] segoon old revision restored |
linux-kernel-internals:task-2014 [2014/05/07 08:39] (current) segoon |
||
---|---|---|---|
Line 42: | Line 42: | ||
* Для упрощения отладки используйте pr_info(), печатающую отладочную информацию в системный лог (либо другие функции из семейства printk). Лог можно прочитать с помощью консольной команды dmesg. | * Для упрощения отладки используйте pr_info(), печатающую отладочную информацию в системный лог (либо другие функции из семейства printk). Лог можно прочитать с помощью консольной команды dmesg. | ||
- | * Для работы с символьным устройством используйте функции [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L2122|register_chrdev()]] и [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L2128|unregister_chrdev()]]. Из файловых операций структуры [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1515|file_operations]] необходимо реализовать лишь методы open (вызывается при попытке открытия файла), release (вызывается при закрытии файлового дескриптора), unlocked_ioctl (вызывается при соответствующем системном вызове ioctl(2)). Остальные поля структуры file_operations для задания не важны. | + | * Для работы с символьным устройством используйте функции [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L2122|register_chrdev()]] и [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L2128|unregister_chrdev()]]. Из файловых операций структуры [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1515|file_operations]] необходимо реализовать лишь методы open (вызывается при попытке открытия файла), release (вызывается при закрытии файлового дескриптора), unlocked_ioctl (вызывается при соответствующем системном вызове ioctl(2)). |
* Для ограничения числа пользователей рекомендуется использовать атомарные переменные. | * Для ограничения числа пользователей рекомендуется использовать атомарные переменные. | ||
* Для сборки модуля требуются заголовочные файлы ядра. В дистрибутивах линукс семейства Debian (Debian, Ubuntu, Mint, ...) для их установки требуется пакет linux-headers-generic. В дистрибутивах семейства Fedora требуется пакет kernel-devel. | * Для сборки модуля требуются заголовочные файлы ядра. В дистрибутивах линукс семейства Debian (Debian, Ubuntu, Mint, ...) для их установки требуется пакет linux-headers-generic. В дистрибутивах семейства Fedora требуется пакет kernel-devel. |