aboutsummaryrefslogtreecommitdiffstats
path: root/tools/include/xen-foreign/mkchecker.py
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-01-27 17:25:56 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-01-27 17:25:56 +0000
commit21ffff5e7f5ac0a54c5b79ff0734ab12b706eb9e (patch)
treee808043ee460e80919672ddf4d04ed8c08d8b5fb /tools/include/xen-foreign/mkchecker.py
parentdb52d0daebd357af6b0aba80026b9745459a596a (diff)
downloadxen-21ffff5e7f5ac0a54c5b79ff0734ab12b706eb9e.tar.gz
xen-21ffff5e7f5ac0a54c5b79ff0734ab12b706eb9e.tar.bz2
xen-21ffff5e7f5ac0a54c5b79ff0734ab12b706eb9e.zip
Move remaining xen/include/public/foreign files to tools/include/xen-foreign
Signed-off-by: Keir Fraser <keir.fraser@citrix.com> --HG-- rename : xen/include/public/foreign/mkchecker.py => tools/include/xen-foreign/mkchecker.py rename : xen/include/public/foreign/mkheader.py => tools/include/xen-foreign/mkheader.py rename : xen/include/public/foreign/reference.size => tools/include/xen-foreign/reference.size rename : xen/include/public/foreign/structs.py => tools/include/xen-foreign/structs.py
Diffstat (limited to 'tools/include/xen-foreign/mkchecker.py')
-rw-r--r--tools/include/xen-foreign/mkchecker.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/include/xen-foreign/mkchecker.py b/tools/include/xen-foreign/mkchecker.py
new file mode 100644
index 0000000000..66c17b19e9
--- /dev/null
+++ b/tools/include/xen-foreign/mkchecker.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+
+import sys;
+from structs import structs;
+
+# command line arguments
+outfile = sys.argv[1];
+archs = sys.argv[2:];
+
+f = open(outfile, "w");
+f.write('''
+/*
+ * sanity checks for generated foreign headers:
+ * - verify struct sizes
+ *
+ * generated by %s -- DO NOT EDIT
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <inttypes.h>
+''');
+
+for a in archs:
+ f.write('#include "%s.h"\n' % a);
+
+f.write('int main(int argc, char *argv[])\n{\n');
+
+f.write('\tprintf("\\n");');
+f.write('printf("%-25s |", "structs");\n');
+for a in archs:
+ f.write('\tprintf("%%8s", "%s");\n' % a);
+f.write('\tprintf("\\n");');
+
+f.write('\tprintf("\\n");');
+for struct in structs:
+ f.write('\tprintf("%%-25s |", "%s");\n' % struct);
+ for a in archs:
+ s = struct + "_" + a;
+ f.write('#ifdef %s_has_no_%s\n' % (a, struct));
+ f.write('\tprintf("%8s", "-");\n');
+ f.write("#else\n");
+ f.write('\tprintf("%%8zd", sizeof(struct %s));\n' % s);
+ f.write("#endif\n");
+
+ f.write('\tprintf("\\n");\n\n');
+
+f.write('\tprintf("\\n");\n');
+f.write('\texit(0);\n');
+f.write('}\n');
+
+f.close();
+