blob: 3d43b56a6c98436aefc37144e0b109a6125d03d7 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Jiri Olsa94371472013-12-03 14:09:35 +01002#include <stdio.h>
3#include <string.h>
4#include <inttypes.h>
5#include <endian.h>
6#include "event-parse.h"
7
Arnaldo Carvalho de Melob390d852015-05-14 12:28:11 -03008/*
9 * From glibc endian.h, for older systems where it is not present, e.g.: RHEL5,
10 * Fedora6.
11 */
12#ifndef le16toh
13# if __BYTE_ORDER == __LITTLE_ENDIAN
14# define le16toh(x) (x)
15# else
16# define le16toh(x) __bswap_16 (x)
17# endif
18#endif
19
20
Jiri Olsa94371472013-12-03 14:09:35 +010021static unsigned long long
Steven Rostedt24eda082014-06-12 19:44:20 -040022process___le16_to_cpup(struct trace_seq *s, unsigned long long *args)
Jiri Olsa94371472013-12-03 14:09:35 +010023{
Mark Rutland0e9e79a2014-01-15 10:44:07 +000024 uint16_t *val = (uint16_t *) (unsigned long) args[0];
Jiri Olsa94371472013-12-03 14:09:35 +010025 return val ? (long long) le16toh(*val) : 0;
26}
27
Tzvetomir Stoyanov047ff222019-04-01 12:43:17 -040028int TEP_PLUGIN_LOADER(struct tep_handle *tep)
Jiri Olsa94371472013-12-03 14:09:35 +010029{
Tzvetomir Stoyanov047ff222019-04-01 12:43:17 -040030 tep_register_print_function(tep,
Tzvetomir Stoyanov (VMware)b843e9c2018-08-08 14:03:02 -040031 process___le16_to_cpup,
32 TEP_FUNC_ARG_INT,
33 "__le16_to_cpup",
34 TEP_FUNC_ARG_PTR,
35 TEP_FUNC_ARG_VOID);
Jiri Olsa94371472013-12-03 14:09:35 +010036 return 0;
37}
Namhyung Kim6024cf32014-01-16 11:31:15 +090038
Tzvetomir Stoyanov047ff222019-04-01 12:43:17 -040039void TEP_PLUGIN_UNLOADER(struct tep_handle *tep)
Namhyung Kim6024cf32014-01-16 11:31:15 +090040{
Tzvetomir Stoyanov047ff222019-04-01 12:43:17 -040041 tep_unregister_print_function(tep, process___le16_to_cpup,
Tzvetomir Stoyanov (VMware)b843e9c2018-08-08 14:03:02 -040042 "__le16_to_cpup");
Namhyung Kim6024cf32014-01-16 11:31:15 +090043}