LCOV - code coverage report
Current view: top level - lib/eal/common - eal_trace.h (source / functions) Hit Total Coverage
Test: Code coverage Lines: 2 2 100.0 %
Date: 2024-12-01 18:57:19 Functions: 0 0 -
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 4 8 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  * Copyright(C) 2020 Marvell International Ltd.
       3                 :            :  */
       4                 :            : 
       5                 :            : #ifndef __EAL_TRACE_H
       6                 :            : #define __EAL_TRACE_H
       7                 :            : 
       8                 :            : #include <rte_cycles.h>
       9                 :            : #include <rte_log.h>
      10                 :            : #include <rte_malloc.h>
      11                 :            : #include <rte_spinlock.h>
      12                 :            : #include <rte_trace.h>
      13                 :            : #include <rte_trace_point.h>
      14                 :            : #include <rte_uuid.h>
      15                 :            : 
      16                 :            : #include "eal_private.h"
      17                 :            : #include "eal_thread.h"
      18                 :            : 
      19                 :            : #define trace_err(...) \
      20                 :            :         RTE_LOG_LINE_PREFIX(ERR, EAL, "%s():%u ", __func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__)
      21                 :            : 
      22                 :            : #define trace_crit(...) \
      23                 :            :         RTE_LOG_LINE_PREFIX(CRIT, EAL, "%s():%u ", __func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__)
      24                 :            : 
      25                 :            : #define TRACE_CTF_MAGIC 0xC1FC1FC1
      26                 :            : #define TRACE_MAX_ARGS  32
      27                 :            : 
      28                 :            : struct trace_point {
      29                 :            :         STAILQ_ENTRY(trace_point) next;
      30                 :            :         rte_trace_point_t *handle;
      31                 :            :         const char *name;
      32                 :            :         char *ctf_field;
      33                 :            : };
      34                 :            : 
      35                 :            : enum trace_area_e {
      36                 :            :         TRACE_AREA_HEAP,
      37                 :            :         TRACE_AREA_HUGEPAGE,
      38                 :            : };
      39                 :            : 
      40                 :            : struct thread_mem_meta {
      41                 :            :         void *mem;
      42                 :            :         enum trace_area_e area;
      43                 :            : };
      44                 :            : 
      45                 :            : struct trace_arg {
      46                 :            :         STAILQ_ENTRY(trace_arg) next;
      47                 :            :         char *val;
      48                 :            : };
      49                 :            : 
      50                 :            : struct trace {
      51                 :            :         char *dir;
      52                 :            :         int register_errno;
      53                 :            :         RTE_ATOMIC(uint32_t) status;
      54                 :            :         enum rte_trace_mode mode;
      55                 :            :         rte_uuid_t uuid;
      56                 :            :         uint32_t buff_len;
      57                 :            :         STAILQ_HEAD(, trace_arg) args;
      58                 :            :         uint32_t nb_trace_points;
      59                 :            :         uint32_t nb_trace_mem_list;
      60                 :            :         struct thread_mem_meta *lcore_meta;
      61                 :            :         uint64_t epoch_sec;
      62                 :            :         uint64_t epoch_nsec;
      63                 :            :         uint64_t uptime_ticks;
      64                 :            :         char *ctf_meta;
      65                 :            :         uint32_t ctf_meta_offset_freq;
      66                 :            :         uint32_t ctf_meta_offset_freq_off_s;
      67                 :            :         uint32_t ctf_meta_offset_freq_off;
      68                 :            :         RTE_ATOMIC(uint16_t) ctf_fixup_done;
      69                 :            :         rte_spinlock_t lock;
      70                 :            : };
      71                 :            : 
      72                 :            : /* Helper functions */
      73                 :            : static inline uint16_t
      74                 :            : trace_id_get(rte_trace_point_t *trace)
      75                 :            : {
      76   [ -  +  -  +  :     105592 :         return (*trace & __RTE_TRACE_FIELD_ID_MASK) >>
                   -  + ]
      77                 :            :                 __RTE_TRACE_FIELD_ID_SHIFT;
      78                 :            : }
      79                 :            : 
      80                 :            : static inline size_t
      81                 :            : trace_mem_sz(uint32_t len)
      82                 :            : {
      83         [ -  + ]:          7 :         return len + sizeof(struct __rte_trace_header);
      84                 :            : }
      85                 :            : 
      86                 :            : /* Trace object functions */
      87                 :            : struct trace *trace_obj_get(void);
      88                 :            : 
      89                 :            : /* Trace point list functions */
      90                 :            : STAILQ_HEAD(trace_point_head, trace_point);
      91                 :            : struct trace_point_head *trace_list_head_get(void);
      92                 :            : 
      93                 :            : /* Util functions */
      94                 :            : const char *trace_mode_to_string(enum rte_trace_mode mode);
      95                 :            : const char *trace_area_to_string(enum trace_area_e area);
      96                 :            : int trace_args_apply(const char *arg);
      97                 :            : void trace_bufsz_args_apply(void);
      98                 :            : bool trace_has_duplicate_entry(void);
      99                 :            : void trace_uuid_generate(void);
     100                 :            : int trace_metadata_create(void);
     101                 :            : void trace_metadata_destroy(void);
     102                 :            : char *trace_metadata_fixup_field(const char *field);
     103                 :            : int trace_epoch_time_save(void);
     104                 :            : void trace_mem_free(void);
     105                 :            : void trace_mem_per_thread_free(void);
     106                 :            : 
     107                 :            : /* EAL interface */
     108                 :            : int eal_trace_init(void);
     109                 :            : void eal_trace_fini(void);
     110                 :            : int eal_trace_args_save(const char *val);
     111                 :            : void eal_trace_args_free(void);
     112                 :            : int eal_trace_dir_args_save(const char *val);
     113                 :            : int eal_trace_mode_args_save(const char *val);
     114                 :            : int eal_trace_bufsz_args_save(const char *val);
     115                 :            : 
     116                 :            : #endif /* __EAL_TRACE_H */

Generated by: LCOV version 1.14