/* Copyright (c) 2015, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _TRACER_PKT_H_ #define _TRACER_PKT_H_ #include #include #ifdef CONFIG_TRACER_PKT /** * tracer_pkt_init() - initialize the tracer packet * @data: Pointer to the buffer to be initialized with a tracer * packet. * @data_len: Length of the buffer. * @client_event_cfg: Client-specific event configuration mask. * @glink_event_cfg: G-Link-specific event configuration mask. * @pkt_priv: Private/Cookie information to be added to the tracer * packet. * @pkt_priv_len: Length of the private data. * * This function is used to initialize a buffer with the tracer packet header. * The tracer packet header includes the data as passed by the elements in the * parameters. * * Return: 0 on success, standard Linux error codes on failure. */ int tracer_pkt_init(void *data, size_t data_len, uint16_t client_event_cfg, uint32_t glink_event_cfg, void *pkt_priv, size_t pkt_priv_len); /** * tracer_pkt_set_event_cfg() - set the event configuration mask in the tracer * packet * @data: Pointer to the buffer to be initialized with event * configuration mask. * @client_event_cfg: Client-specific event configuration mask. * @glink_event_cfg: G-Link-specific event configuration mask. * * This function is used to initialize a buffer with the event configuration * mask as passed by the elements in the parameters. * * Return: 0 on success, standard Linux error codes on failure. */ int tracer_pkt_set_event_cfg(void *data, uint16_t client_event_cfg, uint32_t glink_event_cfg); /** * tracer_pkt_log_event() - log an event specific to the tracer packet * @data: Pointer to the buffer containing tracer packet. * @event_id: Event ID to be logged. * * This function is used to log an event specific to the tracer packet. * The event is logged either into the tracer packet itself or a different * tracing mechanism as configured. * * Return: 0 on success, standard Linux error codes on failure. */ int tracer_pkt_log_event(void *data, uint32_t event_id); /** * tracer_pkt_calc_hex_dump_size() - calculate the hex dump size of a tracer * packet * @data: Pointer to the buffer containing tracer packet. * @data_len: Length of the tracer packet buffer. * * This function is used to calculate the length of the buffer required to * hold the hex dump of the tracer packet. * * Return: 0 on success, standard Linux error codes on failure. */ size_t tracer_pkt_calc_hex_dump_size(void *data, size_t data_len); /** * tracer_pkt_hex_dump() - hex dump the tracer packet into a buffer * @buf: Buffer to contain the hex dump of the tracer packet. * @buf_len: Length of the hex dump buffer. * @data: Buffer containing the tracer packet. * @data_len: Length of the buffer containing the tracer packet. * * This function is used to dump the contents of the tracer packet into * a buffer in a specific hexadecimal format. The hex dump buffer can then * be dumped through debugfs. * * Return: 0 on success, standard Linux error codes on failure. */ int tracer_pkt_hex_dump(void *buf, size_t buf_len, void *data, size_t data_len); #else static inline int tracer_pkt_init(void *data, size_t data_len, uint16_t client_event_cfg, uint32_t glink_event_cfg, void *pkt_priv, size_t pkt_priv_len) { return -EOPNOTSUPP; } static inline int tracer_pkt_set_event_cfg(uint16_t client_event_cfg, uint32_t glink_event_cfg) { return -EOPNOTSUPP; } static inline int tracer_pkt_log_event(void *data, uint32_t event_id) { return -EOPNOTSUPP; } static inline size_t tracer_pkt_calc_hex_dump_size(void *data, size_t data_len) { return -EOPNOTSUPP; } static inline int tracer_pkt_hex_dump(void *buf, size_t buf_len, void *data, size_t data_len) { return -EOPNOTSUPP; } #endif /* CONFIG_TRACER_PKT */ #endif /* _TRACER_PKT_H_ */