Hi guys,
I spent some time on pthread libraries in netbsd which is a big part in my project, and have some questions to ask. Taking pthread_barrierattr_getpshared, pthread_barrierattr_setpshared as an example. These functions are used to getting and setting barrierattr data structure. netbsd has several fields in the data structure, while freebsd has the only pshared field. I am wondering which fields in the implementation of netbsd can be used as pshare in netbsd? Following are definitions of netbsd vs freebsd, the same problems exist in mutexattr, condattr and rwlockattr. Also are there any documents which describe implementation details in netbsd? It would be great if we have. *functions with missing features*: pthread_barrierattr_getpshared pthread_barrierattr_setpshared *netbsd * struct __pthread_barrier_st { unsigned int ptb_magic; /* Protects data below */ pthread_spin_t ptb_lock; pthread_queue_t ptb_waiters; unsigned int ptb_initcount; unsigned int ptb_curcount; unsigned int ptb_generation; void *ptb_private; }; *freebsd* struct pthread_barrierattr { int pshared; }; *functions with missing features:* pthread_mutexattr_setpshared pthread_mutexattr_getpshared pthread_mutexattr_getprioceiling pthread_mutexattr_setprioceiling pthread_mutexattr_getprotocol pthread_mutexattr_setprotocol *netbsd*: struct __pthread_mutexattr_st { unsigned int ptma_magic; void *ptma_private; }; *freebsd*: struct pthread_mutex_attr { enum pthread_mutextype m_type; int m_protocol; int m_ceiling; int m_pshared; }; *functions with missing features* pthread_condattr_setpshared pthread_condattr_getpshared pthread_condattr_getclock *netbsd* struct __pthread_condattr_st { unsigned int ptca_magic; void *ptca_private; }; *freebsd* struct pthread_cond_attr { int c_pshared; int c_clockid; }; * functions with missing features* pthread_rwlockattr_getpshared pthread_rwlockattr_setpshared *netbsd* struct __pthread_rwlockattr_st { unsigned int ptra_magic; void *ptra_private; }; *freebsd* struct pthread_rwlockattr { int pshared; };