Читаем Разработка ядра Linux полностью

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

• int setxattr(struct dentry *dentry, const char *name,

  const void *value, size_t size, int flags);

Эта функция вызывается подсистемой VFS для установки одного из расширенных атрибутов (extended attributes)[71] с именем name в значение value для файла, соответствующего элементу каталога dentry.

• int getxattr(struct dentry *dentry, const char *name,

  void *value, size_t size);

Эта функция вызывается подсистемой VFS для копирования значения одного из расширенных атрибутов (extended attributes) с именем name в область памяти с указателем value.

• ssize_t listxattr(struct dentry *dentry, char *list, size_t size);

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

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

Эта функция удаляет указанный атрибут для указанного файла.

<p>Объект dentry</p>

Как уже рассказывалось, подсистема VFS представляет каталоги так же, как и файлы. В имени пути /bin/vi, и элемент bin, и элемент vi — это файлы, только bin — это специальный файл, который является каталогом, a vi — это обычный файл. Объекты файловых индексов служат для представления обоих этих компонентов. Несмотря на такую полезную унификацию, подсистеме VFS также необходимо выполнять операции, специфичные для каталогов, такие как поиск компонента пути по его имени, проверка того, что указанный элемент пути существует, и переход на следующий компонент пути.

Для решения этой задачи в подсистеме VFS реализована концепция элемента каталога (directory entry или dentry). Объект dentry — это определенный компонент пути. В предыдущем примере компоненты /, bin и vi — это объекты элементов каталога. Первые два — это каталоги, а последний — обычный файл. Важным моментом является то, что все объекты dentry — это компоненты пути, включая и обычные файлы.

Элементы пути также могут включать в себя точки монтирования. В имени пути /mnt/cdrom/foo, компоненты /, mnt, cdrom и foo — это все объекты типа dentry. Подсистема VFS при выполнении операций с каталогами по необходимости конструирует объекты элементов каталога на лету.

Объекты типа dentry представлены с помощью структуры struct dentry и определены в файле . Эта структура с комментариями, которые определяют назначение каждого поля, имеет следующий вид.

struct dentry {

 atomic_t                 d_count;     /* счетчик использования */

 unsigned long            d_vfs_flags; /* флаги кэша объектов dentry */

 spinlock_t               d_lock; /* блокировка данного объекта dentry */

 struct inode             *d_inode; /* соответствующий файловый индекс */

 struct list_head         d_lru; /* список неиспользованных объектов */

 struct list_head         d_child;     /* список объектов у родительского

                                          экземпляра */

 struct list_head         d_subdirs;   /* подкаталоги */

 struct list_head         d_alias;     /* список альтернативных (alias)

                                          индексов */

 unsigned long            d_time;      /* время проверки правильности */

 struct dentry_operations *d_op;       /* таблица операций с элементом

                                          каталога */

 struct super_block       *d_sb;       /* связанный суперблок */

 unsigned int             d_flags;     /* флаги элемента каталога */

 int                      d_mounted;   /* является ли объект точкой

                                           монтирования */

 void                     *d_fsdata;   /* специфические данные

                                          файловой системы */

 struct rcu_head          d_rcu; /* блокировки RCU (read-copy update) */

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных