Чтение онлайн

на главную - закладки

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

 dev_state->byte_write = 0;

 MOD_INC_USE_COUNT;

 return 0;

}

static int device_close(struct inode *inode, struct file

 *fp) {

 struct device_state *dev_state;

 printk("My module: try to close device with minor number %d\n",

MINOR(inode->i_rdev));

 dev_state = &state[MINOR(inode->i_rdev)];

 if (!dev_state->dev_open) {

printk("Device is not open\n");

return 0;

 }

 dev_state->dev_open = 0;

 MOD_DEC_USE_COUNT;

 return 0;

}

Теперь модуль для абстрактного устройства device готов. Вы можете написать небольшую программку, которая пыталась бы выполнить операции с нашим устройством: открыть его и закрыть — других операций мы не определили. Для определения других действий используется та же структура file_operations. Листинг 28.10 показывает, как

она объявлена в файле
/usr/src/linux-2.4/include/linux/fs.h
.

Листинг 28.10. Фрагмент файла /usr/src/linux-2.4/include/linux/fs.h

struct file_operations {

 struct module *owner;

 loff_t (*llseek)(struct file*, loff_t, int);

 ssize_t (*read)(struct file*, char*, size_t, loff_t*);

 ssize_t (*write)(struct file*, const char*,

size_t, loff_t*);

 int (*readdir)(struct file*, void*, filldir_t);

 unsigned int (*poll) (struct file*,

struct poll_table_struct*);

 int (*ioctl)(struct inode*, struct file*, unsigned int,

unsigned long);

 int (*mmap)(struct file*, struct vm_area_struct*);

 int (*open)(struct inode*, struct file*);

 int (*flush)(struct file*);

 int (*release)(struct inode*, struct file*);

 int (*fsync)(struct file*, struct dentry*,

int datasync);

 int (*fasync)(int, struct file*, int);

 int (*lock)(struct file*, int, struct file_lock*);

 ssize_t (*readv)(struct file*, const struct iovec*,

unsigned long, loff_t*);

 ssize_t (*writev)(struct file*, const struct iovec*,

unsigned long, loff_t*);

 ssize_t (*sendpage)(struct file*, struct page*, int, size_t,

loff_t*, int);

 unsigned long (*get_unmapped_area)(struct file*, unsigned long,

unsigned long, unsigned long, unsigned long);

};

Как использовать структуру file_operations, думаю, ясно. Например, нам нужно описать обработчики записи и чтения устройства — функции device_write и device_read:

struct file_operations FO = {

 open: device_open,

 release: device_close,

 read: device_read,

 write: device_write

};

Обработчики чтения и записи пишутся «по образу и подобию» обработчиков открытия и закрытия устройства, то есть сначала нам нужно определить младший номер с помощью вызова MINOR, а затем произвести операцию с устройством.

Приложение

Таблицы соответствия Windows- и Linux-программ

С помощью приведенных ниже таблиц вы сможете подобрать достойный аналог для вашей Windows-программы. При заполнении таблицы я руководствовался простым правилом: чтобы Windows-программа и ее Linux-аналог были в одной весовой категории, то есть обладали примерно одинаковыми возможностями.

Работа в Интернет
Windows-программа Linux-аналог Комментарий
Internet Explorer Netscape Navigator/Mozilla Думаю, что обе эти программы в представлении и особых комментариях не нуждаются — мы их знаем еще со времен Windows
Konqueror Вряд ли Завоеватель сможет выступить в роли Internet Explorer'а. Но для походов на не очень «навороченные» (с использованием Flash, VRML, апплеты Java) сайты его возможностей вполне хватит
Galeon Данный браузер основан на движке Mozilla, поэтому он с успехом может заменить самого Mozill'у!
IE for Linux Компания Microsoft портировала программу IE на платформу Linux. Честно говоря, «ослика ИА для Линукс» я в глаза не видел, но судя по отзывам, программа линуксоидам не понравилась
Opera Opera for Linux Уже вышла восьмая версия этого популярного браузера, и она доступна пользователям Linux. Но рекомендуется воспользоваться стабильной версией 7.54 — это проверенная временем, надежная версия
Mozilla for Windows Mozilla for Linux Linux-аналог обладает всеми возможностями Windows-программы
Outlook Ximian Evolution Полный аналог знаменитой программы Outlook — программы похожи друг на друга как две капли воды
K Mail K Mail вполне справится с возложенной на него задачей — служить заменителем для Outlook. Организация учетных записей K Mail очень напоминает Outlook, что делает эти две программы несколько похожими друг на друга. Конечно, K Mail и Outlook не очень похожи внешне, но идея остается прежней. Нужно заметить, что K Mail не заменит полную версию Outlook, скорее всего, он «потянет» на роль аналога Outlook Express
Outlook (чтение новостей) Knode Программа обладает достаточно удобным интерфейсам, что позволяет ставить ее в один ряд с клиентом новостей программы Outlook
Netscape Messenger Messenger — это более зрелый, по сравнению с Knode, продукт, позволяющий читать не только почту по протоколам POP3 и IMP3, но и новости
The Bat! Sylpheed Программа The Bat! давно стала культовой, а ее разработчики видно, не спешат портировать программу на платформу Linux. К счастью, мир не без добрых людей: разработчик Hiroyuki Yamamoto (скорее всего, японец) написал Linux-аналог программы The Bat! Программа Sylpheed заслуживает отдельного разговора, поэтому о ней мы поговорим немного позже
The Bat! K Mail Программа K Mail тоже может выступать в роли аналога для программы The Bat!,
но с меньшим успехом, чем программа Sylpheed
FlashGet, Reget, Go!zilla (менеджеры закачки файлов) Downloader for X Мне очень понравилась эта программа — по своим возможностям она не уступает ни одной из перечисленных Windows-программ
Kget (или Caitoo) Довольно неплохой загрузчик файлов
Wget Данная программа работает в консоли, то есть не имеет графического интерфейса, но возможности данной программы заслуживают уважения
Teleport Pro (полная загрузка сайта) Downloader for X Программа Downloader for X может использоваться как для загрузки одного файла, так и для закачки целых сайтов
Wget То же самое можно сказать и о программе wget
FTP-клиенты (Bullet Proof FTP) 1. Gftp 2. Ifgp 3. ncftp Первые две программы более удобны, поскольку они являются графическими приложениями. Третья программа — ncftp — работает в консоли, но обладает довольно полезными функциями, например, докачка файла в случае разрыва соединения или закачка файлов по шаблону
ICQ, MSN, AIM 1. licq 2. aicq 3. micq 4. Gaim 5. Simple Instant messenger Существует много разновидностей ICQ-клиента. Вы можете выбрать один из них на свой вкус
Mirc (IRC-клиент) Xhat, Kvlrc, Ksirc С IRC-клиентами также никогда не было проблем — это только три наиболее удобные на мой взгляд IRC-клиенты
Firewall (BlackICE, ATGuard, ZoneAlarm) iptables или ipchains Обе эти программы являются стандартными и устанавливаются при установке любого дистрибутива Linux. Использовать графические оболочки для iptables или ipchains (Kmyfirewall, Firewall Builder) я не рекомендую, поскольку ни одна оболочка не позволяет гибко настроить firewall
VisualRoute, CyberKit Xtraceroute, VisualRout for Linux, traceroute, ping, tcpdump Программу VisualRoute с успехом можно заменить программой Xtraceroute или ее текстовой версией traceroute. Пакет CyberKit можно заменить набором стандартных программ — traceroute, ping, nslookup и tcpdump; полученная смесь будет мощнее, чем CyberKit
Фильтрация данных и роутинг (BlackICE, ATGuard, WinRoute, WinGate) Squid и route Обе эти программы являются стандартными и обладают значительно большими возможностями, чем их Windows-аналоги
VentaFax efax Gfax Эти программы смогут заменить знаменитую программу VentaFax
Vdialer, E-type dialer (дозвон к провайдеру) Kppp Gppp Kinternet Звонить к провайдеру Linux также умеет — не сомневайтесь, ведь Linux создан для сети, как птица для полета
Загрузка канала kpppload kisdnload Первая программа отображает график загрузки PPP-канала, а вторая — канала ISDN
Remote Administrator telnet ssh X-terminal В отличие от Windows, где для удаленного администрирования нужно устанавливать отдельную программу, в Linux есть стандартные средства, с помощью которых можно управлять удаленной машиной
HyperTerminal minicom Небольшая программа с большими возможностями
Работа с файлами
Windows-программа Linux-аналог Комментарий
Norton Commander, Volcov Commander, FAR Midnight Commander Программа Midnight Commander полностью заменяет популярную программу NC. Интерфейс программ практически одинаковый: MC, как и NC, обладает двумя панелями синего цвета и работает в текстовом режиме. Так как MC — это файловый менеджер Unix (Linux), то он обладает специфическими для этой ОС функциями: операции с правами доступа, создания символических ссылок, поддержка сети (NFS. FTP)
Windows Commander (Total Commander) Midnight Commander Программа MC обладает всеми функциями указанных Windows-программ. Правда, в отличие от Windows Commander, MC работает в текстовом режиме. Хотя имеется возможность запуска MC в терминале X: при этом программа будет реагировать на события X (например, щелчок мыши на кнопке Копировать)
LinCommader Удобный файловый менеджер. Программа доступна по адресу http://www.ussr.to/Russia/vvi/lcmd.html
Krusader Программа обладает удобным интерфейсом и предназначена для работы в KDE. Поддерживает различные форматы архивов, обладает встроенными FTP-клиентом и просмотрщиком графических файлов. Программа доступна по адресу http://krusader.sourceforge.net/
Прикладные и системные программы
Поделиться:
Популярные книги

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит
Windows-программа Linux-аналог Комментарий
Блокнот kedit, gedit, xedit Любая из этих программ в состоянии заменить Блокнот
Bred, Rpad32, Aditor Kate Программа Kate поддерживает 38 различных кодировок и подсветку синтаксиса для С, С++, Java, Pascal, PHP, HTML, Bash и других языков программирования
Программы-переводчики (Prompt) Пока нет ни одного нормального переводчика
Словари (Socrat, Lingvo) Mueller, Mova, Ksocrat Любой из этик словарей способен заменить Lingvo, хотя я не обещаю, что замена будет равноценной
RAR/WinRAR RAR for Linux Версия популярного архиватора для Linux — комментарии излишни
Ark Программа входит в состав утилит KDE (пакет kdeutil) и поддерживает распространенные форматы архивов
WinZIP Ark Все тот же Ark