[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Примеры исполнения в режиме разделения времени
На следующей странице приведены следующие примеры исполнения в режиме
разделения времени:
. Пример 1 - получить идентификатор класса разделения времени и его
атрибуты
Полю pc_clname структуры pcinfo_t присваивается значение "TS".
priocntl(2) вызывается, чтобы получить идентификатор и атрибуты
класса разделения времени. priocntl(2) возвращает число классов,
сконфигурированных в системе.
. Пример 2 - получить информацию о классе разделения времени
Пример 1 заполняет структуру info информацией о классе разделения
времени. Доступ к полю pc_clinfo осуществляется с использованием
формата tsinfo_t. Максимальный приоритет для процессов разделения
времени присваивается переменной max и распечатывается.
. Пример 3 - получить параметры планирования
Идентификатор класса, полученный в примере 1, присваивается полю
pc_cid структуры parms. priocntl(2) вызывается, чтобы получить
параметры планирования для процессов, принадлежащих классу с таким
идентификатором.
. Пример 4 - установить параметры планирования
Полю pc_clparms присваиваются подходящие значения параметров
планирования. pc_cid по-прежнему содержит идентификатор класса
разделения времени, присвоенный в примере 3. ts_upri присваивается
значение отрицательного максимума приоритета разделения времени,
полученное в примере 2. Это будет нижний приоритет процесса.
Ограничение пользовательского приоритета процесса не изменяется.
Параметры планирования с помощью priocntl(2) и команды PC_SETPARMS
изменяются для всех процессов разделения времени в группе
вызывающего процесса.
ПРИМЕРЫ ИСПОЛНЕНИЯ В РЕЖИМЕ РАЗДЕЛЕНИЯ ВРЕМЕНИ
. Объявление
#include <sys/types.h>
#include <sys/priocntl.h>
#include <sys/tspriocntl.h>
pcinfo_t info;
pcparms_t parms;
long nclasses;
short max;
. Получение идентификатора класса разделения времени и его
атрибутов
strcpy(info.pc_clname, "TS");
nclasses = priocntl(0, 0, PC_GETCID, &info);
. Доступ к информации о классе разделения времени
max = ((tsinfo_t *)info.pc_clinfo)->ts_maxupri;
printf("%hd\n", max);
. Получение параметров планирования
parms.pc_cid = info.pc_cid;
priocntl(P_PID, P_MYID, PC_GETPARMS, &parms);
. Установка параметров планирования разделения времени
((tsparms_t *)parms.pc_clparms)->ts_upri = -max;
((tsparms_t *)parms.pc_clparms)->ts_uprilim = TS_NOCHANGE;
priocntl(P_PGID, P_MYID, PC_SETPARMS, &parms);