SyncTypeCreate(), SyncTypeCreate_r()

Создать объект синхронизации


Note: Не используйте системные вызовы SyncTypeCreate() и SyncTypeCreate_r() явно; вместо этого следует использовать POSIX-функции:

Прототип:

#include <sys/neutrino.h>
int SyncTypeCreate( unsigned type,
sync_t *sync,
const struct sync_attr_t *attr );
int SyncTypeCreate_r( unsigned type,
sync_t *sync,
const struct sync_attr_t *attr );

Аргументы:

type
Тип создаваемого объекта синхронизации:
_NTO_SYNC_MUTEX_FREE
Создается мьютекс.
_NTO_SYNC_SEM
Создается семафор.
_NTO_SYNC_COND
Создается условная переменная.
sync
Указатель на объект синхронизации sync_t, который будет проинициализирован ядром в соответствии с type.
attr
Указатель на структуру sync_attr_t, определяющую атрибуты объекта синхронизации. Если attr равен NULL используются стандартные атрибуты (PTHREAD_PRIO_INHERIT).

Библиотека:

libc

Описание:

Системные вызовы SyncTypeCreate() и SyncTypeCreate_r() создают объект синхронизации ядра ОСРВ и инициализируют структуру sync для использования в других системных вызовах. Объект синхронизации является локальным в пределах процесса.

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


Caution: Выделять память для объектов синхронизации следует с обычными параметрами маппирования. В некоторых системах (например, на некоторых архитектурах PowerPC) атомарные операции, такие как pthread_mutex_lock(), могут приводить к ошибкам в системных структурах если выделенная память будет не кэшируемой.

Объект синхронизации может быть уничтожен с помощью системного вызова SyncDestroy().

Состояния блокировки:

Данные вызовы не являются блокирующими.

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

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

Коды ошибок:

EAGAIN
Все объекты синхронизации ядра уже используются.
EFAULT
Возникла ошибка при доступе ядра к объекту sync или attr.
EINVAL

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

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

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

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

sync_attr_t, sync_t, pthread_cond_init(), pthread_mutex_init(), pthread_rwlock_init(), sem_init(), SyncCondvarSignal(), SyncCondvarWait(), SyncDestroy(), SyncMutexLock(), SyncMutexUnlock()




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