exceptions.c:print_flush: Remove obsolete check
[deliverable/binutils-gdb.git] / gdb / nat / linux-btrace.h
index 3bfb798000cd9feb23e27166699c107281be58b6..a3612687bb7ae14c1df028c00df74b2bef0fb0fd 100644 (file)
@@ -1,6 +1,6 @@
 /* Linux-dependent part of branch trace support for GDB, and GDBserver.
 
-   Copyright (C) 2013-2015 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#ifndef LINUX_BTRACE_H
-#define LINUX_BTRACE_H
-
-#include "btrace-common.h"
-#include "vec.h"
-#include <stdint.h>
+#ifndef NAT_LINUX_BTRACE_H
+#define NAT_LINUX_BTRACE_H
 
+#include "gdbsupport/btrace-common.h"
 #if HAVE_LINUX_PERF_EVENT_H
 #  include <linux/perf_event.h>
 #endif
 
 struct target_ops;
 
-/* Branch trace target information per thread.  */
-struct btrace_target_info
-{
 #if HAVE_LINUX_PERF_EVENT_H
+/* A Linux perf event buffer.  */
+struct perf_event_buffer
+{
+  /* The mapped memory.  */
+  const uint8_t *mem;
+
+  /* The size of the mapped memory in bytes.  */
+  size_t size;
+
+  /* A pointer to the data_head field for this buffer. */
+  volatile __u64 *data_head;
+
+  /* The data_head value from the last read.  */
+  __u64 last_head;
+};
+
+/* Branch trace target information for BTS tracing.  */
+struct btrace_tinfo_bts
+{
   /* The Linux perf_event configuration for collecting the branch trace.  */
   struct perf_event_attr attr;
 
-  /* The ptid of this thread.  */
-  ptid_t ptid;
+  /* The perf event file.  */
+  int file;
+
+  /* The perf event configuration page. */
+  volatile struct perf_event_mmap_page *header;
+
+  /* The BTS perf event buffer.  */
+  struct perf_event_buffer bts;
+};
 
-  /* The mmap configuration mapping the branch trace perf_event buffer.
+/* Branch trace target information for Intel Processor Trace
+   tracing.  */
+struct btrace_tinfo_pt
+{
+  /* The Linux perf_event configuration for collecting the branch trace.  */
+  struct perf_event_attr attr;
 
-     file      .. the file descriptor
-     buffer    .. the mmapped memory buffer
-     size      .. the buffer's size in pages without the configuration page
-     data_head .. the data head from the last read  */
+  /* The perf event file.  */
   int file;
-  void *buffer;
-  size_t size;
-  unsigned long data_head;
-#endif /* HAVE_LINUX_PERF_EVENT_H */
 
-  /* The size of a pointer in bits for this thread.
-     The information is used to identify kernel addresses in order to skip
-     records from/to kernel space.  */
-  int ptr_bits;
+  /* The perf event configuration page. */
+  volatile struct perf_event_mmap_page *header;
+
+  /* The trace perf event buffer.  */
+  struct perf_event_buffer pt;
 };
+#endif /* HAVE_LINUX_PERF_EVENT_H */
+
+/* Branch trace target information per thread.  */
+struct btrace_target_info
+{
+  /* The ptid of this thread.  */
+  ptid_t ptid;
 
-/* See to_supports_btrace in target.h.  */
-extern int linux_supports_btrace (struct target_ops *);
+  /* The obtained branch trace configuration.  */
+  struct btrace_config conf;
+
+#if HAVE_LINUX_PERF_EVENT_H
+  /* The branch tracing format specific information.  */
+  union
+  {
+    /* CONF.FORMAT == BTRACE_FORMAT_BTS.  */
+    struct btrace_tinfo_bts bts;
+
+    /* CONF.FORMAT == BTRACE_FORMAT_PT.  */
+    struct btrace_tinfo_pt pt;
+  } variant;
+#endif /* HAVE_LINUX_PERF_EVENT_H */
+};
 
 /* See to_enable_btrace in target.h.  */
-extern struct btrace_target_info *linux_enable_btrace (ptid_t ptid);
+extern struct btrace_target_info *
+  linux_enable_btrace (ptid_t ptid, const struct btrace_config *conf);
 
 /* See to_disable_btrace in target.h.  */
 extern enum btrace_error linux_disable_btrace (struct btrace_target_info *ti);
 
 /* See to_read_btrace in target.h.  */
-extern enum btrace_error linux_read_btrace (VEC (btrace_block_s) **btrace,
+extern enum btrace_error linux_read_btrace (struct btrace_data *btrace,
                                            struct btrace_target_info *btinfo,
                                            enum btrace_read_type type);
 
-#endif /* LINUX_BTRACE_H */
+/* See to_btrace_conf in target.h.  */
+extern const struct btrace_config *
+  linux_btrace_conf (const struct btrace_target_info *);
+
+#endif /* NAT_LINUX_BTRACE_H */
This page took 0.027615 seconds and 4 git commands to generate.