39 строки
570 B
C
39 строки
570 B
C
/*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#ifndef OMPI_MUTEX_SPINLOCK_
|
|
#define OMPI_MUTEX_SPINLOCK_
|
|
|
|
#include "class/ompi_object.h"
|
|
#include "os/atomic.h"
|
|
|
|
|
|
struct ompi_mutex_t {
|
|
ompi_object_t super;
|
|
ompi_lock_data_t m_lock;
|
|
|
|
};
|
|
typedef struct ompi_mutex_t ompi_mutex_t;
|
|
|
|
|
|
OBJ_CLASS_DECLARATION(ompi_mutex_t);
|
|
|
|
|
|
static inline void ompi_mutex_lock(ompi_mutex_t* m)
|
|
{
|
|
spinlock(&m->m_lock);
|
|
}
|
|
|
|
static inline int ompi_mutex_trylock(ompi_mutex_t* m)
|
|
{
|
|
return spintrylock(&m->m_lock);
|
|
}
|
|
|
|
static inline void ompi_mutex_unlock(ompi_mutex_t* m)
|
|
{
|
|
spinunlock(&m->m_lock);
|
|
}
|
|
|
|
#endif
|