2013-07-21 10 views
1

Теперь я изучаю файловую систему proc. Теперь я знаю, что функция read_proc_t вызывается, когда файл доказательств читается, и поэтому для функции write_proc_t при записи файла доказательств. Но я также нашел поле file_operaitons * в определении proc_dir_entry, и этот пример кода (http://linux.die.net/lkmpg/x810.html).read_proc_t и file_operations в procfs

Так что я смущен тем, что произойдет, если я предоставил обе реализации функции read_proc_t и функцию read в структуре file_operations? Что имеет приоритет над другим? Могла ли быть перезаписана другая? Огромное спасибо.

ответ

6

При регистрации proc-entry proc_register() проверяет, указали ли вы proc_fops. Если вы этого не сделаете, он установит файловые операции по умолчанию для procfs. Операции по умолчанию вызывают proc_read и proc_write. Итак, если вы указали proc_fops самостоятельно, proc_read и proc_write участников не будут вызываться.

В linux-3.10 таких вещей, как write_proc_t и read_proc_t. proc_dir_entry не имеет членов read_proc и write_proc. Вместо этого используется только proc_fops.

+0

Большое спасибо rasen! Не могли бы вы рассказать, где получить такую ​​информацию, например, из исходного кода, справочной страницы, других документов и т. Д. Потому что я искал в Интернете, но мне кажется, что мне мало полезной информации. Еще раз спасибо! – nrek

+0

Я только что прочитал исходный код. –