SyncCtl(), SyncCtl_r()

Выполнить операцию над объектом синхронизации


Caution: Не используйте системные вызовы SyncCtl() и SyncCtl_r() явно; вместо этого следует использовать функции:

Прототип:

#include <sys/neutrino.h>
int SyncCtl( int cmd,
sync_t *sync,
void *data );
int SyncCtl_r( int cmd,
sync_t *sync,
void *data );

Аргументы:

cmd
Тип операции:
_NTO_SCTL_GETPRIOCEILING
Получение предельный приоритет (PCP, Priority Ceiling Protocol) мьютекса sync и запись значения в data.
_NTO_SCTL_SETPRIOCEILING
Установка предельного приоритета (PCP, Priority Ceiling Protocol) мьютекса sync в значение data. Возвращает предыдущий предельный приоритет.
_NTO_SCTL_SETEVENT
Присоединение события, на которое указывает аргумент data, к мьютексу sync. Данное событие будет доставляться при обнаружении факта перехода мьютекса в состояние DEAD (мьютекс заблокирован уничтоженным потоком).
_NTO_SCTL_MUTEX_WAKEUP
Принудительное разблокирование потока, ожидающего на мьютексе sync. Аргумент data должен указывать на структуру, содержащую идентификаторы целевого потока и процесса:
struct ptid {
pid_t pid;
pthread_t tid;
}
sync
Указатель на объект синхронизации sync_t.
data
Указатель на данные, ассоциированные с заданной операцией, либо переменная для хранения запрошенной информации.

Библиотека:

libc

Описание:

Системные вызовы SyncCtl() и SyncCtl_r() позволяют:

Эти функции эквивалентны, за исключением способа информирования об ошибках.

Возвращаемое значение:

SyncCtl()
Если возникла ошибка функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
SyncCtl_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

EAGAIN
Все объекты синхронизации ядра в настоящий момент используются.
EFAULT
Возникла ошибка при обращении ядра к sync или data.
EINVAL
Объект синхронизации sync не существует или предельный приоритет data мьютекса вне допустимого диапазона.
ENOSYS
Функции SyncCtl() и SyncCtl_r() не поддерживаются.

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

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

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

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

sync_t, pthread_mutex_getprioceiling(), pthread_mutex_setprioceiling(), pthread_mutex_wakeup_np(), SyncCondvarSignal(), SyncCondvarWait(), SyncDestroy(), SyncMutexEvent(), SyncMutexLock(), SyncMutexRevive(), SyncMutexUnlock(), SyncTypeCreate()




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