[<<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);