Replace QemuMutex with GMutex and QemuCond with GCond
(with corresponding function changes), to make libcacard
independent of qemu internal functions.
After this step, none of libcacard internals use any
qemu-provided symbols. Maybe it's a good idea to
stop including qemu-common.h internally too.
Signed-off-by: Michael Tokarev m...@tls.msk.ru
---
libcacard/Makefile |8 +---
libcacard/event.c | 24
libcacard/vreader.c | 16
3 files changed, 21 insertions(+), 27 deletions(-)
Note: compile-tested only, and only on linux.
diff --git a/libcacard/Makefile b/libcacard/Makefile
index bb00c94..550d88b 100644
--- a/libcacard/Makefile
+++ b/libcacard/Makefile
@@ -3,13 +3,7 @@ libcacard_includedir=$(includedir)/cacard
TOOLS += vscclient$(EXESUF)
# objects linked into a shared library, built with libtool with -fPIC if
required
-libcacard-obj-y = $(stub-obj-y) $(libcacard-y)
-libcacard-obj-y += util/osdep.o util/cutils.o util/qemu-timer-common.o
-libcacard-obj-y += util/error.o util/qemu-error.o
-libcacard-obj-$(CONFIG_WIN32) += util/oslib-win32.o util/qemu-thread-win32.o
-libcacard-obj-$(CONFIG_POSIX) += util/oslib-posix.o util/qemu-thread-posix.o
-libcacard-obj-y += $(filter trace/%, $(util-obj-y))
-
+libcacard-obj-y = $(libcacard-y)
libcacard-lobj-y=$(patsubst %.o,%.lo,$(libcacard-obj-y))
# libtool will build the .o files, too
diff --git a/libcacard/event.c b/libcacard/event.c
index 2d7500f..c4761f2 100644
--- a/libcacard/event.c
+++ b/libcacard/event.c
@@ -43,13 +43,13 @@ vevent_delete(VEvent *vevent)
static VEvent *vevent_queue_head;
static VEvent *vevent_queue_tail;
-static QemuMutex vevent_queue_lock;
-static QemuCond vevent_queue_condition;
+static GMutex vevent_queue_lock;
+static GCond vevent_queue_condition;
void vevent_queue_init(void)
{
-qemu_mutex_init(vevent_queue_lock);
-qemu_cond_init(vevent_queue_condition);
+g_mutex_init(vevent_queue_lock);
+g_cond_init(vevent_queue_condition);
vevent_queue_head = vevent_queue_tail = NULL;
}
@@ -57,7 +57,7 @@ void
vevent_queue_vevent(VEvent *vevent)
{
vevent-next = NULL;
-qemu_mutex_lock(vevent_queue_lock);
+g_mutex_lock(vevent_queue_lock);
if (vevent_queue_head) {
assert(vevent_queue_tail);
vevent_queue_tail-next = vevent;
@@ -65,8 +65,8 @@ vevent_queue_vevent(VEvent *vevent)
vevent_queue_head = vevent;
}
vevent_queue_tail = vevent;
-qemu_cond_signal(vevent_queue_condition);
-qemu_mutex_unlock(vevent_queue_lock);
+g_cond_signal(vevent_queue_condition);
+g_mutex_unlock(vevent_queue_lock);
}
/* must have lock */
@@ -86,11 +86,11 @@ VEvent *vevent_wait_next_vevent(void)
{
VEvent *vevent;
-qemu_mutex_lock(vevent_queue_lock);
+g_mutex_lock(vevent_queue_lock);
while ((vevent = vevent_dequeue_vevent()) == NULL) {
-qemu_cond_wait(vevent_queue_condition, vevent_queue_lock);
+g_cond_wait(vevent_queue_condition, vevent_queue_lock);
}
-qemu_mutex_unlock(vevent_queue_lock);
+g_mutex_unlock(vevent_queue_lock);
return vevent;
}
@@ -98,9 +98,9 @@ VEvent *vevent_get_next_vevent(void)
{
VEvent *vevent;
-qemu_mutex_lock(vevent_queue_lock);
+g_mutex_lock(vevent_queue_lock);
vevent = vevent_dequeue_vevent();
-qemu_mutex_unlock(vevent_queue_lock);
+g_mutex_unlock(vevent_queue_lock);
return vevent;
}
diff --git a/libcacard/vreader.c b/libcacard/vreader.c
index 5793d73..70cc529 100644
--- a/libcacard/vreader.c
+++ b/libcacard/vreader.c
@@ -28,7 +28,7 @@ struct VReaderStruct {
VCard *card;
char *name;
vreader_id_t id;
-QemuMutex lock;
+GMutex lock;
VReaderEmul *reader_private;
VReaderEmulFree reader_private_free;
};
@@ -97,13 +97,13 @@ apdu_ins_to_string(int ins)
static inline void
vreader_lock(VReader *reader)
{
-qemu_mutex_lock(reader-lock);
+g_mutex_lock(reader-lock);
}
static inline void
vreader_unlock(VReader *reader)
{
-qemu_mutex_unlock(reader-lock);
+g_mutex_unlock(reader-lock);
}
/*
@@ -116,7 +116,7 @@ vreader_new(const char *name, VReaderEmul *private,
VReader *reader;
reader = (VReader *)g_malloc(sizeof(VReader));
-qemu_mutex_init(reader-lock);
+g_mutex_init(reader-lock);
reader-reference_count = 1;
reader-name = g_strdup(name);
reader-card = NULL;
@@ -413,25 +413,25 @@ vreader_dequeue(VReaderList *list, VReaderListEntry
*entry)
}
static VReaderList *vreader_list;
-static QemuMutex vreader_list_mutex;
+static GMutex vreader_list_mutex;
static void
vreader_list_init(void)
{
vreader_list = vreader_list_new();
-qemu_mutex_init(vreader_list_mutex);
+g_mutex_init(vreader_list_mutex);
}
static void
vreader_list_lock(void)
{
-qemu_mutex_lock(vreader_list_mutex);
+g_mutex_lock(vreader_list_mutex);
}
static void
vreader_list_unlock(void)
{
-