/*  DO NOT EDIT THIS FILE.

    It has been auto-edited by fixincludes from:

	"fixinc/tests/inc/sys/pthread.h"

    This had to be done to correct non-standard usages in the
    original, manufacturer supplied header file.  */



#if defined( HPUX11_LWP_RWLOCK_VALID_CHECK )
#define __LWP_RWLOCK_VALID              -29551
#endif  /* HPUX11_LWP_RWLOCK_VALID_CHECK */


#if defined( HPUX11_PTHREAD_POINTER_CHECK )
#define __MPOINTER		long	m_ptr
#endif  /* HPUX11_PTHREAD_POINTER_CHECK */


#if defined( HPUX11_PTHREAD_CONST_CHECK )
#define __POINTER_SET		1
#endif  /* HPUX11_PTHREAD_CONST_CHECK */


#if defined( HPUX_PTHREAD_INITIALIZERS_CHECK )
#define PTHREAD_MUTEX_INITIALIZER  {					\
	{ __PTHREAD_MUTEX_VALID, 0 },					\
	(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),		\
	__SPNLCK_INITIALIZER,						\
	{ 0, 0, -1, 0 },						\
	{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },			\
	{ 0, 0 }							\
}

#endif  /* HPUX_PTHREAD_INITIALIZERS_CHECK */
