mutex.h revision 9a4ce0c25809073f31226faa6ed94c70474cf363
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#ifndef MUTEX_H
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define MUTEX_H 1
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#ifdef MULTITHREADED
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#include <pthread.h>
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#include <isc/assertions.h>
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halleytypedef pthread_mutex_t os_mutex_t;
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define OS_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_init(mp) INSIST(pthread_mutex_init((mp), NULL) == 0)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_lock(mp) INSIST(pthread_mutex_lock((mp)) == 0)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_unlock(mp) INSIST(pthread_mutex_unlock((mp)) == 0)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_destroy(mp) INSIST(pthread_mutex_destroy((mp)) == 0)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#else
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halleytypedef int os_mutex_t;
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define OS_MUTEX_INITIALIZER 0
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_init(mp)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_lock(mp)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#define os_mutex_unlock(mp)
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#endif
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley
9a4ce0c25809073f31226faa6ed94c70474cf363Bob Halley#endif /* MUTEX_H */