add libtracing Makefile.am
[ust.git] / libtracing / tracer.h
index 822311edbf8123f89d6aa835d2ee64685a640d2d..cc86d548ecfb39e6a4af5429289e0ee55de67da2 100644 (file)
@@ -1,27 +1,25 @@
 /*
  * Copyright (C) 2005,2006,2008 Mathieu Desnoyers (mathieu.desnoyers@polymtl.ca)
+ * Copyright (C) 2009 Pierre-Marc Fournier
  *
  * This contains the definitions for the Linux Trace Toolkit tracer.
+ *
+ * Ported to userspace by Pierre-Marc Fournier.
+ *
+ * This file is released under the GPLv2.
  */
 
 #ifndef _LTT_TRACER_H
 #define _LTT_TRACER_H
 
+#include <sys/types.h>
 #include <stdarg.h>
-#include <linux/types.h>
-#include <linux/limits.h>
-#include <linux/list.h>
-#include <linux/cache.h>
-#include <linux/kernel.h>
-#include <linux/timex.h>
-#include <linux/wait.h>
-#include <linux/ltt-relay.h>
-#include <linux/ltt-channels.h>
-#include <linux/ltt-core.h>
-#include <linux/marker.h>
-#include <linux/trace-clock.h>
-#include <asm/atomic.h>
-#include <asm/local.h>
+#include "relay.h"
+#include "list.h"
+#include "kernelcompat.h"
+#include "channels.h"
+#include "tracercore.h"
+#include "marker.h"
 
 /* Number of bytes to log with a read/write event */
 #define LTT_LOG_RW_SIZE                        32L
@@ -86,23 +84,7 @@ struct ltt_probe_private_data {
 
 enum ltt_channels {
        LTT_CHANNEL_METADATA,
-       LTT_CHANNEL_FD_STATE,
-       LTT_CHANNEL_GLOBAL_STATE,
-       LTT_CHANNEL_IRQ_STATE,
-       LTT_CHANNEL_MODULE_STATE,
-       LTT_CHANNEL_NETIF_STATE,
-       LTT_CHANNEL_SOFTIRQ_STATE,
-       LTT_CHANNEL_SWAP_STATE,
-       LTT_CHANNEL_SYSCALL_STATE,
-       LTT_CHANNEL_TASK_STATE,
-       LTT_CHANNEL_VM_STATE,
-       LTT_CHANNEL_FS,
-       LTT_CHANNEL_INPUT,
-       LTT_CHANNEL_IPC,
-       LTT_CHANNEL_KERNEL,
-       LTT_CHANNEL_MM,
-       LTT_CHANNEL_RCU,
-       LTT_CHANNEL_DEFAULT,
+       LTT_CHANNEL_UST,
 };
 
 struct ltt_active_marker {
@@ -113,6 +95,7 @@ struct ltt_active_marker {
        struct ltt_available_probe *probe;
 };
 
+struct marker; //ust//
 extern void ltt_vtrace(const struct marker *mdata, void *probe_data,
        void *call_data, const char *fmt, va_list *args);
 extern void ltt_trace(const struct marker *mdata, void *probe_data,
@@ -138,8 +121,6 @@ static inline enum marker_id marker_id_type(uint16_t id)
                return MARKER_ID_DYNAMIC;
 }
 
-#ifdef CONFIG_LTT
-
 struct user_dbg_data {
        unsigned long avail_size;
        unsigned long write;
@@ -153,8 +134,7 @@ struct ltt_trace_ops {
                                void **transport_data, size_t data_size,
                                size_t *slot_size, long *buf_offset, u64 *tsc,
                                unsigned int *rflags,
-                               int largest_align,
-                               int cpu);
+                               int largest_align);
        void (*commit_slot) (struct ltt_channel_struct *channel,
                                void **transport_data, long buf_offset,
                                size_t slot_size);
@@ -162,25 +142,20 @@ struct ltt_trace_ops {
        int (*user_blocking) (struct ltt_trace_struct *trace,
                                unsigned int index, size_t data_size,
                                struct user_dbg_data *dbg);
-       /* End of first 32 bytes cacheline */
-       int (*create_dirs) (struct ltt_trace_struct *new_trace);
-       void (*remove_dirs) (struct ltt_trace_struct *new_trace);
-       int (*create_channel) (const char *trace_name,
-                               struct ltt_trace_struct *trace,
-                               struct dentry *dir, const char *channel_name,
-                               struct ltt_channel_struct *ltt_chan,
-                               unsigned int subbuf_size,
-                               unsigned int n_subbufs, int overwrite);
-       void (*finish_channel) (struct ltt_channel_struct *channel);
-       void (*remove_channel) (struct ltt_channel_struct *channel);
-       void (*user_errors) (struct ltt_trace_struct *trace,
-                               unsigned int index, size_t data_size,
-                               struct user_dbg_data *dbg, int cpu);
-#ifdef CONFIG_HOTPLUG_CPU
-       int (*handle_cpuhp) (struct notifier_block *nb,
-                               unsigned long action, void *hcpu,
-                               struct ltt_trace_struct *trace);
-#endif
+       /* End of first 32 bytes cacheline */
+       int (*create_dirs) (struct ltt_trace_struct *new_trace);
+       void (*remove_dirs) (struct ltt_trace_struct *new_trace);
+       int (*create_channel) (const char *trace_name,
+                               struct ltt_trace_struct *trace,
+                               struct dentry *dir, const char *channel_name,
+                               struct ltt_channel_struct *ltt_chan,
+                               unsigned int subbuf_size,
+                               unsigned int n_subbufs, int overwrite);
+       void (*finish_channel) (struct ltt_channel_struct *channel);
+       void (*remove_channel) (struct ltt_channel_struct *channel);
+       void (*user_errors) (struct ltt_trace_struct *trace,
+                               unsigned int index, size_t data_size,
+                               struct user_dbg_data *dbg);
 } ____cacheline_aligned;
 
 struct ltt_transport {
@@ -213,11 +188,9 @@ struct ltt_trace_struct {
        struct {
                struct dentry                   *trace_root;
        } dentry;
-       struct rchan_callbacks callbacks;
        struct kref kref; /* Each channel has a kref of the trace struct */
        struct ltt_transport *transport;
        struct kref ltt_transport_kref;
-       wait_queue_head_t kref_wq; /* Place for ltt_trace_destroy to sleep */
        char trace_name[NAME_MAX];
 } ____cacheline_aligned;
 
@@ -341,8 +314,6 @@ static inline unsigned char ltt_get_header_size(
        size_t orig_offset = offset;
        size_t padding;
 
-       BUILD_BUG_ON(sizeof(struct ltt_event_header) != sizeof(u32));
-
        padding = ltt_align(offset, sizeof(struct ltt_event_header));
        offset += padding;
        offset += sizeof(struct ltt_event_header);
@@ -505,12 +476,11 @@ static inline int ltt_reserve_slot(
                long *buf_offset,
                u64 *tsc,
                unsigned int *rflags,
-               int largest_align,
-               int cpu)
+               int largest_align)
 {
        return trace->ops->reserve_slot(trace, channel, transport_data,
                        data_size, slot_size, buf_offset, tsc, rflags,
-                       largest_align, cpu);
+                       largest_align);
 }
 
 
@@ -547,35 +517,21 @@ static inline void ltt_commit_slot(
  * cpu channel :
  * cpu
  */
-#define LTT_RELAY_ROOT         "ltt"
-#define LTT_RELAY_LOCKED_ROOT  "ltt-locked"
 
 #define LTT_METADATA_CHANNEL           "metadata_state"
-#define LTT_FD_STATE_CHANNEL           "fd_state"
-#define LTT_GLOBAL_STATE_CHANNEL       "global_state"
-#define LTT_IRQ_STATE_CHANNEL          "irq_state"
-#define LTT_MODULE_STATE_CHANNEL       "module_state"
-#define LTT_NETIF_STATE_CHANNEL                "netif_state"
-#define LTT_SOFTIRQ_STATE_CHANNEL      "softirq_state"
-#define LTT_SWAP_STATE_CHANNEL         "swap_state"
-#define LTT_SYSCALL_STATE_CHANNEL      "syscall_state"
-#define LTT_TASK_STATE_CHANNEL         "task_state"
-#define LTT_VM_STATE_CHANNEL           "vm_state"
-#define LTT_FS_CHANNEL                 "fs"
-#define LTT_INPUT_CHANNEL              "input"
-#define LTT_IPC_CHANNEL                        "ipc"
-#define LTT_KERNEL_CHANNEL             "kernel"
-#define LTT_MM_CHANNEL                 "mm"
-#define LTT_RCU_CHANNEL                        "rcu"
+#define LTT_UST_CHANNEL                        "ust"
 
 #define LTT_FLIGHT_PREFIX      "flight-"
 
 /* Tracer properties */
-#define LTT_DEFAULT_SUBBUF_SIZE_LOW    65536
+//#define LTT_DEFAULT_SUBBUF_SIZE_LOW  65536
+#define LTT_DEFAULT_SUBBUF_SIZE_LOW    4096
 #define LTT_DEFAULT_N_SUBBUFS_LOW      2
-#define LTT_DEFAULT_SUBBUF_SIZE_MED    262144
+//#define LTT_DEFAULT_SUBBUF_SIZE_MED  262144
+#define LTT_DEFAULT_SUBBUF_SIZE_MED    4096
 #define LTT_DEFAULT_N_SUBBUFS_MED      2
-#define LTT_DEFAULT_SUBBUF_SIZE_HIGH   1048576
+//#define LTT_DEFAULT_SUBBUF_SIZE_HIGH 1048576
+#define LTT_DEFAULT_SUBBUF_SIZE_HIGH   4096    
 #define LTT_DEFAULT_N_SUBBUFS_HIGH     2
 #define LTT_TRACER_MAGIC_NUMBER                0x00D6B7ED
 #define LTT_TRACER_VERSION_MAJOR       2
@@ -597,22 +553,11 @@ enum ltt_module_function {
        LTT_FUNCTION_STATEDUMP
 };
 
-extern int ltt_module_register(enum ltt_module_function name, void *function,
-               struct module *owner);
-extern void ltt_module_unregister(enum ltt_module_function name);
-
 void ltt_transport_register(struct ltt_transport *transport);
 void ltt_transport_unregister(struct ltt_transport *transport);
 
 /* Exported control function */
 
-enum ltt_control_msg {
-       LTT_CONTROL_START,
-       LTT_CONTROL_STOP,
-       LTT_CONTROL_CREATE_TRACE,
-       LTT_CONTROL_DESTROY_TRACE
-};
-
 union ltt_control_args {
        struct {
                enum trace_mode mode;
@@ -642,9 +587,6 @@ int ltt_trace_destroy(const char *trace_name);
 int ltt_trace_start(const char *trace_name);
 int ltt_trace_stop(const char *trace_name);
 
-extern int ltt_control(enum ltt_control_msg msg, const char *trace_name,
-               const char *trace_type, union ltt_control_args args);
-
 enum ltt_filter_control_msg {
        LTT_FILTER_DEFAULT_ACCEPT,
        LTT_FILTER_DEFAULT_REJECT
@@ -677,40 +619,6 @@ extern void ltt_dump_marker_state(struct ltt_trace_struct *trace);
 void ltt_lock_traces(void);
 void ltt_unlock_traces(void);
 
-extern void ltt_dump_softirq_vec(void *call_data);
-
-#ifdef CONFIG_HAVE_LTT_DUMP_TABLES
-extern void ltt_dump_sys_call_table(void *call_data);
-extern void ltt_dump_idt_table(void *call_data);
-#else
-static inline void ltt_dump_sys_call_table(void *call_data)
-{
-}
-
-static inline void ltt_dump_idt_table(void *call_data)
-{
-}
-#endif
-
-#ifdef CONFIG_LTT_KPROBES
-extern void ltt_dump_kprobes_table(void *call_data);
-#else
-static inline void ltt_dump_kprobes_table(void *call_data)
-{
-}
-#endif
-
-/* Relay IOCTL */
-
-/* Get the next sub buffer that can be read. */
-#define RELAY_GET_SUBBUF               _IOR(0xF5, 0x00, __u32)
-/* Release the oldest reserved (by "get") sub buffer. */
-#define RELAY_PUT_SUBBUF               _IOW(0xF5, 0x01, __u32)
-/* returns the number of sub buffers in the per cpu channel. */
-#define RELAY_GET_N_SUBBUFS            _IOR(0xF5, 0x02, __u32)
-/* returns the size of the sub buffers. */
-#define RELAY_GET_SUBBUF_SIZE          _IOR(0xF5, 0x03, __u32)
-
-#endif /* CONFIG_LTT */
+struct ltt_trace_struct *_ltt_trace_find(const char *trace_name);
 
 #endif /* _LTT_TRACER_H */
This page took 0.025292 seconds and 4 git commands to generate.