Роберт Лав - Разработка ядра Linux

Здесь есть возможность читать онлайн «Роберт Лав - Разработка ядра Linux» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2006, ISBN: 2006, Издательство: Издательский дом Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Разработка ядра Linux: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка ядра Linux»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.
Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Разработка ядра Linux — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка ядра Linux», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

struct inode*, struct dentry*);

int (*readlink)(struct dentry*, char*, int);

int (*follow_link)(struct dentry*, struct nameidata*);

int (*put_link)(struct dentry*, struct nameidata*);

void (*truncate)(struct inode*);

int (*permission)(struct inode*, int);

int (*setattr)(struct dentry*, struct iattr*);

int (*getattr)(struct vfsmount*, struct dentry*, struct kstat*);

int (*setxattr)(struct dentry*, const char*,

const void*, size_t, int);

ssize_t (*getxattr)(struct dentry*, const char*, void*, size_t);

ssize_t (*listxattr)(struct dentry*, char*, size_t);

int (*removexattr)(struct dentry*, const char*);

};

Рассмотрим указанные операции более подробно.

int create(struct inode *dir, struct dentry *dentry, int mode);

Эта функция вызывается подсистемой VFS из системных вызовов creat()и open()для создания нового файлового индекса, который имеет указанный режим доступа ( mode) и связан с указанным элементом каталога ( dentry).

struct dentry* lookup(struct inode *dir, struct dentry *dentry);

Эта функция производит поиск файлового индекса в указанном каталоге. Файловый индекс должен соответствовать имени файла, хранящемуся в указанном объекте элемента каталога.

int link(struct dentry *old_dentry, struct inode *dir,

struct dentry *dentry);

Эта функция вызывается из системного вызова link()для создания жесткой ссылки (hard link) на файл, соответствующий элементу каталога old_dentryв каталоге dir. Новая ссылка должна иметь имя, которое хранится в указанном элементе каталога dentry.

int unlink(struct inode *dir, struct dentry *dentry);

Эта функция вызывается из системного вызова unlink()для удаления файлового индекса, соответствующего элементу каталога dentryв каталоге dir.

int symlink(struct inode *dir, struct dentry *dentry,

const char *symname);

Эта функция вызывается из системного вызова symlink()для создания символьной ссылки с именем symnameна файл, которому соответствует элемент каталога dentryв каталоге dir.

int mkdir(struct inode *dir, struct dentry *dentry, int mode);

Эта функция вызывается из системного вызова mkdir()для создания нового каталога с указанным режимом доступа ( mode).

int rmdir(struct inode *dir, struct dentry *dentry);

Эта функция вызывается из системного вызова rmdir()для удаления каталога на который указывает элемент каталога dentryиз каталога dir.

int mknod(struct inode *dir, struct dentry *dentry,

int mode, dev_t rdev);

Эта функция вызывается из системного вызова mknod()для создания специального файла (файла устройства, именованного конвейера или сокета), информация о котором хранится в параметре rdev. Файл должен быть создан в каталоге dirс именем, указанным в параметре dentry, и режимом доступа mode.

int rename(struct inode *old_dir, struct dentry *old_dentry,

struct inode *new_dir, struct dentry *new_dentry);

Эта функция вызывается подсистемой VFS для перемещения указанного элемента каталога old_dentryиз каталога old_dirв каталог new_dirс новым именем, указанным в параметре new_dentry.

int readlink(struct dentry *dentry, char *buffer, int buflen);

Эта функция вызывается из системного вызова readlink()для копирования не более buflenбайт полного пути, связанного с символьной ссылкой, соответствующей указанному элементу каталога, в указанный буфер.

int follow_link(struct dentry *dentry, struct nameidata *nd);

Эта функция вызывается подсистемой VFS для трансляции символьной ссылки в индекс файла, на который эта ссылка указывает. На ссылку указывает указатель dentry, а результат сохраняется в структуру nameidata, на которую указывает параметр nd.

int put_link(struct dentry *dentry, struct nameidata* nd);

Эта функция вызывается подсистемой VFS после вызова функции followlink().

void truncate(struct inode *inode);

Эта функция вызывается подсистемой VFS для изменения размера заданного файла. Перед вызовом поле i_sizeуказанного индекса файла должно быть установлено в желаемое значение размера.

int permission(struct inode *inode, int mask);

Эта функция проверяет, разрешен ли указанный режим доступа к файлу, на который ссылается объект inode. Функция должна возвращать нулевое значение, если доступ разрешен, и отрицательное значение кода ошибки в противном случае. Для большинства файловых систем данное поле устанавливается в значение NULL, и при этом используется общий метод VFS, который просто сравнивает биты поля режима доступа файлового индекса с указанной маской. Более сложные файловые системы, которые поддерживают списки контроля доступа (ACL), реализуют свой метод permission().

int setattr(struct dentry *dentry, struct iattr *attr);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка ядра Linux»

Представляем Вашему вниманию похожие книги на «Разработка ядра Linux» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Разработка ядра Linux»

Обсуждение, отзывы о книге «Разработка ядра Linux» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.