/*-------------------------------------------------------------*/ typedef struct netwib_thread_rwlock netwib_thread_rwlock; /*-------------------------------------------------------------*/ /* Name : netwib_thread_rwlock_init Description : Initialize a rwlock. Input parameter(s) : Input/output parameter(s) : *pprwlock : netwib_thread_rwlock initialized Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_rwlock_init(netwib_thread_rwlock **pprwlock); /*-------------------------------------------------------------*/ /* Name : netwib_thread_rwlock_close Description : Close a rwlock. Input parameter(s) : Input/output parameter(s) : *pprwlock : netwib_thread_rwlock closed Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_rwlock_close(netwib_thread_rwlock **pprwlock); /*-------------------------------------------------------------*/ /* Name : netwib_thread_rwlock_rdlock Description : Wait for the rwlock. We lock for reading. Input parameter(s) : *prwlock : netwib_thread_rwlock *pabstime : end time. If *pabstime is reached, locking is not done (*plocked set to NETWIB_FALSE). Input/output parameter(s) : Output parameter(s) : *plocked : the rwlock could be locked Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_rwlock_rdlock(netwib_thread_rwlock *prwlock, netwib_consttime *pabstime, netwib_bool *plocked); /*-------------------------------------------------------------*/ /* Name : netwib_thread_rwlock_rdunlock Description : Unlock reading of a rwlock. Input parameter(s) : Input/output parameter(s) : *prwlock : netwib_thread_rwlock to unlock Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_rwlock_rdunlock(netwib_thread_rwlock *prwlock); /*-------------------------------------------------------------*/ /* Name : netwib_thread_rwlock_wrlock Description : Wait for the rwlock. We lock for writing. Input parameter(s) : *prwlock : netwib_thread_rwlock *pabstime : end time. If *pabstime is reached, locking is not done (*plocked set to NETWIB_FALSE). Input/output parameter(s) : Output parameter(s) : *plocked : the rwlock could be locked Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_rwlock_wrlock(netwib_thread_rwlock *prwlock, netwib_consttime *pabstime, netwib_bool *plocked); /*-------------------------------------------------------------*/ /* Name : netwib_thread_rwlock_wrunlock Description : Unlock writing of a rwlock. Input parameter(s) : Input/output parameter(s) : *prwlock : netwib_thread_rwlock to unlock Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_rwlock_wrunlock(netwib_thread_rwlock *prwlock);