Драйвер устройства PCI, экспортирующий информацию в файловую систему / proc - PullRequest
1 голос
/ 22 апреля 2011

Мне задали этот вопрос в интервью.Вы пишете драйвер PCI и хотите экспортировать информацию об оборудовании в файловую систему / proc.Интересно, что я искал код драйвера и не смог найти ни одного вызова, связанного с файловой системой / proc, хотя на самом деле информация экспортируется.Это делается автоматически?Какой механизм?Кто-нибудь может объяснить, пожалуйста?

Ответы [ 2 ]

4 голосов
/ 22 апреля 2011

Создание записей в псевдофайловой системе / proc описано в Драйверы устройств Linux [3-е издание] , глава 4.

В настоящее время вы, вероятно, захотите использовать вместо этого sysfs;это описано в главе 14 LDD3.

3 голосов
/ 22 апреля 2011

Один из способов сделать это для вашего водителя:

  • реализовать функцию, которая будет вызываться всякий раз, когда процесс читает соответствующую запись / proc со следующей подписью:

    int (* read_proc) (char * page, char ** start, off_t offset, int int, int * eof, void * data);

  • зарегистрируйте вашу функцию, передав ее указатель на create_proc_read_entry(), который принимает имя записи / proc в виде строки среди прочего:

    create_proc_read_entry ("foobar", 0, NULL, your_read_func_ptr, NULL);

Когда ваш драйвер выгружается, он должен удалить запись с remove_proc_entry()

...