121 lines
2.9 KiB
C
121 lines
2.9 KiB
C
|
/*
|
||
|
* Copyright (c) 2019 Intel corporation
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*/
|
||
|
|
||
|
#ifndef _TRACE_BUFFER_H
|
||
|
#define _TRACE_BUFFER_H
|
||
|
|
||
|
#include <stdbool.h>
|
||
|
#include <zephyr/types.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/**
|
||
|
* @brief Initialize tracing buffer.
|
||
|
*/
|
||
|
void tracing_buffer_init(void);
|
||
|
|
||
|
/**
|
||
|
* @brief Tracing buffer is empty or not.
|
||
|
*
|
||
|
* @return true if the ring buffer is empty, or false if not.
|
||
|
*/
|
||
|
bool tracing_buffer_is_empty(void);
|
||
|
|
||
|
/**
|
||
|
* @brief Get free space in the tracing buffer.
|
||
|
*
|
||
|
* @return Tracing buffer free space (in bytes).
|
||
|
*/
|
||
|
u32_t tracing_buffer_space_get(void);
|
||
|
|
||
|
/**
|
||
|
* @brief Get tracing buffer capacity (max size).
|
||
|
*
|
||
|
* @return Tracing buffer capacity (in bytes).
|
||
|
*/
|
||
|
u32_t tracing_buffer_capacity_get(void);
|
||
|
|
||
|
/**
|
||
|
* @brief Try to allocate buffer in the tracing buffer.
|
||
|
*
|
||
|
* @param data Pointer to the address. It's set to a location
|
||
|
* within the tracing buffer.
|
||
|
* @param size Requested buffer size (in bytes).
|
||
|
*
|
||
|
* @return Size of allocated buffer which can be smaller than
|
||
|
* requested if there isn't enough free space or buffer wraps.
|
||
|
*/
|
||
|
u32_t tracing_buffer_put_claim(u8_t **data, u32_t size);
|
||
|
|
||
|
/**
|
||
|
* @brief Indicate number of bytes written to the allocated buffer.
|
||
|
*
|
||
|
* @param size Number of bytes written to the allocated buffer.
|
||
|
*
|
||
|
* @retval 0 Successful operation.
|
||
|
* @retval -EINVAL Given @a size exceeds free space of tracing buffer.
|
||
|
*/
|
||
|
int tracing_buffer_put_finish(u32_t size);
|
||
|
|
||
|
/**
|
||
|
* @brief Write data to tracing buffer.
|
||
|
*
|
||
|
* @param data Address of data.
|
||
|
* @param size Data size (in bytes).
|
||
|
*
|
||
|
* @retval Number of bytes written to tracing buffer.
|
||
|
*/
|
||
|
u32_t tracing_buffer_put(u8_t *data, u32_t size);
|
||
|
|
||
|
/**
|
||
|
* @brief Get address of the first valid data in tracing buffer.
|
||
|
*
|
||
|
* @param data Pointer to the address. It's set to a location pointing to
|
||
|
* the first valid data within the tracing buffer.
|
||
|
* @param size Requested buffer size (in bytes).
|
||
|
*
|
||
|
* @return Size of valid buffer which can be smaller than requested
|
||
|
* if there isn't enough valid data or buffer wraps.
|
||
|
*/
|
||
|
u32_t tracing_buffer_get_claim(u8_t **data, u32_t size);
|
||
|
|
||
|
/**
|
||
|
* @brief Indicate number of bytes read from claimed buffer.
|
||
|
*
|
||
|
* @param size Number of bytes read from claimed buffer.
|
||
|
*
|
||
|
* @retval 0 Successful operation.
|
||
|
* @retval -EINVAL Given @a size exceeds available data of tracing buffer.
|
||
|
*/
|
||
|
int tracing_buffer_get_finish(u32_t size);
|
||
|
|
||
|
/**
|
||
|
* @brief Read data from tracing buffer to output buffer.
|
||
|
*
|
||
|
* @param data Address of the output buffer.
|
||
|
* @param size Data size (in bytes).
|
||
|
*
|
||
|
* @retval Number of bytes written to the output buffer.
|
||
|
*/
|
||
|
u32_t tracing_buffer_get(u8_t *data, u32_t size);
|
||
|
|
||
|
/**
|
||
|
* @brief Get buffer from tracing command buffer.
|
||
|
*
|
||
|
* @param data Pointer to tracing command buffer start address.
|
||
|
*
|
||
|
* @return Tracing command buffer size (in bytes).
|
||
|
*/
|
||
|
u32_t tracing_cmd_buffer_alloc(u8_t **data);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|