xref: /aosp_15_r20/external/libchrome-gestures/include/trace_marker.h (revision aed3e5085e770be5b69ce25295ecf6ddf906af95)
1*aed3e508SAndroid Build Coastguard Worker // Copyright 2012 The ChromiumOS Authors
2*aed3e508SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*aed3e508SAndroid Build Coastguard Worker // found in the LICENSE file.
4*aed3e508SAndroid Build Coastguard Worker 
5*aed3e508SAndroid Build Coastguard Worker #include <gtest/gtest.h>  // for FRIEND_TEST
6*aed3e508SAndroid Build Coastguard Worker #include <linux/limits.h>
7*aed3e508SAndroid Build Coastguard Worker 
8*aed3e508SAndroid Build Coastguard Worker #include "include/macros.h"
9*aed3e508SAndroid Build Coastguard Worker 
10*aed3e508SAndroid Build Coastguard Worker #ifndef GESTURES_TRACE_MARKER_H__
11*aed3e508SAndroid Build Coastguard Worker #define GESTURES_TRACE_MARKER_H__
12*aed3e508SAndroid Build Coastguard Worker 
13*aed3e508SAndroid Build Coastguard Worker #define TRACE_WRITE(x) TraceMarker::StaticTraceWrite(x)
14*aed3e508SAndroid Build Coastguard Worker 
15*aed3e508SAndroid Build Coastguard Worker namespace gestures {
16*aed3e508SAndroid Build Coastguard Worker // This class is used for writing message into the debugfs tracing system
17*aed3e508SAndroid Build Coastguard Worker // based on Ftrace provided by linux.
18*aed3e508SAndroid Build Coastguard Worker // By default, the debugfs is mounted at /sys/kernel/debug/
19*aed3e508SAndroid Build Coastguard Worker // It will automatically help you handle the detail things. If you want to
20*aed3e508SAndroid Build Coastguard Worker // write a message into tracing system, you can simply use
21*aed3e508SAndroid Build Coastguard Worker // TRACE_WRITE("MESSAGE") and you can find the message appears in the file
22*aed3e508SAndroid Build Coastguard Worker // debugfs/tracing/trace
23*aed3e508SAndroid Build Coastguard Worker 
24*aed3e508SAndroid Build Coastguard Worker class TraceMarker {
25*aed3e508SAndroid Build Coastguard Worker   FRIEND_TEST(TraceMarkerTest, DeleteTraceMarkerTest);
26*aed3e508SAndroid Build Coastguard Worker 
27*aed3e508SAndroid Build Coastguard Worker  public:
28*aed3e508SAndroid Build Coastguard Worker   static void CreateTraceMarker();
29*aed3e508SAndroid Build Coastguard Worker   static void DeleteTraceMarker();
30*aed3e508SAndroid Build Coastguard Worker   static void StaticTraceWrite(const char* str);
31*aed3e508SAndroid Build Coastguard Worker   static TraceMarker* GetTraceMarker();
32*aed3e508SAndroid Build Coastguard Worker   void TraceWrite(const char* str);
33*aed3e508SAndroid Build Coastguard Worker 
34*aed3e508SAndroid Build Coastguard Worker  private:
35*aed3e508SAndroid Build Coastguard Worker   TraceMarker();
36*aed3e508SAndroid Build Coastguard Worker   ~TraceMarker();
37*aed3e508SAndroid Build Coastguard Worker   DISALLOW_COPY_AND_ASSIGN(TraceMarker);
38*aed3e508SAndroid Build Coastguard Worker   static TraceMarker* trace_marker_;
39*aed3e508SAndroid Build Coastguard Worker   static int trace_marker_count_;
40*aed3e508SAndroid Build Coastguard Worker   int fd_;
41*aed3e508SAndroid Build Coastguard Worker   bool FindDebugfs(const char** ret) const;
42*aed3e508SAndroid Build Coastguard Worker   bool FindTraceMarker(char** ret) const;
43*aed3e508SAndroid Build Coastguard Worker   bool OpenTraceMarker();
44*aed3e508SAndroid Build Coastguard Worker };
45*aed3e508SAndroid Build Coastguard Worker }  // namespace gestures
46*aed3e508SAndroid Build Coastguard Worker #endif  // GESTURES_TRACE_MARKER_H__
47