The ck_cohort.h header file does not define any cohort types. Instead, the user must use the CK_COHORT_PROTOTYPE or CK_COHORT_TRYLOCK_PROTOTYPE macros to define any types they want to use. They must use CK_COHORT_TRYLOCK_PROTOTYPE if they want their cohort type to have support for trylock operations. The CK_COHORT_TRYLOCK_PROTOTYPE macro takes the following arguments:

cohort_name : An identifier used for this cohort type. This will have to be passed to each of the other CK_COHORT macros. global_lock_method : The method that should be called to acquire the global lock global_unlock_method : The method that should be called to relinquish the global lock global_locked_method : This method should return true iff the global lock is acquired by a thread. global_trylock_method : The method that should be called to try to acquire the global lock. It should not block and return true iff the lock was successfully acquired. local_lock_method : The method that should be called to acquire the local lock local_unlock_method : The method that should be called to relinquish the local lock global_locked_method : This method should return true iff the global lock is acquired by a thread. local_trylock_method : The method that should be called to try to acquire the local lock. It should not block and return true iff the lock was successfully acquired.