• Изготовление медалей

    Доска объявлений. Барахолка - Изготовление медалей. Медали, награды, спорттовары.

    nagradion.ru

  • Запчасти форд фокус 3 в

    По хорошей цене запчасти форд фокус 3 в нашей организации.

    www.autopark.su





Linux Kernel (Ядро линукса) (часть 2)


Анализ пути к родительскому каталогу

Во многих случаях реальной целью операции анализа является не последний, а предпоследний элемент пути. Например, при создании файла последний элемент является именем еще не существующего файла, а предыдущая часть пути указывает на каталог, в котором должна быть создана новая ссылка. Следовательно, операция анализа пути должна возвратить объект элемент каталога” предпоследнего компонента. Другой пример: удаление файла, идентифицируемого путем /foo/bar, состоит в удалении bar из каталога foo. Таким образом, ядру в действительности интересен каталог foo, а не bar.
Флаг lookup parent используется, когда операция анализа должна найти каталог, содержащий последний элемент пути, а не сам этот элемент.

Когда флаг lookup parent установлен, функция iink_path_waik устанавливает также поля last и last type структуры данных nameidata. Поле last содержит имя последнего элемента пути. Поле last type идентифицирует тип последнего элемента. Оно принимает одно из значенийФлаг last root устанавливается функцией path iookup по умолчанию при запуске операции анализа пути Если оказывается, что путь состоит лишь из косой черты, ядро не изменяет значение ПОЛЯ last type.

Остальные значения поля lasttype устанавливаются функцией iink_path_waik), когда установлен флаг lookup_parent. В этом случае функция выполняет шаги, описанные в предыдущем разделе, вплоть до шага 22. Последующая операция обработки последнего элемента пути продолжается по-другому:
1. Функция записывает в поле nd->iast имя последнего элемента.
2. Инициализирует поле nd->iast_type значением last norm.
3. Если последний компонент представлен одиночной точкой ("."), функция записывает в поле nd->iast_type значение last dot.
4. Если последний компонент представлен двумя точками ("."), функция записывает в поле nd->iast_type значение last dotdot.
5. Возвращает значение ноль (нет ошибок).
Нетрудно заметить, что последний элемент не интерпретируется вовсе. Таким образом, когда функция возвращает управление, поля dentry и mnt структуры nameidata указывают на объекты, относящиеся к каталогу, который включает в себя последний элемент пути.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без проблем

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

Linux Kernel (Ядро линукса) (часть 1)

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть другие прерывания того же типа, и другие процессоры могут приступить к их обработке. Без спин-блокировки к главному дескриптору прерывания могли бы обратиться сразу несколько процессоров. Как мы...

Linux Kernel (Ядро линукса) (часть 2)

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно неуклюже: получив системный вызов fork о, ядро в буквальном смысле дублировало все адресное пространство родителя и присваивало копию процессу-потомку. Такая операция...

Linux Kernel (Ядро линукса) (часть 3)

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