Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
printk("My module: try to open device with minor number %d ", MINOR(inode->i_rdev));
dev_state = &state[MINOR(inode->i_rdev)];
if(dev_state->dev_open)
{
printk("Devise is busy ");
return -EBUSY;
}
dev_state->dev_open = 1;
dev_state->byte_read = 0;
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 ", MINOR(inode->i_rdev));
dev_state = &state[MINOR(inode->i_rdev)];
if(!dev_state->dev_open)
{
printk("Device is not open ");
return 0;
}
dev_state->dev_open=0;
MOD_DEC_USE_COUNT;
return 0;
}
Теперь драйвер для нашего абстрактного устройства device готов. Вы можете написать небольшую программку, которая бы пыталась выполнить операции с нашим устройством: открыть его и закрыть – других операций мы не определили. Для определения других действий используется та же структура file_operations. В файле /usr/src/linux-2.4/include/linux/fs.h она объявлена так:
Листинг 11. Фрагмент файла /usr/src/linux-2.4/include/linux/fs.h
struct file_operations {