Создать объект синхронизации
Не используйте системные вызовы 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 );
NULL
используются стандартные атрибуты (PTHREAD_PRIO_INHERIT
).libc
Системные вызовы SyncTypeCreate() и SyncTypeCreate_r() создают объект синхронизации ядра ОСРВ и инициализируют структуру sync для использования в других системных вызовах. Объект синхронизации является локальным в пределах процесса.
Эти функции эквивалентны, за исключением способа информирования об ошибках.
Выделять память для объектов синхронизации следует с обычными параметрами мапирования. В некоторых системах (например, на некоторых архитектурах PowerPC) атомарные операции, такие как pthread_mutex_lock(), могут приводить к ошибкам в системных структурах если выделенная память будет не кэшируемой. |
Объект синхронизации может быть уничтожен с помощью системного вызова SyncDestroy().
Данные вызовы не являются блокирующими.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
PTHREAD_PRIO_INHERIT
или PTHREAD_PRIO_PROTECT
. PTHREAD_PRIO_PROTECT
— предельный приоритет (PCP, Priority Ceiling Protocol) мьютекса лежит вне допустимого диапазона приоритетов ядра. SEM_VALUE_MAX
. ЗОСРВ «Нейтрино»
sync_attr_t, sync_t, pthread_cond_init(), pthread_mutex_init(), pthread_rwlock_init(), sem_init(), SyncCondvarSignal(), SyncCondvarWait(), SyncDestroy(), SyncMutexLock(), SyncMutexUnlock()
Предыдущий раздел: Описание API системной библиотеки