Skip to content

Commit

Permalink
xen/public: replace typeof() with __typeof__()
Browse files Browse the repository at this point in the history
typeof() is available in Xen's build environment, which uses Xen's
compiler.  As these headers are public, they need strict standards
conformance.  Only __typeof__() is officially standardized.

A compiler in standards conformance mode should report:

warning: implicit declaration of function 'typeof' is invalid in C99
[-Wimplicit-function-declaration]

(this has been observed with FreeBSD's kernel build environment)

Based-on-patch-by: Julien Grall <julien@xen.org>, Sun Oct 4 20:33:04 2015 +0100
Signed-off-by: Elliott Mitchell <ehem+xen@m5p.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: Juergen Gross <jgross@suse.com>
Release-Acked-by: Ian Jackson <iwj@xenproject.org>
  • Loading branch information
ehem authored and Julien Grall committed Mar 11, 2021
1 parent 1fff444 commit 935e083
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion xen/include/public/arch-arm.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@
#define XEN_GUEST_HANDLE_PARAM(name) __guest_handle_ ## name
#define set_xen_guest_handle_raw(hnd, val) \
do { \
typeof(&(hnd)) _sxghr_tmp = &(hnd); \
__typeof__(&(hnd)) _sxghr_tmp = &(hnd); \
_sxghr_tmp->q = 0; \
_sxghr_tmp->p = val; \
} while ( 0 )
Expand Down
4 changes: 2 additions & 2 deletions xen/include/public/hvm/save.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ struct hvm_save_descriptor {
struct __HVM_SAVE_TYPE_##_x { _type t; char c[_code]; char cpt[1];}
#endif

#define HVM_SAVE_TYPE(_x) typeof (((struct __HVM_SAVE_TYPE_##_x *)(0))->t)
#define HVM_SAVE_TYPE(_x) __typeof__ (((struct __HVM_SAVE_TYPE_##_x *)(0))->t)
#define HVM_SAVE_LENGTH(_x) (sizeof (HVM_SAVE_TYPE(_x)))
#define HVM_SAVE_CODE(_x) (sizeof (((struct __HVM_SAVE_TYPE_##_x *)(0))->c))

#ifdef __XEN__
# define HVM_SAVE_TYPE_COMPAT(_x) typeof (((struct __HVM_SAVE_TYPE_COMPAT_##_x *)(0))->t)
# define HVM_SAVE_TYPE_COMPAT(_x) __typeof__ (((struct __HVM_SAVE_TYPE_COMPAT_##_x *)(0))->t)
# define HVM_SAVE_LENGTH_COMPAT(_x) (sizeof (HVM_SAVE_TYPE_COMPAT(_x)))

# define HVM_SAVE_HAS_COMPAT(_x) (sizeof (((struct __HVM_SAVE_TYPE_##_x *)(0))->cpt)-1)
Expand Down
2 changes: 1 addition & 1 deletion xen/include/public/io/ring.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ typedef struct __name##_back_ring __name##_back_ring_t
*/
#define RING_COPY_REQUEST(_r, _idx, _req) do { \
/* Use volatile to force the copy into _req. */ \
*(_req) = *(volatile typeof(_req))RING_GET_REQUEST(_r, _idx); \
*(_req) = *(volatile __typeof__(_req))RING_GET_REQUEST(_r, _idx); \
} while (0)

#define RING_GET_RESPONSE(_r, _idx) \
Expand Down

0 comments on commit 935e083

Please sign in to comment.