diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2009-06-01 21:31:03 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-06-01 21:40:42 -0400 |
commit | ea5cc87c63b49c133d15ec2911bb2e49e8124516 (patch) | |
tree | c775153302ace5846a8add4e4f7f0737595fb2a0 | |
parent | 229c4eedcedcdadf70411120ba34bc37554a74bd (diff) |
perf_counter tools: Add string.[ch]
Add hex conversion libraries. We are going to replace sscanf()
uses with them.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | Documentation/perf_counter/util/string.c | 34 | ||||
-rw-r--r-- | Documentation/perf_counter/util/string.h | 8 |
2 files changed, 42 insertions, 0 deletions
diff --git a/Documentation/perf_counter/util/string.c b/Documentation/perf_counter/util/string.c new file mode 100644 index 000000000000..ec33c0c7f4e2 --- /dev/null +++ b/Documentation/perf_counter/util/string.c | |||
@@ -0,0 +1,34 @@ | |||
1 | #include "string.h" | ||
2 | |||
3 | static int hex(char ch) | ||
4 | { | ||
5 | if ((ch >= '0') && (ch <= '9')) | ||
6 | return ch - '0'; | ||
7 | if ((ch >= 'a') && (ch <= 'f')) | ||
8 | return ch - 'a' + 10; | ||
9 | if ((ch >= 'A') && (ch <= 'F')) | ||
10 | return ch - 'A' + 10; | ||
11 | return -1; | ||
12 | } | ||
13 | |||
14 | /* | ||
15 | * While we find nice hex chars, build a long_val. | ||
16 | * Return number of chars processed. | ||
17 | */ | ||
18 | int hex2u64(const char *ptr, __u64 *long_val) | ||
19 | { | ||
20 | const char *p = ptr; | ||
21 | *long_val = 0; | ||
22 | |||
23 | while (*p) { | ||
24 | const int hex_val = hex(*p); | ||
25 | |||
26 | if (hex_val < 0) | ||
27 | break; | ||
28 | |||
29 | *long_val = (*long_val << 4) | hex_val; | ||
30 | p++; | ||
31 | } | ||
32 | |||
33 | return p - ptr; | ||
34 | } | ||
diff --git a/Documentation/perf_counter/util/string.h b/Documentation/perf_counter/util/string.h new file mode 100644 index 000000000000..72812c1c9a7a --- /dev/null +++ b/Documentation/perf_counter/util/string.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef _PERF_STRING_H_ | ||
2 | #define _PERF_STRING_H_ | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | int hex2u64(const char *ptr, __u64 *val); | ||
7 | |||
8 | #endif | ||