Coverage Report

Created: 2026-05-16 06:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/adhd/cras/server/cras_trace.c
Line
Count
Source
1
// Copyright 2024 The ChromiumOS Authors
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "cras/server/cras_trace.h"
6
7
PERCETTO_CATEGORY_DEFINE(CRAS_PERCETTO_CATEGORIES);
8
9
PERCETTO_TRACK_DEFINE(CRAS_SPK_HW_LEVEL, PERCETTO_TRACK_COUNTER);
10
PERCETTO_TRACK_DEFINE(CRAS_FLOOP_OUT_HW_LEVEL, PERCETTO_TRACK_COUNTER);
11
PERCETTO_TRACK_DEFINE(CRAS_INTERNAL_MIC_HW_LEVEL, PERCETTO_TRACK_COUNTER);
12
PERCETTO_TRACK_DEFINE(CRAS_FLOOP_IN_HW_LEVEL, PERCETTO_TRACK_COUNTER);
13
14
PERCETTO_TRACK_DEFINE(CRAS_SPK_WRITE_FRAMES, PERCETTO_TRACK_COUNTER);
15
PERCETTO_TRACK_DEFINE(CRAS_FLOOP_OUT_WRITE_FRAMES, PERCETTO_TRACK_COUNTER);
16
PERCETTO_TRACK_DEFINE(CRAS_FLOOP_IN_READ_FRAMES, PERCETTO_TRACK_COUNTER);
17
PERCETTO_TRACK_DEFINE(CRAS_INTERNAL_MIC_READ_FRAMES, PERCETTO_TRACK_COUNTER);
18
19
0
int cras_trace_init() {
20
0
  PERCETTO_INIT(PERCETTO_CLOCK_DONT_CARE);
21
0
  PERCETTO_REGISTER_TRACK(CRAS_SPK_HW_LEVEL);
22
0
  PERCETTO_REGISTER_TRACK(CRAS_FLOOP_OUT_HW_LEVEL);
23
0
  PERCETTO_REGISTER_TRACK(CRAS_INTERNAL_MIC_HW_LEVEL);
24
0
  PERCETTO_REGISTER_TRACK(CRAS_FLOOP_IN_HW_LEVEL);
25
26
0
  PERCETTO_REGISTER_TRACK(CRAS_SPK_WRITE_FRAMES);
27
0
  PERCETTO_REGISTER_TRACK(CRAS_FLOOP_OUT_WRITE_FRAMES);
28
0
  PERCETTO_REGISTER_TRACK(CRAS_FLOOP_IN_READ_FRAMES);
29
0
  PERCETTO_REGISTER_TRACK(CRAS_INTERNAL_MIC_READ_FRAMES);
30
0
  return 0;
31
0
}
32
33
664
void cras_trace_hw_level(enum CRAS_NODE_TYPE type, unsigned int hw_level) {
34
664
  switch (type) {
35
0
    case CRAS_NODE_TYPE_INTERNAL_SPEAKER:
36
0
      TRACE_COUNTER(audio, CRAS_SPK_HW_LEVEL, hw_level);
37
0
      break;
38
476
    case CRAS_NODE_TYPE_FLOOP:
39
476
      TRACE_COUNTER(audio, CRAS_FLOOP_IN_HW_LEVEL, hw_level);
40
476
      break;
41
0
    case CRAS_NODE_TYPE_FLOOP_INTERNAL:
42
0
      TRACE_COUNTER(audio, CRAS_FLOOP_OUT_HW_LEVEL, hw_level);
43
0
      break;
44
0
    case CRAS_NODE_TYPE_MIC:
45
0
      TRACE_COUNTER(audio, CRAS_INTERNAL_MIC_HW_LEVEL, hw_level);
46
0
      break;
47
188
    default:
48
188
      break;
49
664
  }
50
664
}
51
52
348
void cras_trace_frames(enum CRAS_NODE_TYPE type, unsigned int nframes) {
53
348
  switch (type) {
54
0
    case CRAS_NODE_TYPE_INTERNAL_SPEAKER:
55
0
      TRACE_COUNTER(audio, CRAS_SPK_WRITE_FRAMES, nframes);
56
0
      break;
57
347
    case CRAS_NODE_TYPE_FLOOP:
58
347
      TRACE_COUNTER(audio, CRAS_FLOOP_IN_READ_FRAMES, nframes);
59
347
      break;
60
0
    case CRAS_NODE_TYPE_MIC:
61
0
      TRACE_COUNTER(audio, CRAS_INTERNAL_MIC_READ_FRAMES, nframes);
62
0
      break;
63
1
    case CRAS_NODE_TYPE_FLOOP_INTERNAL:
64
1
      TRACE_COUNTER(audio, CRAS_FLOOP_OUT_WRITE_FRAMES, nframes);
65
1
      break;
66
0
    default:
67
0
      break;
68
348
  }
69
348
}
70
71
void cras_trace_underrun(enum CRAS_NODE_TYPE type,
72
0
                         enum CRAS_NODE_POSITION position) {
73
0
  char event[50];
74
0
  snprintf(event, 50, "%s_UNDERRUN", cras_node_type_to_str(type, position));
75
0
  TRACE_INSTANT(audio, event);
76
0
}
77
78
void cras_trace_overrun(enum CRAS_NODE_TYPE type,
79
6
                        enum CRAS_NODE_POSITION position) {
80
6
  char event[50];
81
  snprintf(event, 50, "%s_UNDERRUN", cras_node_type_to_str(type, position));
82
6
  TRACE_INSTANT(audio, event);
83
6
}