| |
<sys/kernel.h>
SYSINIT(uniquifier, subsystem, order, func, ident) SYSUNINIT(uniquifier, subsystem, order, func, ident)
Макрос SYSINIT() создает необходимые данные sysinit в начальном наборе данных Sysinit для того, чтобы Sysinit сортировал и диспетчеризировал функцию при запуске системы и загрузке модуля. SYSINIT() принимает уникальный идентификатор, который используется в Sysinit для идентификации данных диспетчеризации конкретной функции, порядковый номер подсистемы, порядковый номер элемента подсистемы, вызываемую функцию и данные для передачи в функцию. Все функции должны принимать в качестве параметра статический указатель.
Например:
#include <sys/kernel.h> void foo_null(void *unused) { foo_doo(); } SYSINIT(foo_null, SI_SUB_FOO, SI_ORDER_FOO, NULL); struct foo foo_voodoo = { FOO_VOODOO; } void foo_arg(void *vdata) { struct foo *foo = (struct foo *)vdata; foo_data(foo); } SYSINIT(foo_arg, SI_SUB_FOO, SI_ORDER_FOO, foo_voodoo);
Макрос SYSUNINIT() ведет себя похоже на макрос SYSINIT(), за исключением того, что он добавляет данные Sysinit к набору данных закрытия Sysinit.
Например:
#include <sys/kernel.h> void foo_cleanup(void *unused) { foo_kill(); } SYSUNINIT(foo_cleanup, SI_SUB_FOO, SI_ORDER_FOO, NULL); struct foo_stack foo_stack = { FOO_STACK_VOODOO; } void foo_flush(void *vdata) { } SYSUNINIT(foo_flush, SI_SUB_FOO, SI_ORDER_FOO, foo_stack);
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |