Вызывает функцию filp_open(), передавая в качестве параметров имя пути, флаги режима доступа и битовую маску разрешения. Эта функция, в свою очередь, выполняет следующие шаги:
а. Вызывает get_empty_filp() для получения нового файлового объекта.
б. Устанавливает поля f_flags и f_mode файлового объекта в соответствии со значениями параметров флагов и режимов.
в. Вызывает функцию open_namei(), которая выполняет следующие операции:
i. Invokes lookup_dentry( ) to interpret the file pathname and gets the
dentry object associated with the requested file.
ii. Performs a series of checks to verify whether the process is permitted
to open the file as specified by the values of the flags parameter. If so,
returns the address of the dentry object; otherwise, returns an error code.
д. Если доступ предназначен для записи, проверяет значение поля i_writecount объекта inode. Отрицательное значение означает, что файл был сопоставлен с памятью, указывая, что доступ для записи должен быть запрещен (см. Раздел 15.2 в Главе 15). В этом случае возвращает код ошибки. Любое другое значение указывает количество процессов, которые фактически выполняют запись в файл. В последнем случае увеличивает счетчик.
е. Инициализирует поля файлового объекта; в частности, устанавливает в поле f_op содержимое поля i_op->default_file_ops объекта inode. Это устанавливает все правильные функции для будущих операций с файлами.
ф. Если определен метод открытия файловых операций (по умолчанию), вызывает его.
грамм. Очищает флаги O_CREAT, O_EXCL, O_NOCTTY и O_TRUNC в f_flags.
час Возвращает адрес файлового объекта.