Структура, описывающая callout ядра
#include <sys/startup.h>
struct callout_rtn {
unsigned *rw_size;
void (*patcher)( paddr32_t paddr,
uintptr_t vaddr,
unsigned rtn_offset,
unsigned rw_offset,
void *data,
const struct callout_rtn *src );
unsigned rtn_size;
uint8_t rtn_code[1];
};
libstartup
Структура содержит следующие поля:
- rw_size
- Размер перезаписываемой области.
- patcher
- Эта функция вызывается немедленно после копирования callout-а в конечное местоположение. Ее параметры интерпретируются следующим образом:
- paddr
- Физический адрес начала системной страницы.
- vaddr
- Виртуальный адрес системной страницы, который используется для чтения/записи (доступен только ядру).
- rtn_offset
- Смещение начала кода callout-а относительно начала системной страницы.
- rw_offset
- См. Выделение памяти для чтения/записи данных.
- data
- Указатель на произвольные данные, которые зарегистрированы функцией callout_register_data().
- src
- Указатель на структуру
callout_rtn
, которая копируется в целевое местоположение.
- rtn_size
- Размер callout-а.
- rtn_code
- Идентификатор callout-а.
ЗОСРВ «Нейтрино», startup
Построение встраиваемых систем
Предыдущий раздел: перейти