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