xen: arm: include public/xen.h in foreign interface checking

mkheader.py doesn't cope with
	struct 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. This cannot cope
with #defines between the #ifdef and the struct definitions, so move
MAX_GUEST_CMDLINE to be next to its only usage.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
Ian Campbell committed 2013-08-20 15:41:01 +01:00
1 parent 6bba043afe
commit f07cb646ff
6 files changed
+24 -16

No files matched your search

+2 -2
View File
@@ -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
+9 -5
View File
@@ -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";
+5 -5
View File
@@ -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
+2
View File
@@ -19,6 +19,8 @@ defines = [ "__arm__",
"__i386__",
"__x86_64__",
"XEN_HAVE_PV_GUEST_ENTRY",
# arm
# None
+5 -3
View File
@@ -257,14 +257,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)*/
+1 -1
View File
@@ -717,7 +717,6 @@ typedef struct shared_info shared_info_t;
* pages preceding pt_base and mark them as reserved/unused.
*/
#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>". */
@@ -744,6 +743,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. */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.