hvmloader: Add 'ctype' infrastructure
authorPaul Durrant <paul.durrant@citrix.com>
Wed, 30 Nov 2011 14:50:45 +0000 (06:50 -0800)
committerPaul Durrant <paul.durrant@citrix.com>
Wed, 30 Nov 2011 14:50:45 +0000 (06:50 -0800)
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
tools/firmware/hvmloader/Makefile
tools/firmware/hvmloader/ctype.c [new file with mode: 0644]
tools/firmware/hvmloader/ctype.h [new file with mode: 0644]
tools/firmware/hvmloader/util.c
tools/firmware/hvmloader/util.h

index 11e8f1c31667fa7ba2b94902cc98f20502d9e506..ec33155128a6b9224a1bd3cf40cb83ec4a7cb417 100644 (file)
@@ -30,7 +30,7 @@ CFLAGS += $(CFLAGS_xeninclude)
 
 OBJS  = hvmloader.o mp_tables.o util.o smbios.o 
 OBJS += 32bitbios_support.o smp.o cacheattr.o xenbus.o
-OBJS += e820.o pci.o pir.o
+OBJS += e820.o pci.o pir.o ctype.o
 ifeq ($(debug),y)
 OBJS += tests.o
 endif
diff --git a/tools/firmware/hvmloader/ctype.c b/tools/firmware/hvmloader/ctype.c
new file mode 100644 (file)
index 0000000..d369762
--- /dev/null
@@ -0,0 +1,27 @@
+#include "ctype.h"
+
+const unsigned char _ctype[] = {
+_C,_C,_C,_C,_C,_C,_C,_C,                        /* 0-7 */
+_C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C,         /* 8-15 */
+_C,_C,_C,_C,_C,_C,_C,_C,                        /* 16-23 */
+_C,_C,_C,_C,_C,_C,_C,_C,                        /* 24-31 */
+_S|_SP,_P,_P,_P,_P,_P,_P,_P,                    /* 32-39 */
+_P,_P,_P,_P,_P,_P,_P,_P,                        /* 40-47 */
+_D,_D,_D,_D,_D,_D,_D,_D,                        /* 48-55 */
+_D,_D,_P,_P,_P,_P,_P,_P,                        /* 56-63 */
+_P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U,      /* 64-71 */
+_U,_U,_U,_U,_U,_U,_U,_U,                        /* 72-79 */
+_U,_U,_U,_U,_U,_U,_U,_U,                        /* 80-87 */
+_U,_U,_U,_P,_P,_P,_P,_P,                        /* 88-95 */
+_P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L,      /* 96-103 */
+_L,_L,_L,_L,_L,_L,_L,_L,                        /* 104-111 */
+_L,_L,_L,_L,_L,_L,_L,_L,                        /* 112-119 */
+_L,_L,_L,_P,_P,_P,_P,_C,                        /* 120-127 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,                /* 128-143 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,                /* 144-159 */
+_S|_SP,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,   /* 160-175 */
+_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,       /* 176-191 */
+_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,       /* 192-207 */
+_U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L,       /* 208-223 */
+_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,       /* 224-239 */
+_L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L};      /* 240-255 */
diff --git a/tools/firmware/hvmloader/ctype.h b/tools/firmware/hvmloader/ctype.h
new file mode 100644 (file)
index 0000000..3ff1bc9
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef __HVMLOADER_CTYPE_H__
+#define __HVMLOADER_CTYPE_H__
+
+#define _U      0x01    /* upper */
+#define _L      0x02    /* lower */
+#define _D      0x04    /* digit */
+#define _C      0x08    /* cntrl */
+#define _P      0x10    /* punct */
+#define _S      0x20    /* white space (space/lf/tab) */
+#define _X      0x40    /* hex digit */
+#define _SP     0x80    /* hard space (0x20) */
+
+extern const unsigned char _ctype[];
+
+#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
+
+#define isalnum(c)      ((__ismask(c)&(_U|_L|_D)) != 0)
+#define isalpha(c)      ((__ismask(c)&(_U|_L)) != 0)
+#define iscntrl(c)      ((__ismask(c)&(_C)) != 0)
+#define isdigit(c)      ((__ismask(c)&(_D)) != 0)
+#define isgraph(c)      ((__ismask(c)&(_P|_U|_L|_D)) != 0)
+#define islower(c)      ((__ismask(c)&(_L)) != 0)
+#define isprint(c)      ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
+#define ispunct(c)      ((__ismask(c)&(_P)) != 0)
+#define isspace(c)      ((__ismask(c)&(_S)) != 0)
+#define isupper(c)      ((__ismask(c)&(_U)) != 0)
+#define isxdigit(c)     ((__ismask(c)&(_D|_X)) != 0)
+
+#endif /* __HVMLOADER_CTYPE_H__ */
index c2ba855c4a4ab0926406beef16f006aea3be8cf2..1bad9bcf09bfbc30d5f11dea0c9677636d3bb0a6 100644 (file)
@@ -21,6 +21,7 @@
 #include "util.h"
 #include "config.h"
 #include "hypercall.h"
+#include "ctype.h"
 #include <stdint.h>
 #include <xen/xen.h>
 #include <xen/memory.h>
index ac2b0d33d99ae0902a662c71e0c73b27ee8277d9..fa73ba7a38c5b9066abf4fcd5272d445a12cd20b 100644 (file)
@@ -225,8 +225,6 @@ void perform_tests(void);
 #define perform_tests() ((void)0)
 #endif
 
-#define isdigit(c) ((c) >= '0' && (c) <= '9')
-
 extern char _start[], _end[];
 
 #endif /* __HVMLOADER_UTIL_H__ */