struct _thread_runmask

Структура, характеризующая маску процессоров, на которых разрешено исполнение потока

Прототип:

#include <sys/neutrino.h>
/*
* Where 'size' must be the precise value required
* to define the number of cpus currently on the
* system: eg. RMSK_SIZE(_syspage_ptr->num_cpu).
*/
struct _thread_runmask {
int size;
/* unsigned runmask[size]; */
/* unsigned inherit_mask[size]; */
};
#define RMSK_SIZE( num_cpu ) (((num_cpu) - 1) / __INT_BITS__ + 1)
#define RMSK_SET( cpu, p ) ((p)[(cpu) / __INT_BITS__] |= \
(1U << ((cpu) % __INT_BITS__)))
#define RMSK_CLR( cpu, p ) ((p)[(cpu) / __INT_BITS__] &= \
~(1U << ((cpu) % __INT_BITS__)))
#define RMSK_ISSET( cpu, p ) ((p)[(cpu) / __INT_BITS__] & \
(1U << ((cpu) % __INT_BITS__)))

Описание:

Тип позволяет модифицировать маску процессоров, на которых разрешено исполнение потока. Используется в сочетании с вызовом ThreadCtl*( _NTO_TCTL_RUNMASK_GET_AND_SET_INHERIT, data ). Структура регламентирует заполнение следующих полей:

size
Размер маски. См. описание макроса RMSK_SIZE( num_cpu ) ниже.
runmask
Маска процессоров, используемая для текущего потока.
inherit_mask
Наследуемая маска процессоров, используемая для потомков текущего потока.

Однако размер масок (и, следовательно, размер структуры) зависит от количества процессоров в системе. Для большего удобства работы со структурой определены следующие макросы:

RMSK_SIZE( num_cpu )
Определить размер масок. Количество процессоров в системе можно узнать при помощи _syspage_ptr->num_cpu.
RMSK_SET( cpu, p )
Установить бит для cpu (параметр cpu отсчитывается от нуля) в маске p.
RMSK_CLR( cpu, p )
Сбросить бит для cpu (параметр cpu отсчитывается от нуля) в маске p.
RMSK_ISSET( cpu, p )
Получить значение бита cpu в маске p.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

_syspage_ptr, ThreadCtl(), ThreadCtl_r()




Предыдущий раздел: Описание API системной библиотеки