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