[Qemu-devel] Re: [RFC][PATCH v6 03/23] Make qemu timers available for tools

2011-01-21 Thread Jes Sorensen
On 01/17/11 14:14, Michael Roth wrote:
> diff --git a/qemu-ioh.c b/qemu-ioh.c
> index cc71470..001e7a2 100644
> --- a/qemu-ioh.c
> +++ b/qemu-ioh.c
> @@ -22,7 +22,11 @@
>   * THE SOFTWARE.
>   */
>  #include "qemu-ioh.h"
> +#include "qemu-char.h"
>  #include "qlist.h"
> +#ifdef CONFIG_EVENTFD
> +#include 
> +#endif
>  
>  /* XXX: fd_read_poll should be suppressed, but an API change is
> necessary in the character devices to suppress fd_can_read(). */
> @@ -113,3 +117,92 @@ void qemu_process_fd_handlers2(void *ioh_record_list, 
> const fd_set *rfds,
>  }
>  }
>  }
> +
> +#ifndef _WIN32
> +void iothread_event_increment(int *io_thread_fd)

Please split the WIN32 stuff into it's own file, similar to oslib-posix
and oslib-win32.c etc.

> diff --git a/qemu-ioh.h b/qemu-ioh.h
> index 7c6e833..2c714a9 100644
> --- a/qemu-ioh.h
> +++ b/qemu-ioh.h
> @@ -31,4 +31,13 @@ void qemu_get_fdset2(void *ioh_record_list, int *nfds, 
> fd_set *rfds,
>  void qemu_process_fd_handlers2(void *ioh_record_list, const fd_set *rfds,
> const fd_set *wfds, const fd_set *xfds);
>  
> +
> +#ifndef _WIN32
> +void iothread_event_increment(int *io_thread_fd);
> +int iothread_event_init(int *io_thread_fd);
> +#else
> +int win32_event_init(HANDLE *qemu_event_handle);
> +void win32_event_increment(HANDLE *qemu_event_handle);
> +#endif

Can you not do something slightly nicer that allows for those to be the
same prototype for all users? Like define a event_handle_t?

> +
> +#ifndef _WIN32
> +static int io_thread_fd = -1;

Needs splitting into separate files too.

> diff --git a/qemu-tool.h b/qemu-tool.h
> new file mode 100644
> index 000..fd693cf
> --- /dev/null
> +++ b/qemu-tool.h
> @@ -0,0 +1,26 @@
> +#ifndef QEMU_TOOL_H
> +#define QEMU_TOOL_H
> +
> +#include "qemu-common.h"
> +
> +#ifdef CONFIG_EVENTFD
> +#include 
> +#endif
> +
> +typedef void VMStateDescription;
> +typedef int VMStateInfo;
> +
> +#ifndef _WIN32
> +void qemu_event_increment(void);
> +int qemu_event_init(void);
> +#else
> +int qemu_event_init(void);
> +void qemu_event_increment(void);
> +#endif

No matter how long I stare at those prototypes, I fail to see the
difference between the win32 and the posix version :)

Cheers,
Jes



[Qemu-devel] Re: [RFC][PATCH v6 03/23] Make qemu timers available for tools

2011-01-21 Thread Michael Roth

On 01/21/2011 10:30 AM, Jes Sorensen wrote:

On 01/17/11 14:14, Michael Roth wrote:

diff --git a/qemu-ioh.c b/qemu-ioh.c
index cc71470..001e7a2 100644
--- a/qemu-ioh.c
+++ b/qemu-ioh.c
@@ -22,7 +22,11 @@
   * THE SOFTWARE.
   */
  #include "qemu-ioh.h"
+#include "qemu-char.h"
  #include "qlist.h"
+#ifdef CONFIG_EVENTFD
+#include
+#endif

  /* XXX: fd_read_poll should be suppressed, but an API change is
 necessary in the character devices to suppress fd_can_read(). */
@@ -113,3 +117,92 @@ void qemu_process_fd_handlers2(void *ioh_record_list, 
const fd_set *rfds,
  }
  }
  }
+
+#ifndef _WIN32
+void iothread_event_increment(int *io_thread_fd)


Please split the WIN32 stuff into it's own file, similar to oslib-posix
and oslib-win32.c etc.


Will look into this, but qemu-ioh.c has common code too so we'd end up 
with qemu-ioh/qemu-ioh-posix/qemu-ioh-win2.c. We could alternatively 
have a "#ifndef _WIN32" around functions in qemu-ioh.c that would be 
replaced by win32-specific ones from qemu-ioh-win32. No strong 
preference either way, but sometimes I find navigating across too many 
files more annoying that #ifdefs, and there's not a whole lot in these.





diff --git a/qemu-ioh.h b/qemu-ioh.h
index 7c6e833..2c714a9 100644
--- a/qemu-ioh.h
+++ b/qemu-ioh.h
@@ -31,4 +31,13 @@ void qemu_get_fdset2(void *ioh_record_list, int *nfds, 
fd_set *rfds,
  void qemu_process_fd_handlers2(void *ioh_record_list, const fd_set *rfds,
 const fd_set *wfds, const fd_set *xfds);

+
+#ifndef _WIN32
+void iothread_event_increment(int *io_thread_fd);
+int iothread_event_init(int *io_thread_fd);
+#else
+int win32_event_init(HANDLE *qemu_event_handle);
+void win32_event_increment(HANDLE *qemu_event_handle);
+#endif


Can you not do something slightly nicer that allows for those to be the
same prototype for all users? Like define a event_handle_t?



Don't see why not.


+
+#ifndef _WIN32
+static int io_thread_fd = -1;


Needs splitting into separate files too.


diff --git a/qemu-tool.h b/qemu-tool.h
new file mode 100644
index 000..fd693cf
--- /dev/null
+++ b/qemu-tool.h
@@ -0,0 +1,26 @@
+#ifndef QEMU_TOOL_H
+#define QEMU_TOOL_H
+
+#include "qemu-common.h"
+
+#ifdef CONFIG_EVENTFD
+#include
+#endif
+
+typedef void VMStateDescription;
+typedef int VMStateInfo;
+
+#ifndef _WIN32
+void qemu_event_increment(void);
+int qemu_event_init(void);
+#else
+int qemu_event_init(void);
+void qemu_event_increment(void);
+#endif


No matter how long I stare at those prototypes, I fail to see the
difference between the win32 and the posix version :)


Heh, the ordering of course! :) Not sure how I missed this one.

The patch is pretty rough in general, I'll see what I can do about 
cleaning things up a bit.




Cheers,
Jes





[Qemu-devel] Re: [RFC][PATCH v6 03/23] Make qemu timers available for tools

2011-01-23 Thread Jes Sorensen
On 01/21/11 18:26, Michael Roth wrote:
> On 01/21/2011 10:30 AM, Jes Sorensen wrote:
>> On 01/17/11 14:14, Michael Roth wrote:
>>> diff --git a/qemu-ioh.c b/qemu-ioh.c
>>> index cc71470..001e7a2 100644
>>> --- a/qemu-ioh.c
>>> +++ b/qemu-ioh.c
>>> @@ -22,7 +22,11 @@
>>>* THE SOFTWARE.
>>>*/
>>>   #include "qemu-ioh.h"
>>> +#include "qemu-char.h"
>>>   #include "qlist.h"
>>> +#ifdef CONFIG_EVENTFD
>>> +#include
>>> +#endif
>>>
>>>   /* XXX: fd_read_poll should be suppressed, but an API change is
>>>  necessary in the character devices to suppress fd_can_read(). */
>>> @@ -113,3 +117,92 @@ void qemu_process_fd_handlers2(void
>>> *ioh_record_list, const fd_set *rfds,
>>>   }
>>>   }
>>>   }
>>> +
>>> +#ifndef _WIN32
>>> +void iothread_event_increment(int *io_thread_fd)
>>
>> Please split the WIN32 stuff into it's own file, similar to oslib-posix
>> and oslib-win32.c etc.
> 
> Will look into this, but qemu-ioh.c has common code too so we'd end up
> with qemu-ioh/qemu-ioh-posix/qemu-ioh-win2.c. We could alternatively
> have a "#ifndef _WIN32" around functions in qemu-ioh.c that would be
> replaced by win32-specific ones from qemu-ioh-win32. No strong
> preference either way, but sometimes I find navigating across too many
> files more annoying that #ifdefs, and there's not a whole lot in these.

No problem having the three files - it is far better than having
#ifdefs. Having the #ifndef that is overloaded by a win32 specific file
is bad, it will make it very confusing for anyone reading the code.

Cheers,
Jes