next up previous
Next: Вспомогательные Функции RSBAC Up: Регистрация Системных Вызовов Previous: Функции Обратного Вызова

Функции Регистрации.

Теперь, для регистрации syscall, вы выбираете положительное, 32-х Битное целое со знаком число, как ваш персональный дескриптор и другое, подписанное 32-х Битное со знаком значение, как ваш публичный дескриптор syscall-диспетчера. Все действия, связанные с регистрацией, позднее будут нуждаться в этом уникальном секретном дескрипторе. Если случится так, что ваш дескриптор в данный момент используется, то вам будет отказано в регистрации со значением ошибки - RSBAC_EEXIST.

struct rsbac_reg_syscall_entry хранит в себе все необходимые значения. Может быть не учтено только имя. Ваш системный вызов позже будет идентифицирован в сообщениях REG и proc-файлах по их имени и дескриптору публичного диспетчера. Текущая максимальная длина имени ограничена 30 знаками.

struct rsbac_reg_syscall_entry_t 

  { 

    rsbac_reg_handle_t              registration_handle; 

    rsbac_reg_handle_t              dispatcher_handle; 

    char                            name[RSBAC_REG_NAME_LEN+1]; 

    rsbac_reg_syscall_func_t      * syscall_func; 

  };

Заданная этой struct регистрация похожа на регистрацию модулем принятия решения. Выгрузка модуля с зарегистрированным syscall без де-регистрации убьет вашу системы при следующем обращении к syscall-функции!

Заново добавленное во вхождение struct является значением версии REG, что позволит производить проверку версии для модулей полученных в бинарном виде. Оно всегда должно быть установлено в RSBAC_REG_VERSION. Функция регистрации возвратит ваш положительный дескриптор или отрицательный код ошибки (для дополнительной информации смотри include/rsbac/reg.h)

rsbac_reg_handle_t rsbac_reg_register_syscall 

  (       rsbac_version_t           version, 

   struct rsbac_reg_syscall_entry_t entry);

Однажды зарегистрировав, вы сможете использовать ваши системные вызовы. Де-регистрация теперь проста.

int rsbac_reg_unregister_syscall 

  (rsbac_reg_handle_t registration_handle);

Очередной намек на примеры модулей.


next up previous
Next: Вспомогательные Функции RSBAC Up: Регистрация Системных Вызовов Previous: Функции Обратного Вызова