[<<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*/