blob: 84eab0eb8e6d37f1e69a62f3a5682729c6194395 [file] [log] [blame]
/*
* Copyright (c) 2019 Intel corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _TRACE_CORE_H
#define _TRACE_CORE_H
#include <zephyr/irq.h>
#include <zephyr/types.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TRACING_LOCK() { int key; key = irq_lock()
#define TRACING_UNLOCK() { irq_unlock(key); } }
/**
* @brief Check tracing enabled or not.
*
* @return True if tracing enabled; False if tracing disabled.
*/
bool is_tracing_enabled(void);
/**
* @brief Give tracing buffer to backend.
*
* @param data Tracing buffer address.
* @param length Tracing buffer length.
*/
void tracing_buffer_handle(uint8_t *data, uint32_t length);
/**
* @brief Handle tracing packet drop.
*/
void tracing_packet_drop_handle(void);
/**
* @brief Handle tracing command.
*
* @param buf Tracing command buffer address.
* @param length Tracing command buffer length.
*/
void tracing_cmd_handle(uint8_t *buf, uint32_t length);
/**
* @brief Trigger tracing thread to run after every first put.
*
* @param before_put_is_empty If tracing buffer is empty before this put.
*/
void tracing_trigger_output(bool before_put_is_empty);
/**
* @brief Check if we are in tracing thread context.
*
* @return True if in tracing thread context; False if not.
*/
bool is_tracing_thread(void);
#ifdef __cplusplus
}
#endif
#endif