> Ниже приводится выдержка из оптимизации инициализации ядра макросов, последовательности инициализации, в инициализации, 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