qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] CPUArchState: introduce per-cpu lock


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 1/2] CPUArchState: introduce per-cpu lock
Date: Mon, 25 Jun 2012 11:04:09 +0100

On Sun, Jun 24, 2012 at 3:05 PM, liu ping fan <address@hidden> wrote:
> On Fri, Jun 22, 2012 at 8:36 PM, Stefan Hajnoczi <address@hidden> wrote:
>> On Thu, Jun 21, 2012 at 4:06 PM, Liu Ping Fan <address@hidden> 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]