Message ID | 20240410234740.994001-3-stefano.stabellini@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | xen/public: use fixed-size integers | expand |
On 11.04.2024 01:47, Stefano Stabellini wrote: > The goal is to use only fixed-size integers in public headers, such as > uint32_t and uint64_t. > > However, there are cases where the ABI changes depending on the > architecture. In those cases, adding #ifdefs might be the clearest > solution but it is also cumbersome. We already define a xen_ulong_t type > which is widely used in public headers and it is defined differently by > architecture. > > Instead of unsigned long, use xen_ulong_t in public headers: > - it makes it clearer that size might change by arch > - it gets us closer to the goal of no unfixed-size integers in public > headers > > Note that unsigned long and xen_ulong_t are the same thing on x86 (both > 32-bit and 64-bit) but they differ on all other arches. However, all > the interfaces with xen_ulong_t or unsigned long are x86-only interfaces > today. Thus, this patch doesn't introduce any ABI or semantic changes. And it is presumably because of this that the conversion wasn't done for these when it was done elsewhere for the Arm port, many years ago. > Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> Acked-by: Jan Beulich <jbeulich@suse.com> Jan
diff --git a/xen/include/public/kexec.h b/xen/include/public/kexec.h index 8d2a0ef697..89164094d9 100644 --- a/xen/include/public/kexec.h +++ b/xen/include/public/kexec.h @@ -78,10 +78,10 @@ typedef struct xen_kexec_image { #if defined(__i386__) || defined(__x86_64__) - unsigned long page_list[KEXEC_XEN_NO_PAGES]; + xen_ulong_t page_list[KEXEC_XEN_NO_PAGES]; #endif - unsigned long indirection_page; - unsigned long start_address; + xen_ulong_t indirection_page; + xen_ulong_t start_address; } xen_kexec_image_t; /* @@ -145,8 +145,8 @@ typedef struct xen_kexec_load_v1 { typedef struct xen_kexec_range { int32_t range; int32_t nr; - unsigned long size; - unsigned long start; + xen_ulong_t size; + xen_ulong_t start; } xen_kexec_range_t; #if __XEN_INTERFACE_VERSION__ >= 0x00040400 diff --git a/xen/include/public/nmi.h b/xen/include/public/nmi.h index 5900703f5f..c8c0ddafc2 100644 --- a/xen/include/public/nmi.h +++ b/xen/include/public/nmi.h @@ -43,8 +43,8 @@ */ #define XENNMI_register_callback 0 struct xennmi_callback { - unsigned long handler_address; - unsigned long pad; + xen_ulong_t handler_address; + xen_ulong_t pad; }; typedef struct xennmi_callback xennmi_callback_t; DEFINE_XEN_GUEST_HANDLE(xennmi_callback_t); diff --git a/xen/include/public/physdev.h b/xen/include/public/physdev.h index 03ccf86618..5bbb809fae 100644 --- a/xen/include/public/physdev.h +++ b/xen/include/public/physdev.h @@ -109,7 +109,7 @@ DEFINE_XEN_GUEST_HANDLE(physdev_set_iobitmap_t); #define PHYSDEVOP_apic_write 9 struct physdev_apic { /* IN */ - unsigned long apic_physbase; + xen_ulong_t apic_physbase; uint32_t reg; /* IN or OUT */ uint32_t value;
The goal is to use only fixed-size integers in public headers, such as uint32_t and uint64_t. However, there are cases where the ABI changes depending on the architecture. In those cases, adding #ifdefs might be the clearest solution but it is also cumbersome. We already define a xen_ulong_t type which is widely used in public headers and it is defined differently by architecture. Instead of unsigned long, use xen_ulong_t in public headers: - it makes it clearer that size might change by arch - it gets us closer to the goal of no unfixed-size integers in public headers Note that unsigned long and xen_ulong_t are the same thing on x86 (both 32-bit and 64-bit) but they differ on all other arches. However, all the interfaces with xen_ulong_t or unsigned long are x86-only interfaces today. Thus, this patch doesn't introduce any ABI or semantic changes. Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> --- xen/include/public/kexec.h | 10 +++++----- xen/include/public/nmi.h | 4 ++-- xen/include/public/physdev.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-)