Message ID | 1246288762.11688.39.camel@blaa (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Mark McLoughlin wrote: > Errors are: > > hw/pcspk.c:85: error: expected declaration specifiers or ‘...’ before ‘kvm_pit_state’ > hw/pcspk.c:87: error: expected declaration specifiers or ‘...’ before ‘kvm_pit_state’ > hw/pcspk.c: In function ‘pcspk_callback’: > hw/pcspk.c:114: error: too many arguments to function ‘kvm_get_pit_ch2’ > hw/pcspk.c: In function ‘pcspk_ioport_read’: > hw/pcspk.c:161: error: too many arguments to function ‘kvm_get_pit_ch2’ > hw/pcspk.c: In function ‘pcspk_ioport_write’: > hw/pcspk.c:171: error: storage size of ‘inkernel_state’ isn’t known > hw/pcspk.c:175: error: too many arguments to function ‘kvm_get_pit_ch2’ > hw/pcspk.c:185: error: too many arguments to function ‘kvm_set_pit_ch2’ > hw/pcspk.c:171: warning: unused variable ‘inkernel_state’ > > Signed-off-by: Mark McLoughlin <markmc@redhat.com> > Cc: Jan Kiszka <jan.kiszka@web.de> > --- > hw/pcspk.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/hw/pcspk.c b/hw/pcspk.c > index 9e1b59a..fb823d5 100644 > --- a/hw/pcspk.c > +++ b/hw/pcspk.c > @@ -80,11 +80,15 @@ static void kvm_set_pit_ch2(PITState *pit, > kvm_set_pit(kvm_context, inkernel_state); > } > } > -#else > +#elif defined(USE_KVM) > static inline void kvm_get_pit_ch2(PITState *pit, > kvm_pit_state *inkernel_state) { } > static inline void kvm_set_pit_ch2(PITState *pit, > kvm_pit_state *inkernel_state) { } > +#else > +typedef struct kvm_pit_state { char dummy; } kvm_pit_state; If you do this... > +#define kvm_get_pit_ch2(p, s) do { (void)s; } while(0) > +#define kvm_set_pit_ch2(p, s) do { (void)s; } while(0) you don't need this. > #endif > > static inline void generate_samples(PCSpkState *s) Basically that's band aid, but I could live with it for now. A cleaner approach would be to push the dummy type into (qemu-)kvm.h, ie. the file responsible for importing the kernel headers in the USE_KVM/CONFIG_KVM case. Note that qemu-kvm still breaks in the non-kvm build for other reasons here. I wanted to look into this but got detracted. Jan
diff --git a/hw/pcspk.c b/hw/pcspk.c index 9e1b59a..fb823d5 100644 --- a/hw/pcspk.c +++ b/hw/pcspk.c @@ -80,11 +80,15 @@ static void kvm_set_pit_ch2(PITState *pit, kvm_set_pit(kvm_context, inkernel_state); } } -#else +#elif defined(USE_KVM) static inline void kvm_get_pit_ch2(PITState *pit, kvm_pit_state *inkernel_state) { } static inline void kvm_set_pit_ch2(PITState *pit, kvm_pit_state *inkernel_state) { } +#else +typedef struct kvm_pit_state { char dummy; } kvm_pit_state; +#define kvm_get_pit_ch2(p, s) do { (void)s; } while(0) +#define kvm_set_pit_ch2(p, s) do { (void)s; } while(0) #endif static inline void generate_samples(PCSpkState *s)
Errors are: hw/pcspk.c:85: error: expected declaration specifiers or ‘...’ before ‘kvm_pit_state’ hw/pcspk.c:87: error: expected declaration specifiers or ‘...’ before ‘kvm_pit_state’ hw/pcspk.c: In function ‘pcspk_callback’: hw/pcspk.c:114: error: too many arguments to function ‘kvm_get_pit_ch2’ hw/pcspk.c: In function ‘pcspk_ioport_read’: hw/pcspk.c:161: error: too many arguments to function ‘kvm_get_pit_ch2’ hw/pcspk.c: In function ‘pcspk_ioport_write’: hw/pcspk.c:171: error: storage size of ‘inkernel_state’ isn’t known hw/pcspk.c:175: error: too many arguments to function ‘kvm_get_pit_ch2’ hw/pcspk.c:185: error: too many arguments to function ‘kvm_set_pit_ch2’ hw/pcspk.c:171: warning: unused variable ‘inkernel_state’ Signed-off-by: Mark McLoughlin <markmc@redhat.com> Cc: Jan Kiszka <jan.kiszka@web.de> --- hw/pcspk.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)