Я создаю модуль ядра linux, и мне было интересно, есть ли способ динамически генерировать файлы proc и использовать их разумным способом.Динамически генерировать файлы proc?
У меня нет проблем с созданием структуры с list_head
и оттуда, но моя конечная проблема заключается в том, что я хочу, чтобы одна и та же функция выполнялась с разными переменными. А именно, я просто хочу иметь write_proc
, который заканчивает запись в другой буфер в памяти ядра для каждого файла (и read_proc
, который читает из того же самого).
Причина, почему я с трудом с этим является то, что функция protoypes для чтения/записи из Proc файлов, кажется, не позволяют это поведение:
int read_proc(char *buf, char **start, off_t offset, int count,
int *eof, void *data) {
int write_proc(struct file *file, const char *buf,
unsigned long count, void *data) {
Теперь я могу статически создать кучу и просто убедитесь, что я выделяю достаточно, но мне интересно, есть ли более элегантное решение.
Вот пример того, как я хотел бы, чтобы она выглядела в пространстве пользователя (у меня нет кода MWE, так как я понятия не имею, где даже начать):
$ echo "file1" > /proc/mydir/create
$ echo "file2" > /proc/mydir/create
$ ls /proc/mydir
create file1 file2
$ echo "1" > /proc/mydir/file1
$ echo "5" > /proc/mydir/file2
$ cat /proc/mydir/file*
1
5
ли я просто ушел выключить глубокий конец?
Я ищу вполне родовую совместимость (2.6.33+)
Я рекомендую посмотреть реализацию/proc через предоставленную мной ссылку. Это очень просто и довольно информативно. На самом деле, это проще читать и использовать, а не пытаться найти информацию из неполной документации или устаревших сообщений в блогах. – Shahbaz
Большое спасибо, извините за задержку в принятии ответа, у меня не было много времени, чтобы поиграть с этим в последнее время. По какой-то причине вещь «данные» полностью сошла с ума, хотя она смотрела мне в лицо! Еще раз спасибо за все детали и ссылки! – zje