Специфікація BTRON3 (Український переклад) | Розділ 5: Ядро операційної системи (Kernel)
Повернутися до змісту розділу Ядра
Попередня сторінка: 1.9 Системний годинник та таймери (Повернутися)
Наступна сторінка: Розділ 2. Графічні примітиви (Перейти)

1.10 Системне управління (System Management)

1.10.1 Загальний огляд

Підсистема системного управління забезпечує функціональність для перехоплення та обробки апаратних і програмних виняткових ситуацій (Exceptions), зчитування системних метрик ядра, ідентифікації версії ОС та конфігурування системних параметрів середовища BTRON.

Головні функції підсистеми:

1.10.2 Структури даних та константи

□ Структура інформації про версію ОС (T_VER)

typedef struct {
    UH  maker;      /* Код виробника/розробника (Maker Code) */
    UH  id;         /* Ідентифікатор моделі / апаратної платформи */
    UH  spver;      /* Версія специфікації BTRON (наприклад, 0x0300 для BTRON3) */
    UH  prver;      /* Версія комерційного випуску ОС (Product Version) */
    UH  prno[4];    /* Унікальний серійний номер продукту */
    UH  cpu;        /* Код архітектури процесора (CPU Family) */
    UH  var;        /* Варіативний дескриптор конфігурації */
} T_VER;
cpu (Архітектура процесора):
Значення коду процесора у полі cpu:
    0x0100 : Сімейство TRONCHIP (TRONCHIP32 / TRONCHIP64)
    0x0140 : Сімейство Motorola 68000 (68020 / 68030 / 68040)
    0x0160 : Сімейство x86 (80386 / 80486 / Pentium)
    0x0170 : Сімейство RISC (MIPS / SPARC / ARM / RISC-V)

□ Ідентифікатори виняткових ситуацій (Exception Kinds)

Типи виняткових ситуацій для параметра exckind:

#define EXC_ZERO_DIV    ( 1)    /* Ділення на нуль (Divide by Zero) */
#define EXC_ILL_INST    ( 2)    /* Неприпустима інструкція процесора (Illegal Instruction) */
#define EXC_BUS_ERR     ( 3)    /* Помилка шини / некоректне вирівнювання (Bus Error / Alignment) */
#define EXC_PAGE_FLT    ( 4)    /* Сторінковий збій пам'яті (Page Fault / Protection Violation) */
#define EXC_FPU_ERR     ( 5)    /* Помилка математичного співпроцесора (FPU Exception) */
#define EXC_PRIV_VIOL   ( 6)    /* Порушення рівнів привілеїв (Privilege Violation) */
#define EXC_BREAKPOINT  ( 7)    /* Програмне переривання / точка зупинки (Breakpoint / Trap) */

□ Імена системних параметрів конфігурації (Configuration Names)

Зарезервовані назви системних параметрів для викликів get_cnf() та set_cnf():

Назва параметраТип значенняОпис параметра
"SYS_NTASK"Числовий (W)Максимальна кількість задач у системі
"SYS_NPROC"Числовий (W)Максимальна кількість активних процесів
"SYS_MEMSIZE"Числовий (W)Повний обсяг доступної оперативної пам'яті (в байтах)
"SYS_PAGESIZE"Числовий (W)Розмір сторінки віртуальної пам'яті (наприклад, 4096)
"SYS_BOOTDEV"Символьний (TC*)Ідентифікатор завантажувального пристрою
"SYS_HOSTNAME"Символьний (TC*)Мережеве ім'я системного вузла (Hostname)
"SYS_OSNAME"Символьний (TC*)Повна назва та версія операційної системи

1.10.3 Системні виклики

def_exc
Define Exception Handler
Реєстрація обробника виняткових ситуацій (Define Exception Handler)

【Синтаксис / Прототип】

ERR def_exc(W exckind, FP exchdr)

【Параметри】

W   exckind Тип винятку (EXC_ZERO_DIV..EXC_BREAKPOINT або апаратний вектор)
FP  exchdr  Адреса процедури обробника (при exchdr = NULL реєстрація скасовується)

【Значення, що повертається】

= 0     Успішне виконання (E_OK)
< 0     Помилка (Код помилки)

【Детальний опис】

Реєструє користувацьку функцію обробника exchdr для виняткової ситуації типу exckind у контексті поточної задачі. При виникненні вказаного винятку звичайна послідовність виконання призупиняється і управління передається обробнику.

【Коди помилок】

ER_ADR : Неприпустима адреса вказівника exchdr у пам'яті.
ER_PAR : Неприпустиме значення типу винятку exckind.
ret_exc
Return from Exception Handler
Завершення обробки винятку (Return from Exception Handler)

【Синтаксис / Прототип】

VOID ret_exc(W ret)

【Параметри】

W   ret     Режим повернення:
              = 0 : Відновити виконання з місця виникнення винятку
             != 0 : Підготовка до нелокального переходу (longjmp)

【Значення, що повертається】

Не повертає управління (при ret = 0)
= 0     Успішне виконання (при ret != 0 перед викликом longjmp)

【Детальний опис】

Системний виклик для завершення процедури обробника винятку. Якщо ret = 0, ядро відновлює збережені регістри процесора і продовжує виконання інструкції, на якій виник виняток.

【Коди помилок】

Помилок немає.

get_ver
Get OS Version
Отримання версії ОС та апаратної платформи (Get OS Version)

【Синтаксис / Прототип】

ERR get_ver(T_VER *version)

【Параметри】

T_VER *version  Вказівник на буфер для збереження структури T_VER

【Значення, що повертається】

= 0     Успішне виконання (E_OK)
< 0     Помилка (Код помилки)

【Детальний опис】

Заповнює структуру T_VER інформацією про версію ядра BTRON, код виробника, версію специфікації та тип архітектури процесора.

【Коди помилок】

ER_ADR : Неприпустима адреса вказівника version у віртуальній пам'яті.
get_cnf
Get System Configuration Information
Отримання параметра конфігурації системи (Get Configuration Parameter)

【Синтаксис / Прототип】

WERR get_cnf(TC *name, VP value, W len)

【Параметри】

TC  *name   Символьний рядок із назвою параметра конфігурації
VP   value  Буфер для збереження значення параметра
W    len    Розмір буфера value у байтах

【Значення, що повертається】

= 0     Успішне виконання (числове значення типу W записано в *value)
> 0     Успішне виконання (довжина отриманого текстового рядка у символах)
< 0     Помилка (Код помилки)

【Детальний опис】

Зчитує системний параметр конфігурації за його ідентифікуючою назвою name. Якщо параметр має числовий тип, значення записується у value і повертається 0. Якщо параметр є символьним рядком, він копіюється в буфер value і повертається довжина рядка.

【Коди помилок】

ER_ADR   : Неприпустима адреса вказівника name або value у пам'яті.
ER_NOEXS : Запитаний параметр конфігурації з такою назвою відсутній у системі.
ER_PAR   : Занадто малий розмір буфера len для збереження значення параметра.
set_cnf
Set System Configuration Information
Встановлення параметра конфігурації системи (Set Configuration Parameter)

【Синтаксис / Прототип】

ERR set_cnf(TC *name, VP value, W len)

【Параметри】

TC  *name   Символьний рядок із назвою параметра конфігурації
VP   value  Вказівник на нове значення параметра
W    len    Розмір значення у байтах

【Значення, що повертається】

= 0     Успішне виконання (E_OK)
< 0     Помилка (Код помилки)

【Детальний опис】

Змінює значення системного параметра конфігурації з назвою name. Для виконання цього виклику процес повинен мати системні привілеї адміністратора.

【Коди помилок】

ER_ADR   : Неприпустима адреса вказівника name або value у пам'яті.
ER_OVRW  : Параметр конфігурації захищений від запису.
ER_PERM  : Процес не має достатніх привілеїв для зміни параметрів системи.

Повернутися до змісту розділу Ядра
Попередня сторінка: 1.9 Системний годинник (Повернутися)
Наступна сторінка: Розділ 2. Графічні примітиви (Перейти)