diff options
| author | David S. Miller <davem@davemloft.net> | 2009-06-15 03:02:23 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-06-15 03:02:23 -0700 | 
| commit | 9cbc1cb8cd46ce1f7645b9de249b2ce8460129bb (patch) | |
| tree | 8d104ec2a459346b99413b0b77421ca7b9936c1a /tools/perf/util/string.c | |
| parent | ca44d6e60f9de26281fda203f58b570e1748c015 (diff) | |
| parent | 45e3e1935e2857c54783291107d33323b3ef33c8 (diff) | |
| download | olio-linux-3.10-9cbc1cb8cd46ce1f7645b9de249b2ce8460129bb.tar.xz olio-linux-3.10-9cbc1cb8cd46ce1f7645b9de249b2ce8460129bb.zip  | |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
	Documentation/feature-removal-schedule.txt
	drivers/scsi/fcoe/fcoe.c
	net/core/drop_monitor.c
	net/core/net-traces.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..ec33c0c7f4e --- /dev/null +++ b/tools/perf/util/string.c @@ -0,0 +1,34 @@ +#include "string.h" + +static int hex(char ch) +{ +	if ((ch >= '0') && (ch <= '9')) +		return ch - '0'; +	if ((ch >= 'a') && (ch <= 'f')) +		return ch - 'a' + 10; +	if ((ch >= 'A') && (ch <= 'F')) +		return ch - 'A' + 10; +	return -1; +} + +/* + * While we find nice hex chars, build a long_val. + * Return number of chars processed. + */ +int hex2u64(const char *ptr, __u64 *long_val) +{ +	const char *p = ptr; +	*long_val = 0; + +	while (*p) { +		const int hex_val = hex(*p); + +		if (hex_val < 0) +			break; + +		*long_val = (*long_val << 4) | hex_val; +		p++; +	} + +	return p - ptr; +}  |