|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] xen: arm: include public/xen.h in foreign interface checking
ping? Also for the 3/3 patch.
On Wed, 2013-03-13 at 12:45 +0000, Ian Campbell wrote:
> mkheader.py doesn't cope with
> structr foo { };
> so add a newline.
>
> Define unsigned long and long to a non-existent type on ARM so as to catch
> their use.
>
> Teach mkheader.py to cope with structs which are ifdef'd.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: Jan Beulich <JBeulich@xxxxxxxx>
> Cc: Keir (Xen.org) <keir@xxxxxxx>
> Cc: Tim Deegan <tim@xxxxxxx>
> Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> ---
> v3: rework for ifdeffed instead of moved start_info.
> ---
> tools/include/xen-foreign/Makefile | 4 ++--
> tools/include/xen-foreign/mkheader.py | 14 +++++++++-----
> tools/include/xen-foreign/reference.size | 10 +++++-----
> tools/include/xen-foreign/structs.py | 2 ++
> xen/include/public/arch-arm.h | 8 +++++---
> xen/include/public/xen.h | 2 +-
> 6 files changed, 24 insertions(+), 16 deletions(-)
>
> diff --git a/tools/include/xen-foreign/Makefile
> b/tools/include/xen-foreign/Makefile
> index 8e0be83..06b844c 100644
> --- a/tools/include/xen-foreign/Makefile
> +++ b/tools/include/xen-foreign/Makefile
> @@ -22,10 +22,10 @@ check-headers: checker
> diff -u reference.size tmp.size
> rm tmp.size
>
> -arm32.h: mkheader.py structs.py $(ROOT)/arch-arm.h
> +arm32.h: mkheader.py structs.py $(ROOT)/arch-arm.h $(ROOT)/xen.h
> $(PYTHON) $< $* $@ $(filter %.h,$^)
>
> -arm64.h: mkheader.py structs.py $(ROOT)/arch-arm.h
> +arm64.h: mkheader.py structs.py $(ROOT)/arch-arm.h $(ROOT)/xen.h
> $(PYTHON) $< $* $@ $(filter %.h,$^)
>
> x86_32.h: mkheader.py structs.py $(ROOT)/arch-x86/xen-x86_32.h
> $(ROOT)/arch-x86/xen.h $(ROOT)/xen.h
> diff --git a/tools/include/xen-foreign/mkheader.py
> b/tools/include/xen-foreign/mkheader.py
> index b19292f..0504cb8 100644
> --- a/tools/include/xen-foreign/mkheader.py
> +++ b/tools/include/xen-foreign/mkheader.py
> @@ -18,8 +18,8 @@ footer = {};
>
> #arm
> inttypes["arm32"] = {
> - "unsigned long" : "uint32_t",
> - "long" : "uint32_t",
> + "unsigned long" : "__danger_unsigned_long_on_arm32",
> + "long" : "__danger_long_on_arm32",
> "xen_pfn_t" : "__align8__ uint64_t",
> "xen_ulong_t" : "__align8__ uint64_t",
> "uint64_t" : "__align8__ uint64_t",
> @@ -124,6 +124,8 @@ if arch in header:
> output += header[arch];
> output += "\n";
>
> +defined = {}
> +
> # add defines to output
> for line in re.findall("#define[^\n]+", input):
> for define in defines:
> @@ -131,6 +133,7 @@ for line in re.findall("#define[^\n]+", input):
> match = re.search(regex, line);
> if None == match:
> continue;
> + defined[define] = 1
> if define.upper()[0] == define[0]:
> replace = define + "_" + arch.upper();
> else:
> @@ -156,12 +159,13 @@ for union in unions:
>
> # add structs to output
> for struct in structs:
> - regex = "struct\s+%s\s*\{(.*?)\n\};" % struct;
> + regex = "(?:#ifdef ([A-Z_]+))?\nstruct\s+%s\s*\{(.*?)\n\};" % struct;
> match = re.search(regex, input, re.S)
> - if None == match:
> + if None == match or \
> + (match.group(1) is not None and match.group(1) not in defined):
> output += "#define %s_has_no_%s 1\n" % (arch, struct);
> else:
> - output += "struct %s_%s {%s\n};\n" % (struct, arch, match.group(1));
> + output += "struct %s_%s {%s\n};\n" % (struct, arch, match.group(2));
> output += "typedef struct %s_%s %s_%s_t;\n" % (struct, arch, struct,
> arch);
> output += "\n";
>
> diff --git a/tools/include/xen-foreign/reference.size
> b/tools/include/xen-foreign/reference.size
> index de36455..b3347b4 100644
> --- a/tools/include/xen-foreign/reference.size
> +++ b/tools/include/xen-foreign/reference.size
> @@ -6,9 +6,9 @@ trap_info | - - 8 16
> cpu_user_regs | - - 68 200
> vcpu_guest_core_regs | 304 304 - -
> vcpu_guest_context | 336 336 2800 5168
> -arch_vcpu_info | - - 24 16
> -vcpu_time_info | - - 32 32
> -vcpu_info | - - 64 64
> -arch_shared_info | - - 268 280
> -shared_info | - - 2584 3368
> +arch_vcpu_info | 0 0 24 16
> +vcpu_time_info | 32 32 32 32
> +vcpu_info | 48 48 64 64
> +arch_shared_info | 0 0 268 280
> +shared_info | 1088 1088 2584 3368
>
> diff --git a/tools/include/xen-foreign/structs.py
> b/tools/include/xen-foreign/structs.py
> index 0b33a77..476eb85 100644
> --- a/tools/include/xen-foreign/structs.py
> +++ b/tools/include/xen-foreign/structs.py
> @@ -19,6 +19,8 @@ defines = [ "__arm__",
> "__i386__",
> "__x86_64__",
>
> + "XEN_HAVE_PV_GUEST_ENTRY",
> +
> # arm
> # None
>
> diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
> index 3333399..8c63d4a 100644
> --- a/xen/include/public/arch-arm.h
> +++ b/xen/include/public/arch-arm.h
> @@ -184,14 +184,16 @@ struct vcpu_guest_context {
> typedef struct vcpu_guest_context vcpu_guest_context_t;
> DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
>
> -struct arch_vcpu_info { };
> +struct arch_vcpu_info {
> +};
> typedef struct arch_vcpu_info arch_vcpu_info_t;
>
> -struct arch_shared_info { };
> +struct arch_shared_info {
> +};
> typedef struct arch_shared_info arch_shared_info_t;
> typedef uint64_t xen_callback_t;
>
> -#endif /* ifndef __ASSEMBLY __ */
> +#endif
>
> /* PSR bits (CPSR, SPSR)*/
>
> diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
> index 0d92b1f..ef78846 100644
> --- a/xen/include/public/xen.h
> +++ b/xen/include/public/xen.h
> @@ -706,7 +706,6 @@ typedef struct shared_info shared_info_t;
> * extended by an extra 4MB to ensure this.
> */
> #ifdef XEN_HAVE_PV_GUEST_ENTRY
> -#define MAX_GUEST_CMDLINE 1024
> struct start_info {
> /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME. */
> char magic[32]; /* "xen-<version>-<platform>". */
> @@ -733,6 +732,7 @@ struct start_info {
> /* (PFN of pre-loaded module if */
> /* SIF_MOD_START_PFN set in flags). */
> unsigned long mod_len; /* Size (bytes) of pre-loaded module. */
> +#define MAX_GUEST_CMDLINE 1024
> int8_t cmd_line[MAX_GUEST_CMDLINE];
> /* The pfn range here covers both page table and p->m table frames. */
> unsigned long first_p2m_pfn;/* 1st pfn forming initial P->M table. */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |