Как читать файлы конфигурации в драйвере устройства Linux? Эксперты говорят, что чтение и запись файла в пространстве ядра является плохой практикой. Для загрузки прошивки у нас есть API ядра request_firmware. Есть ли API ядра linux для чтения и анализа файлов конфигурации для драйверов? Например: скорость чтения и путь к файлу прошивки для конкретного драйвера.Чтение файлов конфигурации в драйвере устройства Linux
2
A
ответ
2
В большинстве случаев выполнение операций с файловым ядром из пространства ядра обескуражено, но если вы все еще хотите, чтобы читать файлы из пространства ядра, ядро обеспечивает хороший интерфейс для открытия и чтения файлов из ядра. Вот пример модуля.
/*
* read_file.c - A Module to read a file from Kernel Space
*/
#include <linux/module.h>
#include <linux/fs.h>
#define PATH "/home/knare/test.c"
int mod_init(void)
{
struct file *fp;
char buf[512];
int offset = 0;
int ret, i;
/*open the file in read mode*/
fp = filp_open(PATH, O_RDONLY, 0);
if (IS_ERR(fp)) {
printk("Cannot open the file %ld\n", PTR_ERR(fp));
return -1;
}
printk("Opened the file successfully\n");
/*Read the data to the end of the file*/
while (1) {
ret = kernel_read(fp, offset, buf, 512);
if (ret > 0) {
for (i = 0; i < ret; i++)
printk("%c", buf[i]);
offset += ret;
} else
break;
}
filp_close(fp, NULL);
return 0;
}
void mod_exit(void)
{
}
module_init(mod_init);
module_exit(mod_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Knare Technologies (www.knare.org)");
MODULE_DESCRIPTION("Module to read a file from kernel space");
Я протестировал этот модуль на ядре linux-3.2. Я использовал функцию printk() для печати данных, но это не ваш фактический случай, это просто показано в качестве примера.
Смежные вопросы
- 1. Статические функции в драйвере устройства Linux?
- 2. аргументы функции register_chrdev в драйвере устройства Linux
- 3. о функции записи в драйвере Linux устройства
- 4. чтение файлов конфигурации
- 5. Linux, чтение ленточного устройства
- 6. Реализация асинхронной поддержки чтения/записи в драйвере устройства linux
- 7. Spinlock в драйвере устройства
- 8. Многократное чтение одной записи вызывает тупик в драйвере символов Linux?
- 9. Библиотеки файлов конфигурации Linux
- 10. Регистрация доступа к уровню в драйвере устройства Linux
- 11. Какова важность использования GPL lincense в драйвере Linux-устройства
- 12. Обработка прерываний в драйвере устройства
- 13. Чтение устройства в GNU/Linux или FreeBSD
- 14. чтение управляющего файла конфигурации с сетевого устройства
- 15. Интерфейсы в драйвере символов linux
- 16. Пытаясь понять простую Open() в драйвере Linux
- 17. Чтение конфигурации xml-файлов в C++
- 18. чтение и запись регистра драйвера устройства Linux
- 19. Динамическое обновление файлов конфигурации в Linux
- 20. Критическое время в драйвере ядра ARM Linux
- 21. Использование select()/poll() в драйвере устройства
- 22. Стратегия буферизации драйвера устройства Linux
- 23. Чтение конфигурации PRISM & Unity из нескольких файлов
- 24. Java/Gradle чтение внешних файлов конфигурации
- 25. iOS чтение файлов с внешнего устройства
- 26. Чтение файлов XMLConfiguration с использованием конфигурации apache2
- 27. Чтение аргументов командной строки ядра в драйвере
- 28. Linux, как определить расположение файлов конфигурации cron?
- 29. Изменения конфигурации конфигурации устройства SSRS игнорируются
- 30. Использование устройства linux в качестве конфигурации маршрутизации брандмауэра
Существует множество способов настройки таких устройств, как автоконфигурация, 'ioctl' или параметры модуля. Что именно вы хотите настроить? –
Я разрабатываю драйвер для взаимодействия с UART. Необходимо установить скорость передачи данных и местоположение файла прошивки в качестве настраиваемых параметров для модуля драйвера. Я хотел исследовать, был ли интерфейс ядра для этой цели. –