Coverage Report

Created: 2026-02-26 07:03

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/hostap/src/utils/trace.h
Line
Count
Source
1
/*
2
 * Backtrace debugging
3
 * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
4
 *
5
 * This software may be distributed under the terms of the BSD license.
6
 * See README for more details.
7
 */
8
9
#ifndef TRACE_H
10
#define TRACE_H
11
12
#define WPA_TRACE_LEN 16
13
14
#ifdef WPA_TRACE
15
#include <execinfo.h>
16
17
#include "list.h"
18
19
extern const char *current_btrace_ctx;
20
21
#define WPA_TRACE_INFO      \
22
  void *btrace[WPA_TRACE_LEN];  \
23
  int btrace_num;     \
24
  const char *btrace_ctx;
25
26
struct wpa_trace_ref {
27
  struct dl_list list;
28
  const void *addr;
29
  WPA_TRACE_INFO
30
};
31
#define WPA_TRACE_REF(name) struct wpa_trace_ref wpa_trace_ref_##name
32
33
#define wpa_trace_dump(title, ptr) \
34
  wpa_trace_dump_func((title), (ptr)->btrace, (ptr)->btrace_num,  \
35
          (ptr)->btrace_ctx)
36
void wpa_trace_dump_func(const char *title, void **btrace, int btrace_num,
37
       const char *btrace_ctx);
38
#define wpa_trace_record(ptr)           \
39
  do {                \
40
    (ptr)->btrace_num = backtrace((ptr)->btrace, WPA_TRACE_LEN); \
41
    (ptr)->btrace_ctx = current_btrace_ctx;     \
42
  } while (0)
43
void wpa_trace_show(const char *title);
44
#define wpa_trace_add_ref(ptr, name, addr) \
45
  wpa_trace_add_ref_func(&(ptr)->wpa_trace_ref_##name, (addr))
46
void wpa_trace_add_ref_func(struct wpa_trace_ref *ref, const void *addr);
47
#define wpa_trace_remove_ref(ptr, name, addr) \
48
  do { \
49
    if ((addr)) \
50
      dl_list_del(&(ptr)->wpa_trace_ref_##name.list); \
51
  } while (0)
52
void wpa_trace_check_ref(const void *addr);
53
size_t wpa_trace_calling_func(const char *buf[], size_t len);
54
void wpa_trace_set_context(const char *ctx);
55
56
#else /* WPA_TRACE */
57
58
#define WPA_TRACE_INFO
59
#define WPA_TRACE_REF(n)
60
#define wpa_trace_dump(title, ptr) do { } while (0)
61
#define wpa_trace_record(ptr) do { } while (0)
62
0
#define wpa_trace_show(title) do { } while (0)
63
#define wpa_trace_add_ref(ptr, name, addr) do { } while (0)
64
#define wpa_trace_remove_ref(ptr, name, addr) do { } while (0)
65
#define wpa_trace_check_ref(addr) do { } while (0)
66
67
static inline void wpa_trace_set_context(const char *ctx)
68
0
{
69
0
}
70
71
#endif /* WPA_TRACE */
72
73
74
#ifdef WPA_TRACE_BFD
75
76
void wpa_trace_dump_funcname(const char *title, void *pc);
77
78
#else /* WPA_TRACE_BFD */
79
80
#define wpa_trace_dump_funcname(title, pc) do { } while (0)
81
82
#endif /* WPA_TRACE_BFD */
83
84
void wpa_trace_deinit(void);
85
86
#endif /* TRACE_H */