mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
229c4eedce
commit
ea5cc87c63
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef _PERF_STRING_H_
|
||||
#define _PERF_STRING_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
int hex2u64(const char *ptr, __u64 *val);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue