# $FreeBSD: release/9.1.0/lib/libkse/test/mutex_d.exp 172491 2007-10-09 13:42:34Z obrien $

Testing pthread_mutex_init
--------------------------
  Protocol PTHREAD_PRIO_NONE, Type POSIX (type not specified) - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_DEFAULT - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_ERRORCHECK - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_NORMAL - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_RECURSIVE - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type POSIX (type not specified) - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_DEFAULT - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_ERRORCHECK - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_NORMAL - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_RECURSIVE - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type POSIX (type not specified) - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_DEFAULT - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_ERRORCHECK - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_NORMAL - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_RECURSIVE - PASS

Testing pthread_mutex_destroy
-----------------------------
  Protocol PTHREAD_PRIO_NONE, Type POSIX (type not specified)
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_DEFAULT
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_NORMAL
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type POSIX (type not specified)
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_NORMAL
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type POSIX (type not specified)
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_NORMAL
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Destruction of unused mutex - PASS
    Destruction of mutex locked by self - PASS
    Destruction of mutex locked by another thread - PASS
    Destruction of mutex while being used in cond_wait - PASS

Testing pthread_mutex_lock
--------------------------
  Protocol PTHREAD_PRIO_NONE, Type POSIX (type not specified)
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_DEFAULT
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_NORMAL
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type POSIX (type not specified)
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_NORMAL
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type POSIX (type not specified)
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_NORMAL
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Lock on unlocked mutex - PASS
    Lock on invalid mutex - PASS
    Lock on mutex held by self - PASS

Testing pthread_mutex_unlock
----------------------------
  Protocol PTHREAD_PRIO_NONE, Type POSIX (type not specified)
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_DEFAULT
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_NORMAL
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_NONE, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type POSIX (type not specified)
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_NORMAL
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type POSIX (type not specified)
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_NORMAL
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS
  Protocol PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Unlock on mutex held by self - PASS
    Unlock on invalid mutex - PASS
    Unlock on mutex locked by another thread - PASS

Testing queueing order
----------------------
  Queueing order on a mutex - PASS
  Queueing order on a condition variable - PASS

Testing priority inheritence
----------------------------
  Protype PTHREAD_PRIO_INHERIT, Type POSIX (type not specified)
    Simple inheritence test - PASS
    Inheritence test with change of priority - PASS
  Protype PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Simple inheritence test - PASS
    Inheritence test with change of priority - PASS
  Protype PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Simple inheritence test - PASS
    Inheritence test with change of priority - PASS
  Protype PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_NORMAL
    Simple inheritence test - PASS
    Inheritence test with change of priority - PASS
  Protype PTHREAD_PRIO_INHERIT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Simple inheritence test - PASS
    Inheritence test with change of priority - PASS

Testing priority ceilings
-------------------------
  Protype PTHREAD_PRIO_PROTECT, Type POSIX (type not specified)
    Lock with ceiling priority < thread priority - PASS
    Lock with ceiling priority = thread priority - PASS
    Lock with ceiling priority > thread priority - PASS
    Preemption with ceiling priority < thread priority - PASS
    Preemption with ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority > thread priority - PASS
  Protype PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_DEFAULT
    Lock with ceiling priority < thread priority - PASS
    Lock with ceiling priority = thread priority - PASS
    Lock with ceiling priority > thread priority - PASS
    Preemption with ceiling priority < thread priority - PASS
    Preemption with ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority > thread priority - PASS
  Protype PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_ERRORCHECK
    Lock with ceiling priority < thread priority - PASS
    Lock with ceiling priority = thread priority - PASS
    Lock with ceiling priority > thread priority - PASS
    Preemption with ceiling priority < thread priority - PASS
    Preemption with ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority > thread priority - PASS
  Protype PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_NORMAL
    Lock with ceiling priority < thread priority - PASS
    Lock with ceiling priority = thread priority - PASS
    Lock with ceiling priority > thread priority - PASS
    Preemption with ceiling priority < thread priority - PASS
    Preemption with ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority > thread priority - PASS
  Protype PTHREAD_PRIO_PROTECT, Type SS2 PTHREAD_MUTEX_RECURSIVE
    Lock with ceiling priority < thread priority - PASS
    Lock with ceiling priority = thread priority - PASS
    Lock with ceiling priority > thread priority - PASS
    Preemption with ceiling priority < thread priority - PASS
    Preemption with ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority = thread priority - PASS
    SCHED_FIFO scheduling and ceiling priority > thread priority - PASS

Total tests 212, passed 212, failed 0
