| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
| /* |
| * |
| * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved. |
| * |
| * This program is free software and is provided to you under the terms of the |
| * GNU General Public License version 2 as published by the Free Software |
| * Foundation, and any use by you of this program is subject to the terms |
| * of such GNU license. |
| * |
| * 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. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, you can access it online at |
| * http://www.gnu.org/licenses/gpl-2.0.html. |
| * |
| */ |
| |
| #ifndef _KBASE_DEBUG_KTRACE_INTERNAL_H_ |
| #define _KBASE_DEBUG_KTRACE_INTERNAL_H_ |
| |
| #if KBASE_KTRACE_TARGET_RBUF |
| |
| #define KTRACE_DUMP_MESSAGE_SIZE 256 |
| |
| /** |
| * kbasep_ktrace_backend_format_header - format the backend part of the header |
| * @buffer: buffer to write to |
| * @sz: size of @buffer in bytes |
| * @written: pointer to storage for updating bytes written so far to @buffer |
| * |
| * The backend must format only the non-common backend specific parts of the |
| * header. It must format them as though they were standalone. The caller will |
| * handle adding any delimiters around this. |
| */ |
| void kbasep_ktrace_backend_format_header(char *buffer, int sz, s32 *written); |
| |
| /** |
| * kbasep_ktrace_backend_format_msg - format the backend part of the message |
| * @trace_msg: ktrace message |
| * @buffer: buffer to write to |
| * @sz: size of @buffer in bytes |
| * @written: pointer to storage for updating bytes written so far to @buffer |
| * |
| * The backend must format only the non-common backend specific parts of the |
| * message. It must format them as though they were standalone. The caller will |
| * handle adding any delimiters around this. |
| * |
| * A caller may have the flags member of @trace_msg with |
| * %KBASE_KTRACE_FLAG_BACKEND clear. The backend must handle that setting |
| * appropriately. |
| */ |
| void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg, |
| char *buffer, int sz, s32 *written); |
| |
| |
| /** |
| * kbasep_ktrace_reserve - internal function to reserve space for a ktrace |
| * message |
| * @ktrace: kbase device's ktrace |
| * |
| * This may also empty the oldest entry in the ringbuffer to make space. |
| * |
| * Return: ktrace message |
| */ |
| struct kbase_ktrace_msg *kbasep_ktrace_reserve(struct kbase_ktrace *ktrace); |
| |
| /** |
| * kbasep_ktrace_msg_init - internal function to initialize just the common |
| * part of a ktrace message |
| * @ktrace: kbase device's ktrace |
| * @trace_msg: ktrace message to initialize |
| * @code: ktrace code |
| * @kctx: kbase context, or NULL if no context |
| * @flags: flags about the message |
| * @info_val: generic information about @code to add to the trace |
| * |
| * The common part includes the mandatory parts of the backend part |
| */ |
| void kbasep_ktrace_msg_init(struct kbase_ktrace *ktrace, |
| struct kbase_ktrace_msg *trace_msg, enum kbase_ktrace_code code, |
| struct kbase_context *kctx, kbase_ktrace_flag_t flags, |
| u64 info_val); |
| |
| #endif /* KBASE_KTRACE_TARGET_RBUF */ |
| |
| #endif /* _KBASE_DEBUG_KTRACE_INTERNAL_H_ */ |