Message ID | 20210416135543.20382-5-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | extern "C" overhaul for C++ files | expand |
On 16/04/21 15:55, Peter Maydell wrote: > #ifdef _WIN32 > #include "sysemu/os-win32.h" > #endif > @@ -143,6 +139,10 @@ extern "C" { > #include "sysemu/os-posix.h" > #endif > > +#ifdef __cplusplus > +extern "C" { > +#endif > + > #include "qemu/typedefs.h" > > /* > diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h > index 629c8c648b7..2edf33658a4 100644 > --- a/include/sysemu/os-posix.h > +++ b/include/sysemu/os-posix.h > @@ -38,6 +38,10 @@ > #include <sys/sysmacros.h> > #endif > > +#ifdef __cplusplus > +extern "C" { > +#endif > + include/sysemu/ is also the wrong directory to have these headers, which probably should be split into a qemu/osdep-{win32,posix}.h part and an actual sysemu/os-{win32,posix}.h part. But this is good enough for now. Paolo
On Fri, 16 Apr 2021 at 17:25, Paolo Bonzini <pbonzini@redhat.com> wrote: > > On 16/04/21 15:55, Peter Maydell wrote: > > #ifdef _WIN32 > > #include "sysemu/os-win32.h" > > #endif > > @@ -143,6 +139,10 @@ extern "C" { > > #include "sysemu/os-posix.h" > > #endif > > > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > #include "qemu/typedefs.h" > > > > /* > > diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h > > index 629c8c648b7..2edf33658a4 100644 > > --- a/include/sysemu/os-posix.h > > +++ b/include/sysemu/os-posix.h > > @@ -38,6 +38,10 @@ > > #include <sys/sysmacros.h> > > #endif > > > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > include/sysemu/ is also the wrong directory to have these headers, which > probably should be split into a qemu/osdep-{win32,posix}.h part and an > actual sysemu/os-{win32,posix}.h part. But this is good enough for now. Yeah, I thought as I was writing this that it was odd that these are in sysemu/ but osdep itself is in qemu/... thanks -- PMM
On 4/16/21 6:55 AM, Peter Maydell wrote: > Both os-win32.h and os-posix.h include system header files. Instead > of having osdep.h include them inside its 'extern "C"' block, make > these headers handle that themselves, so that we don't include the > system headers inside 'extern "C"'. > > This doesn't fix any current problems, but it's conceptually the > right way to handle system headers. > > Signed-off-by: Peter Maydell<peter.maydell@linaro.org> > --- > include/qemu/osdep.h | 8 ++++---- > include/sysemu/os-posix.h | 8 ++++++++ > include/sysemu/os-win32.h | 8 ++++++++ > 3 files changed, 20 insertions(+), 4 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index cb2a07e472e..4c6f2390be4 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -131,10 +131,6 @@ QEMU_EXTERN_C int daemon(int, int); */ #include "glib-compat.h" -#ifdef __cplusplus -extern "C" { -#endif - #ifdef _WIN32 #include "sysemu/os-win32.h" #endif @@ -143,6 +139,10 @@ extern "C" { #include "sysemu/os-posix.h" #endif +#ifdef __cplusplus +extern "C" { +#endif + #include "qemu/typedefs.h" /* diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h index 629c8c648b7..2edf33658a4 100644 --- a/include/sysemu/os-posix.h +++ b/include/sysemu/os-posix.h @@ -38,6 +38,10 @@ #include <sys/sysmacros.h> #endif +#ifdef __cplusplus +extern "C" { +#endif + void os_set_line_buffering(void); void os_set_proc_name(const char *s); void os_setup_signal_handling(void); @@ -92,4 +96,8 @@ static inline void qemu_funlockfile(FILE *f) funlockfile(f); } +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h index 5346d51e890..43f569b5c21 100644 --- a/include/sysemu/os-win32.h +++ b/include/sysemu/os-win32.h @@ -30,6 +30,10 @@ #include <windows.h> #include <ws2tcpip.h> +#ifdef __cplusplus +extern "C" { +#endif + #if defined(_WIN64) /* On w64, setjmp is implemented by _setjmp which needs a second parameter. * If this parameter is NULL, longjump does no stack unwinding. @@ -194,4 +198,8 @@ ssize_t qemu_recv_wrap(int sockfd, void *buf, size_t len, int flags); ssize_t qemu_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags, struct sockaddr *addr, socklen_t *addrlen); +#ifdef __cplusplus +} +#endif + #endif
Both os-win32.h and os-posix.h include system header files. Instead of having osdep.h include them inside its 'extern "C"' block, make these headers handle that themselves, so that we don't include the system headers inside 'extern "C"'. This doesn't fix any current problems, but it's conceptually the right way to handle system headers. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- include/qemu/osdep.h | 8 ++++---- include/sysemu/os-posix.h | 8 ++++++++ include/sysemu/os-win32.h | 8 ++++++++ 3 files changed, 20 insertions(+), 4 deletions(-)