Linux Miscellany разработки драйверов (0x01) - ядро некоторых маркеров, таких как Acer __init

> Ниже приводится выдержка из оптимизации инициализации ядра макросов, последовательности инициализации, в инициализации, devexit и т.д. , только сохранить свои заметки.

Большое количество функций ядра и структуры данных , используемые для обозначения различных макросов имеют различные эффекты. Такие , как макросы в инициализации, devinit и так далее. Эти макросы определены в включают / Linux / файл init.h заголовка. Эти макросы компилятор может оптимизировать код в соответствующую ячейку памяти , чтобы уменьшить объем памяти и повысить эффективность ядра.

Вот некоторые часто используемые макросы:

__в этом

Инициализация кода в ядре флага перезагрузки, ядро ​​после запуска будет завершена уже не требуется. Этот маркер находится .init.text области кода памяти.

__Выход

Марк код выхода не действительна для Немодульного.

__initdata

не Инициализировать структуры данных, используемые в ядре запуска маркеров, больше не требуется после завершения основного промотора. Этот маркер находится .init.data области коды памяти.

__devinit

Инициализация кода маркировки устройств, используемых.

__devinitdat в

Маркировка структуры данных функции инициализации устройства.

__devexit

Метка устройства с использованием кода удаления.

xxx_initcall

Серия кода инициализации, в приоритетном порядке убывания.

Код инициализации функции является: начать работать в системе, и после запуска немедленно вывести из памяти, не занимает память.

Для модулей драйверов, эти случаи флаги оптимизации являются следующие:

  • По module_init () и вызов функции module_exit () к функции , которую нужно использовать инициализации и выхода макросов отметить.
  • Структура данных pci_driver без маркировки.
  • Зонд () и удалить () функция должна быть использована devinit и devexit цифры, и только меченый зонд () и удалить ()
  • Если удалить () с использованием devexit знака, то конфигурация использование pci_driver devexit_p (удаление) , чтобы удалить ссылки () функция.
  • Если вы не знаете, или нужно добавить макросы не добавлять оптимизации.

: Оригинал Big Box  Miscellany разработки драйверов Linux (0x01) - ядро некоторых маркеров , таких как Acer __init


рекомендация

отwww.cnblogs.com/petewell/p/11615213.html