o Make _thr_umutex_init a function.

o Eliminate unused parameter for some functions.
o Convert type of first parameter to void * for _thr_umtx_wait
  and _thr_umtx_wake.
This commit is contained in:
David Xu 2006-10-13 22:31:00 +00:00
parent 90c3810cda
commit 8042f26d52
2 changed files with 23 additions and 21 deletions

View file

@ -30,8 +30,16 @@
#include "thr_private.h"
#include "thr_umtx.h"
void
_thr_umutex_init(struct umutex *mtx)
{
static struct umutex default_mtx = DEFAULT_UMUTEX;
*mtx = default_mtx;
}
int
__thr_umutex_lock(struct umutex *mtx, uint32_t id)
__thr_umutex_lock(struct umutex *mtx)
{
if (_umtx_op(mtx, UMTX_OP_MUTEX_LOCK, 0, 0, 0) == 0)
return 0;
@ -39,7 +47,7 @@ __thr_umutex_lock(struct umutex *mtx, uint32_t id)
}
int
__thr_umutex_timedlock(struct umutex *mtx, uint32_t id,
__thr_umutex_timedlock(struct umutex *mtx,
const struct timespec *timeout)
{
if (timeout && (timeout->tv_sec < 0 || (timeout->tv_sec == 0 &&
@ -52,7 +60,7 @@ __thr_umutex_timedlock(struct umutex *mtx, uint32_t id,
}
int
__thr_umutex_unlock(struct umutex *mtx, uint32_t id)
__thr_umutex_unlock(struct umutex *mtx)
{
if (_umtx_op(mtx, UMTX_OP_MUTEX_UNLOCK, 0, 0, 0) == 0)
return (0);
@ -60,7 +68,7 @@ __thr_umutex_unlock(struct umutex *mtx, uint32_t id)
}
int
__thr_umutex_kern_trylock(struct umutex *mtx)
__thr_umutex_trylock(struct umutex *mtx)
{
if (_umtx_op(mtx, UMTX_OP_MUTEX_TRYLOCK, 0, 0, 0) == 0)
return (0);
@ -82,7 +90,7 @@ _thr_umtx_wait(volatile umtx_t *mtx, long id, const struct timespec *timeout)
if (timeout && (timeout->tv_sec < 0 || (timeout->tv_sec == 0 &&
timeout->tv_nsec <= 0)))
return (ETIMEDOUT);
if (_umtx_op(__DEVOLATILE(struct umtx *, mtx), UMTX_OP_WAIT, id, 0,
if (_umtx_op(__DEVOLATILE(void *, mtx), UMTX_OP_WAIT, id, 0,
__DECONST(void*, timeout)) == 0)
return (0);
return (errno);
@ -91,7 +99,7 @@ _thr_umtx_wait(volatile umtx_t *mtx, long id, const struct timespec *timeout)
int
_thr_umtx_wake(volatile umtx_t *mtx, int nr_wakeup)
{
if (_umtx_op(__DEVOLATILE(struct umtx *, mtx), UMTX_OP_WAKE,
if (_umtx_op(__DEVOLATILE(void *, mtx), UMTX_OP_WAKE,
nr_wakeup, 0, 0) == 0)
return (0);
return (errno);

View file

@ -36,25 +36,19 @@
typedef long umtx_t;
int __thr_umutex_lock(struct umutex *mtx, uint32_t id) __hidden;
int __thr_umutex_timedlock(struct umutex *mtx, uint32_t id,
int __thr_umutex_lock(struct umutex *mtx) __hidden;
int __thr_umutex_timedlock(struct umutex *mtx,
const struct timespec *timeout) __hidden;
int __thr_umutex_unlock(struct umutex *mtx, uint32_t id) __hidden;
int __thr_umutex_kern_trylock(struct umutex *mtx) __hidden;
int __thr_umutex_unlock(struct umutex *mtx) __hidden;
int __thr_umutex_trylock(struct umutex *mtx) __hidden;
int __thr_umutex_set_ceiling(struct umutex *mtx, uint32_t ceiling,
uint32_t *oldceiling) __hidden;
void _thr_umutex_init(struct umutex *mtx) __hidden;
int _thr_umtx_wait(volatile umtx_t *mtx, umtx_t exp,
const struct timespec *timeout) __hidden;
int _thr_umtx_wake(volatile umtx_t *mtx, int count) __hidden;
static inline void
_thr_umutex_init(struct umutex *mtx)
{
struct umutex tmp = DEFAULT_UMUTEX;
*mtx = tmp;
}
static inline int
_thr_umutex_trylock(struct umutex *mtx, uint32_t id)
{
@ -62,7 +56,7 @@ _thr_umutex_trylock(struct umutex *mtx, uint32_t id)
return (0);
if ((mtx->m_flags & UMUTEX_PRIO_PROTECT) == 0)
return (EBUSY);
return (__thr_umutex_kern_trylock(mtx));
return (__thr_umutex_trylock(mtx));
}
static inline int
@ -70,7 +64,7 @@ _thr_umutex_lock(struct umutex *mtx, uint32_t id)
{
if (atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_UNOWNED, id))
return (0);
return (__thr_umutex_lock(mtx, id));
return (__thr_umutex_lock(mtx));
}
static inline int
@ -79,7 +73,7 @@ _thr_umutex_timedlock(struct umutex *mtx, uint32_t id,
{
if (atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_UNOWNED, id))
return (0);
return (__thr_umutex_timedlock(mtx, id, timeout));
return (__thr_umutex_timedlock(mtx, timeout));
}
static inline int
@ -87,7 +81,7 @@ _thr_umutex_unlock(struct umutex *mtx, uint32_t id)
{
if (atomic_cmpset_rel_32(&mtx->m_owner, id, UMUTEX_UNOWNED))
return (0);
return (__thr_umutex_unlock(mtx, id));
return (__thr_umutex_unlock(mtx));
}
#endif