Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * intel_pt_log.h: Intel Processor Trace support
0004  * Copyright (c) 2013-2014, Intel Corporation.
0005  */
0006 
0007 #ifndef INCLUDE__INTEL_PT_LOG_H__
0008 #define INCLUDE__INTEL_PT_LOG_H__
0009 
0010 #include <linux/compiler.h>
0011 #include <stdint.h>
0012 #include <inttypes.h>
0013 
0014 struct intel_pt_pkt;
0015 
0016 void *intel_pt_log_fp(void);
0017 void intel_pt_log_enable(void);
0018 void intel_pt_log_disable(void);
0019 void intel_pt_log_set_name(const char *name);
0020 
0021 void __intel_pt_log_packet(const struct intel_pt_pkt *packet, int pkt_len,
0022                uint64_t pos, const unsigned char *buf);
0023 
0024 struct intel_pt_insn;
0025 
0026 void __intel_pt_log_insn(struct intel_pt_insn *intel_pt_insn, uint64_t ip);
0027 void __intel_pt_log_insn_no_data(struct intel_pt_insn *intel_pt_insn,
0028                  uint64_t ip);
0029 
0030 void __intel_pt_log(const char *fmt, ...) __printf(1, 2);
0031 
0032 #define intel_pt_log(fmt, ...) \
0033     do { \
0034         if (intel_pt_enable_logging) \
0035             __intel_pt_log(fmt, ##__VA_ARGS__); \
0036     } while (0)
0037 
0038 #define intel_pt_log_packet(arg, ...) \
0039     do { \
0040         if (intel_pt_enable_logging) \
0041             __intel_pt_log_packet(arg, ##__VA_ARGS__); \
0042     } while (0)
0043 
0044 #define intel_pt_log_insn(arg, ...) \
0045     do { \
0046         if (intel_pt_enable_logging) \
0047             __intel_pt_log_insn(arg, ##__VA_ARGS__); \
0048     } while (0)
0049 
0050 #define intel_pt_log_insn_no_data(arg, ...) \
0051     do { \
0052         if (intel_pt_enable_logging) \
0053             __intel_pt_log_insn_no_data(arg, ##__VA_ARGS__); \
0054     } while (0)
0055 
0056 #define x64_fmt "0x%" PRIx64
0057 
0058 extern bool intel_pt_enable_logging;
0059 
0060 static inline void intel_pt_log_at(const char *msg, uint64_t u)
0061 {
0062     intel_pt_log("%s at " x64_fmt "\n", msg, u);
0063 }
0064 
0065 static inline void intel_pt_log_to(const char *msg, uint64_t u)
0066 {
0067     intel_pt_log("%s to " x64_fmt "\n", msg, u);
0068 }
0069 
0070 #define intel_pt_log_var(var, fmt) intel_pt_log("%s: " #var " " fmt "\n", __func__, var)
0071 
0072 #define intel_pt_log_x32(var) intel_pt_log_var(var, "%#x")
0073 #define intel_pt_log_x64(var) intel_pt_log_var(var, "%#" PRIx64)
0074 
0075 #endif