[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Команды, использующие аргумент pcparms_t
Следующие команды - это символьные константы, описанные в файле
<sys/priocntl.h>:
PC_SETPARMS - эта команда используется, чтобы установить класс и
параметры планирования этого класса для заданного процесса или
процессов. Аргумент arg указывает на структуру типа pcparms_t. Поле
pc_cid задает идентификатор класса, а pc_clparms содержит параметры
класса. Формат параметров, содержащихся в поле pc_clparms, описывается
в <sys/rtpriocntl.h> для класса реального времени и в
<sys/tspriocntl.h> для класса разделяемого времени.
При установке параметров для набора процессов, priocntl(2) берет
процессы из набора в порядке, определяемом реализацией. Если при
обработке одного из процессов произошла ошибка, исполнение может
прекратиться или не прекратиться в зависимости от ошибки. Если ошибка
относится к правам доступа, то priocntl(2) продолжает обработку
процессов из набора, переустанавливая параметры для всех
обрабатываемых процессов, для которых вызывающий процесс имеет
соответствующие права доступа. Потом priocntl(2) возвращает -1 и
устанавливает errno равной EPERM. Если возникла другая ошибка,
priocntl(2) прекращает обработку процессов и немедленно завершается.
PC_GETPARMS - эта команда используется, чтобы получить класс и/или
параметры планирования этого класса для заданного процесса или
процессов. Аргумент arg указывает на структуру типа pcparms_t.
Если pc_cid задает сконфигурированный класс и обрабатывается один
процесс, заданный с помощью id и idtype, то параметры планирования для
этого процесса отгружаются в поле pc_clparms. Иначе возвращается -1 и
устанавливается errno.
Если pc_cid задает сконфигурированный класс и обрабатывается набор
процессов, тогда параметры планирования для одного из заданных
процессов отгружаются в поле pc_clparms и priocntl(2) возвращает
идентификатор выбранного процесса. Критерий для выбора процесса
зависит от класса.
Если pc_cid равен PC_CLNULL и обрабатывается один процесс,
идентификатор класса заданного процесса отгружается в pc_cid, а его
параметры планирования отгружаются в поле pc_clparms.
Структура rtparms_t, приведенная на следующей странице, определяет
формат поля pc_clparms, содержащего параметры планирования, для
процесса реального времени. Команды PC_SETPARMS и PC_GETPARMS могут
быть использованы для установки приоритета реального времени в rt_pri
или получения приоритета реального времени, соответственно. Установка
приоритета процесса, который в данный момент исполняется или готов к
исполнению (не спит), вынуждает процесс становиться в конец очереди
планирования для нового приоритета. Процесс ставится в конец
соответствующей очереди, независимо от того, отличается ли новый
приоритет от старого. Чтобы изменить временной квант без изменения
приоритета или места процесса в очереди, поле rt_pri должно быть равно
RT_NOCHANGE. Если задать RT_NOCHANGE при изменении класса процесса, от
класса реального времени на какой либо другой класс, то приоритет
процесса будет установлен равным нулю.
(Продолжение на странице 7-32)
КОМАНДЫ, ИСПОЛЬЗУЮЩИЕ АРГУМЕНТ pcparms_t
cmd значение arg (адрес)
PC_SETPARMS установить параметры планирования pcparms_t
PC_GETPARMS получить параметры планирования pcparms_t
typedef struct {
id_t pc_cid; /*Class id*/
long pc_clparms[PC_CLPARMSZ]; /*Class parameters*/
} pcparms_t;
формат pc_clparms для класса реального времени:
typedef struct {
short rt_pri; /*Real-Time priority,RT_NOCHANGE*/
ulong rt_tqsecs; /*Seconds in time quantum*/
long rt_tqnsecs;/*Nanoseconds in time quantum*/
} rtparms_t; /*RT_TQINF,RT_TQDEF,RT_NOCHANGE*/