1*14b24e2bSVaishali Kulkarni /* 2*14b24e2bSVaishali Kulkarni * CDDL HEADER START 3*14b24e2bSVaishali Kulkarni * 4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the 5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1, (the "License"). 6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 7*14b24e2bSVaishali Kulkarni * 8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0. 10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions 11*14b24e2bSVaishali Kulkarni * and limitations under the License. 12*14b24e2bSVaishali Kulkarni * 13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each 14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the 16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying 17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner] 18*14b24e2bSVaishali Kulkarni * 19*14b24e2bSVaishali Kulkarni * CDDL HEADER END 20*14b24e2bSVaishali Kulkarni */ 21*14b24e2bSVaishali Kulkarni 22*14b24e2bSVaishali Kulkarni /* 23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc. 24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development 25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1, (the "License"). 26*14b24e2bSVaishali Kulkarni 27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 28*14b24e2bSVaishali Kulkarni 29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available 30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0 31*14b24e2bSVaishali Kulkarni 32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and 33*14b24e2bSVaishali Kulkarni * limitations under the License. 34*14b24e2bSVaishali Kulkarni */ 35*14b24e2bSVaishali Kulkarni 36*14b24e2bSVaishali Kulkarni /* To use this file, please define the following macros: 37*14b24e2bSVaishali Kulkarni * MFWT_ALLOC(size) - allocate memory for array 38*14b24e2bSVaishali Kulkarni * MFWT_FREE(void *) - free memory 39*14b24e2bSVaishali Kulkarni * MFWT_STRNCPY(d,s,n) - copy string up to size n 40*14b24e2bSVaishali Kulkarni * MFWT_ERROR(fmt, ...) - error print 41*14b24e2bSVaishali Kulkarni * MFWT_TRACE(fmt, ...) - debug trace 42*14b24e2bSVaishali Kulkarni * ENOMEM - return value for: Out of memory 43*14b24e2bSVaishali Kulkarni * EINVAL - return value for: Invalid argument 44*14b24e2bSVaishali Kulkarni */ 45*14b24e2bSVaishali Kulkarni #ifndef MFW_TRACE_H 46*14b24e2bSVaishali Kulkarni #define MFW_TRACE_H 47*14b24e2bSVaishali Kulkarni 48*14b24e2bSVaishali Kulkarni #include "mfw_hsi.h" 49*14b24e2bSVaishali Kulkarni 50*14b24e2bSVaishali Kulkarni struct mfw_trace_fmt; 51*14b24e2bSVaishali Kulkarni 52*14b24e2bSVaishali Kulkarni struct mfw_trace_meta { 53*14b24e2bSVaishali Kulkarni unsigned int modules_num; 54*14b24e2bSVaishali Kulkarni char **modules; 55*14b24e2bSVaishali Kulkarni unsigned int fmts_num; 56*14b24e2bSVaishali Kulkarni struct mfw_trace_fmt *fmts; 57*14b24e2bSVaishali Kulkarni }; 58*14b24e2bSVaishali Kulkarni 59*14b24e2bSVaishali Kulkarni /** 60*14b24e2bSVaishali Kulkarni * @brief mfw_trace_load_meta_data - load the meta data into memory 61*14b24e2bSVaishali Kulkarni * 62*14b24e2bSVaishali Kulkarni * This function allocates memory for all the formats. The 63*14b24e2bSVaishali Kulkarni * mfw_trace_free_meta_data should be called to release this memory. 64*14b24e2bSVaishali Kulkarni * 65*14b24e2bSVaishali Kulkarni * @param input_str - the content of the meta data 66*14b24e2bSVaishali Kulkarni * @param p_meta - the output struct that will contain all the allocated 67*14b24e2bSVaishali Kulkarni * memory for the fromats 68*14b24e2bSVaishali Kulkarni * 69*14b24e2bSVaishali Kulkarni * @status - 0 on success 70*14b24e2bSVaishali Kulkarni */ 71*14b24e2bSVaishali Kulkarni u32 mfw_trace_load_meta_data(const char *input_str, 72*14b24e2bSVaishali Kulkarni struct mfw_trace_meta *p_meta); 73*14b24e2bSVaishali Kulkarni 74*14b24e2bSVaishali Kulkarni /** 75*14b24e2bSVaishali Kulkarni * @brief mfw_trace_free_meta_data - releases all the allocated memory 76*14b24e2bSVaishali Kulkarni * 77*14b24e2bSVaishali Kulkarni * This function releases the memory allocated by mfw_trace_load_meta_data. 78*14b24e2bSVaishali Kulkarni * 79*14b24e2bSVaishali Kulkarni * @param p_meta 80*14b24e2bSVaishali Kulkarni */ 81*14b24e2bSVaishali Kulkarni void mfw_trace_free_meta_data(struct mfw_trace_meta *p_meta); 82*14b24e2bSVaishali Kulkarni 83*14b24e2bSVaishali Kulkarni /** 84*14b24e2bSVaishali Kulkarni * @brief mfw_trace_parse_trace - releases all the allocated memory 85*14b24e2bSVaishali Kulkarni * 86*14b24e2bSVaishali Kulkarni * This function releases the memory allocated by mfw_trace_load_meta_data. 87*14b24e2bSVaishali Kulkarni * 88*14b24e2bSVaishali Kulkarni * @param trace_buffer - the buffer read from the chip 89*14b24e2bSVaishali Kulkarni * @param p_meta - the parsed meta data 90*14b24e2bSVaishali Kulkarni * @param p_print - the function used to print the parsed trace 91*14b24e2bSVaishali Kulkarni * 92*14b24e2bSVaishali Kulkarni * @status - 0 on success 93*14b24e2bSVaishali Kulkarni */ 94*14b24e2bSVaishali Kulkarni typedef int (*output_printf) (const char *fmt, ...); 95*14b24e2bSVaishali Kulkarni u32 mfw_trace_parse_trace(struct mcp_trace *p_trace, 96*14b24e2bSVaishali Kulkarni struct mfw_trace_meta *p_meta, 97*14b24e2bSVaishali Kulkarni output_printf p_print); 98*14b24e2bSVaishali Kulkarni 99*14b24e2bSVaishali Kulkarni #endif /* MFW_TRACE_H */ 100