aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-11-25 05:55:43 -0500
committerJohannes Berg <johannes@sipsolutions.net>2009-11-25 06:16:13 -0500
commitcd5a5a4d1600b0df073f47c899173f585fd7698c (patch)
treeacdba66d232a51b067be721fa42a9a414d90b2a7
parentd1c3ee02de911cc987df1cee8644ac4b78a61427 (diff)
introduce pevent_read_number_field()
This helper function allows reading a number from a variable size field, e.g. to account for architecture differences of pointer lengths. Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
-rw-r--r--parse-events.c15
-rw-r--r--parse-events.h2
2 files changed, 17 insertions, 0 deletions
diff --git a/parse-events.c b/parse-events.c
index 4acb56f..48f29d3 100644
--- a/parse-events.c
+++ b/parse-events.c
@@ -2092,6 +2092,21 @@ unsigned long long pevent_read_number(void *ptr, int size)
2092 } 2092 }
2093} 2093}
2094 2094
2095int pevent_read_number_field(struct format_field *field, const void *data,
2096 unsigned long long *value)
2097{
2098 switch (field->size) {
2099 case 1:
2100 case 2:
2101 case 4:
2102 case 8:
2103 *value = pevent_read_number(data + field->offset, field->size);
2104 return 0;
2105 default:
2106 return -1;
2107 }
2108}
2109
2095static int get_common_info(const char *type, int *offset, int *size) 2110static int get_common_info(const char *type, int *offset, int *size)
2096{ 2111{
2097 struct event *event; 2112 struct event *event;
diff --git a/parse-events.h b/parse-events.h
index 55621e4..c0dbc60 100644
--- a/parse-events.h
+++ b/parse-events.h
@@ -302,6 +302,8 @@ int pevent_register_event_handler(int id, char *sys_name, char *event_name,
302struct format_field *pevent_find_field(struct event *event, const char *name); 302struct format_field *pevent_find_field(struct event *event, const char *name);
303const char *pevent_find_function(unsigned long long addr); 303const char *pevent_find_function(unsigned long long addr);
304unsigned long long pevent_read_number(void *ptr, int size); 304unsigned long long pevent_read_number(void *ptr, int size);
305int pevent_read_number_field(struct format_field *field, const void *data,
306 unsigned long long *value);
305 307
306 308
307/* for debugging */ 309/* for debugging */