|
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
|
|
Реализация struct file в ядре23.12.2014, 18:46. Показов 3591. Ответов 10
Метки нет (Все метки)
Всем снова привет.
В ядре, в заголовочном файле fs.h есть struct file, которая ответственна собственно за сам файл. Если тут есть специалисты по системному программированию, прошу подсказать, каким образом система понимает что файл является директорией? Какой флаг, структура или что-то ещё ответственны за это? Я понимаю что есть системный вызов readdir, но не очень понимаю где эта информация хранится в ядре. Подскажите пожалуйста, куда копать, какие структуры изучать?
0
|
|
| 23.12.2014, 18:46 | |
|
Ответы с готовыми решениями:
10
Реализация семафора в ядре Linux Struct sockaddr vs. struct sockaddr_in typedef struct Foo или struct Foo |
|
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
|
|||
| 23.12.2014, 19:11 | |||
|
1
|
|||
|
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
|
|
| 23.12.2014, 19:17 [ТС] | |
|
Где можно inode найти?
Спасибо за инфу по struct file.
0
|
|
|
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
|
||
| 23.12.2014, 19:27 | ||
Можно ее смотреть. Глубже опускаться до ФС смысла нет в данном вопросе.
0
|
||
|
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
|
|
| 23.12.2014, 19:41 [ТС] | |
|
Не могу найти реализацию inode, без понятия что она из себя представляет.
Не подскажите?
0
|
|
|
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
|
|
| 23.12.2014, 19:42 | |
|
0
|
|
|
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
|
|
| 23.12.2014, 19:50 [ТС] | |
|
Сама структура inode и что она из себя представляет, а то grep очень много результатов даёт.
Например, я хочу внести изменения и добавить новый элемент в само понятие файла. Это возможно? Добавить какой-нибудь параметр и т.д. Я ищу в файлах ядра, но там ничего не вижу. Похожее нашел в /usr/include/linux/fs.h
0
|
|
|
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
|
|||||||
| 23.12.2014, 20:03 | |||||||
|
Если интересует именно директория/не директория, то это поле i_mode. Если интересует то, как ты писал readdir, то это реализуется на уровне файловой системы. ФС в свою очередь в сорцах ядра разделены по директориям по названию. Каждая ФС по-своему определит inode_operations и file_operations. Например, для ext3: http://lxr.free-electrons.com/... ?v=3.6#L94 Почитай какую-нибудь книгу про ядро Linux, станет понятнее. Добавлено через 2 минуты Здесь пример использования поля (проверка на директория, или нет), для выставления нужных обработчиков для inod'ы: http://lxr.free-electrons.com/... =3.6#L3025 Кури. Добавлено через 2 минуты
1
|
|||||||
|
|
|
| 23.12.2014, 21:24 | |
|
Если интересно, можете глянуть на моем гитхабе, как я написал простой драйвер в ядре линукс для символьного девайса. В коде учавствует и struct file и inode. Могут при необходимости дать подробный комментарий по коду.
https://github.com/thatskriptk... e_module.c А здесь я сделал простое чтение файла (девайса /dev/urandom) https://github.com/thatskriptk... ernel_IO.c
1
|
|
|
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
|
||||||
| 23.12.2014, 23:27 [ТС] | ||||||
|
Хорошо, всё понял.
Есть какая-нибудь удобночитаемая книга по структуре ядра? У меня после работы не очень много времени, чтобы читать очередного Страуструпа. Драйвер заценил, смотрю.
0
|
||||||
|
|
|
| 24.12.2014, 06:35 | |
Сообщение было отмечено kordax как решение
Решение
1) К превиликому сожалению, самая лучшая книга по ядру - это исходники. Лучший сайт по исходникам ядра, я считаю
http://lxr.free-electrons.com/ident Можете искать по идентификатору, например вводите struct file и вперед, смотреть как и что. 2) Начнем с русского языка. Очень хорошо описал написание дров, модулей и проччих вещей в ядре - Олег Цилюрик. Очень редко можно встретить более менее актуальный материал по ядру на русском! Очень рекомендую. http://rus-linux.net/MyLDP/BOO... index.html 3) На opennet.ru тоже есть материал на русском, но там немного посложнее, средний уровень подготовки я считаю, но мне как новичку помогло. http://www.opennet.ru/base/dev... s.txt.html 4) Теперь перейдем к топовым книгам. Коротенькая, информативная, стандарт для разработчиков ядра, это конечно же Linux Device Driver, 3 издание и Adison.Wesley.Linux.Kernel.Development.3 rd.Edition . По первой (LDD) я делал мноиге примеры, очень рекомендую ее. Вторая как раз по структуре ядра, идеальная прям, открываете оглавление и читаете то что интересно. Первая книга есть в октрытом доступе, вот оффициальная ссылка. http://lwn.net/Kernel/LDD3/ 5) По написанию дров под линь, очень мало современных материалов и книг, очень прям мало. Потому что ядро развивается очень быстро, каждый день сотни коммитов, поэтому уследить трудно. Но есть еще одна хорошенькая книга. Называется Essential Linux Device Drivers. Ссылка на амазон: http://www.amazon.com/Essentia... 0132396556 6) Фундаментальный труд по ядру, это конечно же книга - Undestanding the linux kernel,3rd edition (почти 1000 страниц) на амазоне http://www.amazon.com/Understa... 0596005652 Все же рекомендую бегло пройтись по Adison.Wesley.Linux.Kernel.Development, ну и по ЦИрюльнику. Вторую я приложил в виде pdf (добрые люди все в один файл собрали) Если необходимо, могу подкинуть еще ссылок. PS Есть еще очень хороший сайт http://eudyptula-challenge.org/ Который высылает вам задание на почту по программированию в ядре, сложность нарастающая, начиная с hello world, заканчивая патчами в РЕАЛЬНОЕ ядро. Многие после прохождения всех заданий, реально получают работу как kernel developer\kernel hacker.
1
|
|
| 24.12.2014, 06:35 | |
|
Помогаю со студенческими работами здесь
11
Сплайсинг в ядре Уязвимости в ядре Linux Вопрос о ядре посетителей и тд... Распаралеливание на графическом ядре TUSB3210 на ядре 8052 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|