1#include <stdio.h>
2#include <string.h>
3#include <inttypes.h>
4#include <endian.h>
5#include "event-parse.h"
6
7/*
8 * From glibc endian.h, for older systems where it is not present, e.g.: RHEL5,
9 * Fedora6.
10 */
11#ifndef le16toh
12# if __BYTE_ORDER == __LITTLE_ENDIAN
13#  define le16toh(x) (x)
14# else
15#  define le16toh(x) __bswap_16 (x)
16# endif
17#endif
18
19
20static unsigned long long
21process___le16_to_cpup(struct trace_seq *s, unsigned long long *args)
22{
23	uint16_t *val = (uint16_t *) (unsigned long) args[0];
24	return val ? (long long) le16toh(*val) : 0;
25}
26
27int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
28{
29	pevent_register_print_function(pevent,
30				       process___le16_to_cpup,
31				       PEVENT_FUNC_ARG_INT,
32				       "__le16_to_cpup",
33				       PEVENT_FUNC_ARG_PTR,
34				       PEVENT_FUNC_ARG_VOID);
35	return 0;
36}
37
38void PEVENT_PLUGIN_UNLOADER(struct pevent *pevent)
39{
40	pevent_unregister_print_function(pevent, process___le16_to_cpup,
41					 "__le16_to_cpup");
42}
43