| Index: gdb/common/linux-btrace.h | 
| diff --git a/gdb/common/linux-btrace.h b/gdb/common/linux-btrace.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..d4e8402d1c274f642de389c2f262ba62fb7025e8 | 
| --- /dev/null | 
| +++ b/gdb/common/linux-btrace.h | 
| @@ -0,0 +1,77 @@ | 
| +/* Linux-dependent part of branch trace support for GDB, and GDBserver. | 
| + | 
| +   Copyright (C) 2013 Free Software Foundation, Inc. | 
| + | 
| +   Contributed by Intel Corp. <markus.t.metzger@intel.com> | 
| + | 
| +   This file is part of GDB. | 
| + | 
| +   This program is free software; you can redistribute it and/or modify | 
| +   it under the terms of the GNU General Public License as published by | 
| +   the Free Software Foundation; either version 3 of the License, or | 
| +   (at your option) any later version. | 
| + | 
| +   This program is distributed in the hope that it will be useful, | 
| +   but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| +   GNU General Public License for more details. | 
| + | 
| +   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 "config.h" | 
| +#include "vec.h" | 
| +#include "ptid.h" | 
| +#include <stddef.h> | 
| +#include <stdint.h> | 
| + | 
| +#if HAVE_LINUX_PERF_EVENT_H | 
| +#  include <linux/perf_event.h> | 
| +#endif | 
| + | 
| +/* Branch trace target information per thread.  */ | 
| +struct btrace_target_info | 
| +{ | 
| +#if HAVE_LINUX_PERF_EVENT_H | 
| +  /* The Linux perf_event configuration for collecting the branch trace.  */ | 
| +  struct perf_event_attr attr; | 
| + | 
| +  /* The ptid of this thread.  */ | 
| +  ptid_t ptid; | 
| + | 
| +  /* The mmap configuration mapping the branch trace perf_event buffer. | 
| + | 
| +     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  */ | 
| +  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; | 
| +}; | 
| + | 
| +/* Check whether branch tracing is supported.  */ | 
| +extern int linux_supports_btrace (void); | 
| + | 
| +/* Enable branch tracing for @ptid.  */ | 
| +extern struct btrace_target_info *linux_enable_btrace (ptid_t ptid); | 
| + | 
| +/* Disable branch tracing and deallocate @tinfo.  */ | 
| +extern int linux_disable_btrace (struct btrace_target_info *tinfo); | 
| + | 
| +/* Read branch trace data.  */ | 
| +extern VEC (btrace_block_s) *linux_read_btrace (struct btrace_target_info *, | 
| +						enum btrace_read_type); | 
| + | 
| +#endif /* LINUX_BTRACE_H */ | 
|  |