LINUX.ORG.RU

История изменений

Исправление metawishmaster, (текущая версия) :

упс, пардон муа, напутал вчера - не ioperm_set, а ioprio_set:

#include <sys/syscall.h>

//  кучка дефайнов, спертая, например, из "linux-4.2.7/include/linux/ioprio.h"
enum {
    IOPRIO_CLASS_NONE,
    IOPRIO_CLASS_RT,
    IOPRIO_CLASS_BE,
    IOPRIO_CLASS_IDLE,
};   
enum {
    IOPRIO_WHO_PROCESS = 1, 
    IOPRIO_WHO_PGRP,
    IOPRIO_WHO_USER,
};   
#define IOPRIO_CLASS_SHIFT (13)
#define IOPRIO_PRIO_MASK    ((1UL << IOPRIO_CLASS_SHIFT) - 1)
#define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
#define IOPRIO_PRIO_DATA(mask)  ((mask) & IOPRIO_PRIO_MASK)
#define IOPRIO_PRIO_VALUE(class, data)  (((class) << IOPRIO_CLASS_SHIFT) | data)

// и сам вызов (тут выдается текущему процессу максимальный IO приоритет)
err = syscall(SYS_ioprio_set, IOPRIO_WHO_PROCESS, 0, IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT,7));

но Вам лучше смотреть в сторону capabilities, там не все, но хотя бы часть желаемого Вами ограничить можно, да и то, это будет меньше, чем возможности функции от beastie

_или_ воспользоваться вариантом от mittorn

Исправление metawishmaster, :

упс, пардон муа, напутал вчера - не ioperm_set, а ioprio_set:

#include <sys/syscall.h>

//  кучка дефайнов, спертая, например, из "linux-4.2.7/include/linux/ioprio.h"
enum {
    IOPRIO_CLASS_NONE,
    IOPRIO_CLASS_RT,
    IOPRIO_CLASS_BE,
    IOPRIO_CLASS_IDLE,
};   
enum {
    IOPRIO_WHO_PROCESS = 1, 
    IOPRIO_WHO_PGRP,
    IOPRIO_WHO_USER,
};   
#define IOPRIO_CLASS_SHIFT (13)
#define IOPRIO_PRIO_MASK    ((1UL << IOPRIO_CLASS_SHIFT) - 1)
#define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
#define IOPRIO_PRIO_DATA(mask)  ((mask) & IOPRIO_PRIO_MASK)
#define IOPRIO_PRIO_VALUE(class, data)  (((class) << IOPRIO_CLASS_SHIFT) | data)

// и сам вызов (тут выдается текущему процессу максимальный IO приоритет)
err = syscall(SYS_ioprio_set, IOPRIO_WHO_PROCESS, 0, IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT,7));

но Вам лучше смотреть в сторону capabilities, там не все, но хотя бы часть желаемого Вами ограничить можно, да и то, это будет меньше, чем возможности функции от beastie
но _или_ воспользоваться вариантом от mittorn

Исходная версия metawishmaster, :

упс, пардон муа, напутал вчера - не ioperm_set, а ioprio_set:

#include <sys/syscall.h>

//  кучка дефайнов, спертая, например, из "linux-4.2.7/include/linux/ioprio.h"
enum {
    IOPRIO_CLASS_NONE,
    IOPRIO_CLASS_RT,
    IOPRIO_CLASS_BE,
    IOPRIO_CLASS_IDLE,
};   
enum {
    IOPRIO_WHO_PROCESS = 1, 
    IOPRIO_WHO_PGRP,
    IOPRIO_WHO_USER,
};   
#define IOPRIO_CLASS_SHIFT (13)
#define IOPRIO_PRIO_MASK    ((1UL << IOPRIO_CLASS_SHIFT) - 1)
#define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
#define IOPRIO_PRIO_DATA(mask)  ((mask) & IOPRIO_PRIO_MASK)
#define IOPRIO_PRIO_VALUE(class, data)  (((class) << IOPRIO_CLASS_SHIFT) | data)

// и сам вызов (тут выдается текущему процессу максимальный IO приоритет)
err = syscall(SYS_ioprio_set, IOPRIO_WHO_PROCESS, 0, IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT,7));

но Вам лучше смотреть в сторону capabilities, там не все, но хотя бы часть желаемого Вами ограничить можно, да и то, это будет меньше, чем возможности функции от beastie
но тут лучше будет воспользоваться вариантом от mittorn