Специфікація BTRON3 (Український переклад) | Розділ 5: Ядро операційної системи (Kernel)
Повернутися до змісту розділу Ядра
Попередня сторінка: 1.9 Системний годинник та таймери (Повернутися)
Наступна сторінка: Розділ 2. Графічні примітиви (Перейти)
Підсистема системного управління забезпечує функціональність для перехоплення та обробки апаратних і програмних виняткових ситуацій (Exceptions), зчитування системних метрик ядра, ідентифікації версії ОС та конфігурування системних параметрів середовища BTRON.
Головні функції підсистеми:
- Реєстрація та обробка винятків задач (Division by Zero, Page Fault, Illegal Instruction тощо).
- Отримання інформації про версію ядра, виробника та архітектуру центрального процесора.
- Зчитування та встановлення системних параметрів конфігурації (System Configuration Parameters).
□ Структура інформації про версію ОС (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*) | Повна назва та версія операційної системи |
| 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. Графічні примітиви (Перейти)