Ссылка IOLocks.h
Включенные заголовки
<sys/appleapiopts.h><IOKit/system.h><IOKit/IOReturn.h><IOKit/IOTypes.h><libkern/locks.h><machine/machine_routines.h>
-
Заблокируйте взаимное исключение.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IOLockLock(l) lck_mtx_lock(l) #else void IOLockLock( IOLock *lock); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте взаимное исключение. Если блокировка сохранена каким-либо потоком, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка взаимного исключения рекурсивно от одного потока приведет к мертвой блокировке.
См. также
-
Попытайтесь заблокировать взаимное исключение.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IOLockTryLock(l) lck_mtx_try_lock(l) #else boolean_t IOLockTryLock( IOLock *lock); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на выделенную блокировку.
Возвращаемое значение
Истина, если взаимное исключение было разблокировано и теперь заблокировано вызывающей стороной, иначе ложь.
Обсуждение
Заблокируйте взаимное исключение, если оно в настоящее время разблокировано, и возвратите true. Если блокировка сохранена каким-либо потоком, возвратите false.
См. также
-
Разблокируйте взаимное исключение.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IOLockUnlock(l) lck_mtx_unlock(l) #else void IOLockUnlock( IOLock *lock); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Разблокируйте взаимное исключение и разбудите любых блокированных официантов. Если вызывающая сторона не заблокировала взаимное исключение, результаты не определены. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или.
См. также
-
Заблокируйте блокировку чтения-записи для чтения.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IORWLockRead(l) lck_rw_lock_shared(l) #else void IORWLockRead( IORWLock *lock); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте блокировку для чтения, позволив многократным читателям, когда не будет никаких писателей. Если блокировка сохранена для записи, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка блокировки рекурсивно от одного потока, для чтения или записи, может привести к мертвой блокировке.
См. также
-
Разблокируйте блокировку чтения-записи.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IORWLockUnlock(l) lck_rw_done(l) #else void IORWLockUnlock( IORWLock *lock); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Отмените один вызов к IORWLockRead или IORWLockWrite. Если вызывающая сторона не заблокировала блокировку, результаты не определены. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или.
См. также
-
Заблокируйте блокировку чтения-записи для записи.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IORWLockWrite(l) lck_rw_lock_exclusive(l) #else void IORWLockWrite( IORWLock *lock); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте блокировку для записи, предоставив одному писателю exlusive доступ. Если блокировка сохранена для чтения или записи, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка блокировки рекурсивно от одного потока, для чтения или записи, может привести к мертвой блокировке.
См. также
-
Заблокируйте спин-блокировку.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IOSimpleLockLock(l) lck_spin_lock(l) #else void IOSimpleLockLock( IOSimpleLock *lock ); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на блокировку.
Обсуждение
Заблокируйте спин-блокировку. Если блокировка сохранена, вращение, ожидающее разблокировала. Спин-блокировки отключают вытеснение, не могут быть сохранены ни через какую работу блокирования и должны быть сохранены в течение очень коротких периодов. Когда используется синхронизироваться между контекстом прерывания и контекстом потока они должны быть заблокированы с отключенными прерываниями - IOSimpleLockLockDisableInterrupt () сделает обоих. Блокировка блокировки рекурсивно от одного потока приведет к мертвой блокировке.
См. также
-
Попытайтесь заблокировать спин-блокировку.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IOSimpleLockTryLock(l) lck_spin_try_lock(l) #else boolean_t IOSimpleLockTryLock( IOSimpleLock *lock ); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на блокировку.
Возвращаемое значение
Истина, если блокировка была разблокирована и теперь заблокирована вызывающей стороной, иначе ложь.
Обсуждение
Заблокируйте спин-блокировку, если она в настоящее время разблокирована, и возвратите true. Если блокировка сохранена, возвратите false. Успешные вызовы к IOSimpleLockTryLock должны быть сбалансированы с вызовов к IOSimpleLockUnlock.
См. также
-
Разблокируйте спин-блокировку.
Объявление
Objective C
#ifdef IOLOCKS_INLINE #define IOSimpleLockUnlock(l) lck_spin_unlock(l) #else void IOSimpleLockUnlock( IOSimpleLock *lock ); #endif /* !IOLOCKS_INLINE */Параметры
lockУказатель на блокировку.
Обсуждение
Разблокируйте блокировку и восстановите вытеснение. Если вызывающая сторона не заблокировала блокировку, результаты не определены.
См. также
-
Выделяет и инициализирует взаимное исключение.
Объявление
Objective C
IOLock * IOLockAlloc ( void );Возвращаемое значение
Указатель на выделенную блокировку или нуль при отказе.
Обсуждение
Выделяет взаимное исключение в универсальном ЗУ и инициализирует его. Взаимные исключения являются блокировками взаимного исключения блокирования общего назначения, предоставленными libkern/locks.h. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. IOLocks используют глобальную группу блокировки IOKit, IOLockGroup. Для упрощения отладки kext и анализа тепла блокировки рассмотрите использование блокировок lck_* с группой блокировки на драйвер, как определено в kern/locks.h.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Освобождает взаимное исключение.
Объявление
Objective C
void IOLockFree ( IOLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Освобождает блокировку, выделенную с IOLockAlloc. Взаимное исключение должно быть разблокировано без официантов.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Средство доступа к взаимному исключению Маха.
Объявление
Objective C
lck_mtx_t * IOLockGetMachLock ( IOLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Средство доступа к взаимному исключению Маха.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.4 и позже.
-
Заблокируйте взаимное исключение.
Объявление
Objective C
void IOLockLock ( IOLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте взаимное исключение. Если блокировка сохранена каким-либо потоком, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка взаимного исключения рекурсивно от одного потока приведет к мертвой блокировке.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IOLockLock -
Сон со взаимным исключением разблокировал и повторно блокирует
Объявление
Objective C
int IOLockSleep ( IOLock *lock, void *event, UInt32 interType );Параметры
lockУказатель на заблокированную блокировку.
eventСобытие для сна на.
interTypeКак может сон быть прерванным.
Возвращаемое значение
Значение ожидать-результата, указывающее, как был пробужден поток.
Обсуждение
Подготовьте спать, разблокировать взаимное исключение и повторно получать его на пробуждении. Если вызывающая сторона не заблокировала взаимное исключение, результаты не определены. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.2 и позже.
-
Попытайтесь заблокировать взаимное исключение.
Объявление
Objective C
boolean_t IOLockTryLock ( IOLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте взаимное исключение, если оно в настоящее время разблокировано, и возвратите true. Если блокировка сохранена каким-либо потоком, возвратите false.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IOLockTryLock -
Разблокируйте взаимное исключение.
Объявление
Objective C
void IOLockUnlock ( IOLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Разблокируйте взаимное исключение и разбудите любых блокированных официантов. Если вызывающая сторона не заблокировала взаимное исключение, результаты не определены. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IOLockUnlock -
Выделяет и инициализирует рекурсивную блокировку.
Объявление
Objective C
IORecursiveLock * IORecursiveLockAlloc ( void );Возвращаемое значение
Указатель на выделенную блокировку или нуль при отказе.
Обсуждение
Выделяет рекурсивную блокировку в универсальном ЗУ и инициализирует его. Рекурсивные блокировки функционируют тождественно к взаимным исключениям, но позволяют одному потоку блокировать несколько раз, со сбалансированным разблокировал. IORecursiveLocks используют глобальную группу блокировки IOKit, IOLockGroup. Для упрощения отладки kext и анализа тепла блокировки рассмотрите использование блокировок lck_* с группой блокировки на драйвер, как определено в kern/locks.h.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Освобождает рекурсивную блокировку.
Объявление
Objective C
void IORecursiveLockFree ( IORecursiveLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Освобождает блокировку, выделенную с IORecursiveLockAlloc. Блокировка должна быть разблокирована без официантов.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Средство доступа к взаимному исключению Маха.
Объявление
Objective C
lck_mtx_t * IORecursiveLockGetMachLock ( IORecursiveLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Средство доступа к взаимному исключению Маха.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.4 и позже.
-
Проверьте, сохранена ли рекурсивная блокировка вызывающим потоком.
Объявление
Objective C
boolean_t IORecursiveLockHaveLock ( const IORecursiveLock *lock );Параметры
lockУказатель на выделенную блокировку.
Возвращаемое значение
Истина, если вызывающий поток содержит блокировку иначе ложь.
Обсуждение
Если блокировка сохранена вызывающим потоком, возвратите true, иначе блокировка разблокирована или сохранена другим потоком, и false возвращается.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Заблокируйте рекурсивную блокировку.
Объявление
Objective C
void IORecursiveLockLock ( IORecursiveLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте рекурсивную блокировку. Если блокировка сохранена другим потоком, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка может быть взята рекурсивно тем же потоком со сбалансированным числом вызовов к IORecursiveLockUnlock.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Попытайтесь заблокировать рекурсивную блокировку.
Объявление
Objective C
boolean_t IORecursiveLockTryLock ( IORecursiveLock *lock );Параметры
lockУказатель на выделенную блокировку.
Возвращаемое значение
Истина, если блокировка теперь заблокирована вызывающей стороной, иначе ложь.
Обсуждение
Заблокируйте блокировку, если она в настоящее время разблокирована или сохранена вызывающим потоком, и возвратите true. Если блокировка сохранена другим потоком, возвратите false. Успешные вызовы к IORecursiveLockTryLock должны быть сбалансированы с вызовов к IORecursiveLockUnlock.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Разблокируйте рекурсивную блокировку.
Объявление
Objective C
void IORecursiveLockUnlock ( IORecursiveLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Отмените один вызов к IORecursiveLockLock, если блокировка теперь разблокирована, будят любых блокированных официантов. Если вызывающая сторона не балансирует вызовы к IORecursiveLockLock с IORecursiveLockUnlock, результаты не определены. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Выделяет и инициализирует блокировку чтения-записи.
Объявление
Objective C
IORWLock * IORWLockAlloc ( void );Возвращаемое значение
Указатель на выделенную блокировку или нуль при отказе.
Обсуждение
Выделяет и инициализирует чтение-запись, привязывают универсальное ЗУ. Блокировки чтения-записи предусматривают многократных читателей, одного монопольного писателя, и предоставляются libkern/locks.h. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. IORWLocks используют глобальную группу блокировки IOKit, IOLockGroup. Для упрощения отладки kext и анализа тепла блокировки рассмотрите использование блокировок lck_* с группой блокировки на драйвер, как определено в kern/locks.h.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Освобождает блокировку чтения-записи.
Объявление
Objective C
void IORWLockFree ( IORWLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Освобождает блокировку, выделенную с IORWLockAlloc. Блокировка должна быть разблокирована без официантов.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Средство доступа к блокировке чтения-записи Маха.
Объявление
Objective C
lck_rw_t * IORWLockGetMachLock ( IORWLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Средство доступа к блокировке чтения-записи Маха.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.4 и позже.
-
Заблокируйте блокировку чтения-записи для чтения.
Объявление
Objective C
void IORWLockRead ( IORWLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте блокировку для чтения, позволив многократным читателям, когда не будет никаких писателей. Если блокировка сохранена для записи, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка блокировки рекурсивно от одного потока, для чтения или записи, может привести к мертвой блокировке.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IORWLockRead -
Разблокируйте блокировку чтения-записи.
Объявление
Objective C
void IORWLockUnlock ( IORWLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Отмените один вызов к IORWLockRead или IORWLockWrite. Если вызывающая сторона не заблокировала блокировку, результаты не определены. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IORWLockUnlock -
Заблокируйте блокировку чтения-записи для записи.
Объявление
Objective C
void IORWLockWrite ( IORWLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Заблокируйте блокировку для записи, предоставив одному писателю exlusive доступ. Если блокировка сохранена для чтения или записи, блок, ожидающий разблокировала. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. Блокировка блокировки рекурсивно от одного потока, для чтения или записи, может привести к мертвой блокировке.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IORWLockWrite -
Выделяет и инициализирует спин-блокировку.
Объявление
Objective C
IOSimpleLock * IOSimpleLockAlloc ( void );Возвращаемое значение
Указатель на выделенную блокировку или нуль при отказе.
Обсуждение
Выделяет и инициализирует спин-блокировку в универсальном ЗУ. Спин-блокировки обеспечивают взаимное исключение неблокирования для синхронизации между контекстом потока и прерывают контекст, или для многопроцессорной синхронизации, и предоставляются libkern/locks.h. В то время как спин-блокировка сохранена, эта функция может блокировать и так не должна быть вызвана от уровня прерывания или. IOSimpleLocks используют глобальную группу блокировки IOKit, IOLockGroup. Для упрощения отладки kext и анализа тепла блокировки рассмотрите использование блокировок lck_* с группой блокировки на драйвер, как определено в kern/locks.h.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Освобождает спин-блокировку.
Объявление
Objective C
void IOSimpleLockFree ( IOSimpleLock *lock );Параметры
lockУказатель на блокировку.
Обсуждение
Освобождает блокировку, выделенную с IOSimpleLockAlloc.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Средство доступа к спин-блокировке Маха.
Объявление
Objective C
lck_spin_t * IOSimpleLockGetMachLock ( IOSimpleLock *lock );Параметры
lockУказатель на выделенную блокировку.
Обсуждение
Средство доступа к спин-блокировке Маха.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.4 и позже.
-
Инициализируйте спин-блокировку.
Объявление
Objective C
void IOSimpleLockInit ( IOSimpleLock *lock );Параметры
lockУказатель на блокировку.
Обсуждение
Инициализируйте встроенную спин-блокировку к разблокированному состоянию.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Заблокируйте спин-блокировку.
Объявление
Objective C
void IOSimpleLockLock ( IOSimpleLock *lock );Параметры
lockУказатель на блокировку.
Обсуждение
Заблокируйте спин-блокировку. Если блокировка сохранена, вращение, ожидающее разблокировала. Спин-блокировки отключают вытеснение, не могут быть сохранены ни через какую работу блокирования и должны быть сохранены в течение очень коротких периодов. Когда используется синхронизироваться между контекстом прерывания и контекстом потока они должны быть заблокированы с отключенными прерываниями - IOSimpleLockLockDisableInterrupt () сделает обоих. Блокировка блокировки рекурсивно от одного потока приведет к мертвой блокировке.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IOSimpleLockLock -
Заблокируйте спин-блокировку.
Объявление
Objective C
IOInterruptState IOSimpleLockLockDisableInterrupt ( IOSimpleLock *lock );Параметры
lockУказатель на блокировку.
Обсуждение
Заблокируйте спин-блокировку. Если блокировка сохранена, вращение, ожидающее разблокировала. Простые блокировки отключают вытеснение, не могут быть сохранены ни через какую работу блокирования и должны быть сохранены в течение очень коротких периодов. Когда используется синхронизироваться между контекстом прерывания и контекстом потока они должны быть заблокированы с отключенными прерываниями - IOSimpleLockLockDisableInterrupt () сделает обоих. Блокировка блокировки рекурсивно от одного потока приведет к мертвой блокировке.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
-
Попытайтесь заблокировать спин-блокировку.
Объявление
Objective C
boolean_t IOSimpleLockTryLock ( IOSimpleLock *lock );Параметры
lockУказатель на блокировку.
Обсуждение
Заблокируйте спин-блокировку, если она в настоящее время разблокирована, и возвратите true. Если блокировка сохранена, возвратите false. Успешные вызовы к IOSimpleLockTryLock должны быть сбалансированы с вызовов к IOSimpleLockUnlock.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IOSimpleLockTryLock -
Разблокируйте спин-блокировку.
Объявление
Objective C
void IOSimpleLockUnlock ( IOSimpleLock *lock );Параметры
lockУказатель на блокировку.
Обсуждение
Разблокируйте блокировку и восстановите вытеснение. Если вызывающая сторона не заблокировала блокировку, результаты не определены.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
См. также
IOSimpleLockUnlock -
Разблокируйте спин-блокировку и восстановите состояние прерывания.
Объявление
Objective C
void IOSimpleLockUnlockEnableInterrupt ( IOSimpleLock *lock, IOInterruptState state );Параметры
lockУказатель на блокировку.
stateСостояние прерывания, возвращенное IOSimpleLockLockDisableInterrupt ()
Обсуждение
Разблокируйте блокировку и восстановите вытеснение и прерывания к состоянию, как они были, когда была взята блокировка. Если вызывающая сторона не заблокировала блокировку, результаты не определены.
Оператор импорта
Objective C
#include <IOLocks.h>;Доступность
Доступный в OS X v10.0 и позже.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
Константы
-
Объявление
Objective C
extern lck_grp_t *IOLockGroup;Константы
