diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:55:21 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:55:21 -0400 |
commit | bbb20089a3275a19e475dbc21320c3742e3ca423 (patch) | |
tree | 216fdc1cbef450ca688135c5b8969169482d9a48 /tools/perf/util/string.c | |
parent | 3e48e656903e9fd8bc805c6a2c4264d7808d315b (diff) | |
parent | 657a77fa7284d8ae28dfa48f1dc5d919bf5b2843 (diff) |
Merge branch 'dmaengine' into async-tx-next
Conflicts:
crypto/async_tx/async_xor.c
drivers/dma/ioat/dma_v2.h
drivers/dma/ioat/pci.c
drivers/md/raid5.c
Diffstat (limited to 'tools/perf/util/string.c')
-rw-r--r-- | tools/perf/util/string.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c new file mode 100644 index 00000000000..c93eca9a7be --- /dev/null +++ b/tools/perf/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 | } | ||