On Sun, Jun 24, 2012 at 3:05 PM, liu ping fan <[email protected]> wrote: > On Fri, Jun 22, 2012 at 8:36 PM, Stefan Hajnoczi <[email protected]> wrote: >> On Thu, Jun 21, 2012 at 4:06 PM, Liu Ping Fan <[email protected]> wrote: >>> diff --git a/cpu-defs.h b/cpu-defs.h >>> index f49e950..7305822 100644 >>> --- a/cpu-defs.h >>> +++ b/cpu-defs.h >>> @@ -30,6 +30,7 @@ >>> #include "osdep.h" >>> #include "qemu-queue.h" >>> #include "targphys.h" >>> +#include "qemu-thread-posix.h" >> >> This breaks Windows, you need qemu-thread.h. >> >>> >>> #ifndef TARGET_LONG_BITS >>> #error TARGET_LONG_BITS must be defined before including this header >>> @@ -220,6 +221,7 @@ typedef struct CPUWatchpoint { >>> CPU_COMMON_THREAD \ >>> struct QemuCond *halt_cond; \ >>> int thread_kicked; \ >>> + struct QemuMutex *cpu_lock; \ >> >> It would be nicer to declare it QemuMutex cpu_lock (no pointer) so >> that you don't need to worry about malloc/free. >> > Yes :), I have considered about it, and not quite sure. But I figure > out the lock for per-device to break BQL will be like this for some > reason. > After all, have not decided yet.
Start simple. If you need it to be a pointer later that's fine but for now I see no reason to do the malloc (especially since there is no free!). >>> diff --git a/main-loop.h b/main-loop.h >>> index dce1cd9..d8d44a4 100644 >>> --- a/main-loop.h >>> +++ b/main-loop.h >>> @@ -323,6 +323,9 @@ void qemu_bh_delete(QEMUBH *bh); >>> int qemu_add_child_watch(pid_t pid); >>> #endif >>> >>> +void qemu_mutex_lock_cpu(void *_env); >>> +void qemu_mutex_unlock_cpu(void *_env); >> >> Why void* instead of CPUArchState*? >> > Because we can hide the CPUArchState from apic.c There's probably a nicer way of doing that than void*. Stefan
