virMutexLock;
virMutexUnlock;
virOnce;
+virRWLockDestroy;
+virRWLockInit;
+virRWLockRead;
+virRWLockUnlock;
+virRWLockWrite;
virThreadCancel;
virThreadCreate;
virThreadID;
typedef struct virMutex virMutex;
typedef virMutex *virMutexPtr;
+typedef struct virRWLock virRWLock;
+typedef virRWLock *virRWLockPtr;
+
typedef struct virCond virCond;
typedef virCond *virCondPtr;
void virMutexUnlock(virMutexPtr m);
+int virRWLockInit(virRWLockPtr m) ATTRIBUTE_RETURN_CHECK;
+void virRWLockDestroy(virRWLockPtr m);
+
+void virRWLockRead(virRWLockPtr m);
+void virRWLockWrite(virRWLockPtr m);
+void virRWLockUnlock(virRWLockPtr m);
+
int virCondInit(virCondPtr c) ATTRIBUTE_RETURN_CHECK;
int virCondDestroy(virCondPtr c);
}
+int virRWLockInit(virRWLockPtr m)
+{
+ int ret;
+ ret = pthread_rwlock_init(&m->lock, NULL);
+ if (ret != 0) {
+ errno = ret;
+ return -1;
+ }
+ return 0;
+}
+
+void virRWLockDestroy(virRWLockPtr m)
+{
+ pthread_rwlock_destroy(&m->lock);
+}
+
+
+void virRWLockRead(virRWLockPtr m)
+{
+ pthread_rwlock_rdlock(&m->lock);
+}
+
+void virRWLockWrite(virRWLockPtr m)
+{
+ pthread_rwlock_wrlock(&m->lock);
+}
+
+
+void virRWLockUnlock(virRWLockPtr m)
+{
+ pthread_rwlock_unlock(&m->lock);
+}
+
int virCondInit(virCondPtr c)
{
int ret;
pthread_mutex_t lock;
};
+struct virRWLock {
+ pthread_rwlock_t lock;
+};
+
struct virCond {
pthread_cond_t cond;
};
}
+int virRWLockInit(virRWLockPtr m ATTRIBUTE_UNUSED)
+{
+ errno = ENOSYS;
+ return -1;
+}
+
+void virRWLockDestroy(virRWLockPtr m ATTRIBUTE_UNUSED)
+{}
+
+
+void virRWLockRead(virRWLockPtr m ATTRIBUTE_UNUSED)
+{}
+
+void virRWLockWrite(virRWLockPtr m ATTRIBUTE_UNUSED)
+{}
+
+
+void virRWLockUnlock(virRWLockPtr m ATTRIBUTE_UNUSED)
+{}
int virCondInit(virCondPtr c)
{
HANDLE lock;
};
+struct virRWLock {
+ bool ignored;
+};
+
struct virCond {
virMutex lock;
size_t nwaiters;