add libtracing Makefile.am
[ust.git] / libtracing / tracer.h
index 3143ab185089713992c1aae5f31c6e9f070bfef0..cc86d548ecfb39e6a4af5429289e0ee55de67da2 100644 (file)
@@ -1,33 +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
 
-//ust// #include <stdarg.h>
-//ust// #include <linux/types.h>
-//ust// #include <linux/limits.h>
-//ust// #include <linux/list.h>
-//ust// #include <linux/cache.h>
-//ust// #include <linux/kernel.h>
-//ust// #include <linux/timex.h>
-//ust// #include <linux/wait.h>
-//ust// #include <linux/ltt-relay.h>
-//ust// #include <linux/ltt-channels.h>
-//ust// #include <linux/ltt-core.h>
-//ust// #include <linux/marker.h>
-//ust// #include <linux/trace-clock.h>
-//ust// #include <asm/atomic.h>
-//ust// #include <asm/local.h>
 #include <sys/types.h>
 #include <stdarg.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
@@ -68,13 +60,13 @@ size_t ltt_serialize_data(struct rchan_buf *buf, size_t buf_offset,
                        void *serialize_private,
                        int *largest_align, const char *fmt, va_list *args);
 
-//ust// struct ltt_available_probe {
-//ust//        const char *name;               /* probe name */
-//ust//        const char *format;
-//ust//        marker_probe_func *probe_func;
-//ust//        ltt_serialize_cb callbacks[LTT_NR_CALLBACKS];
-//ust//        struct list_head node;          /* registered probes list */
-//ust// };
+struct ltt_available_probe {
+       const char *name;               /* probe name */
+       const char *format;
+       marker_probe_func *probe_func;
+       ltt_serialize_cb callbacks[LTT_NR_CALLBACKS];
+       struct list_head node;          /* registered probes list */
+};
 
 struct ltt_probe_private_data {
        struct ltt_trace_struct *trace; /*
@@ -129,8 +121,6 @@ static inline enum marker_id marker_id_type(uint16_t id)
                return MARKER_ID_DYNAMIC;
 }
 
-//ust// #ifdef CONFIG_LTT
-
 struct user_dbg_data {
        unsigned long avail_size;
        unsigned long write;
@@ -144,18 +134,17 @@ 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);
        void (*wakeup_channel) (struct ltt_channel_struct *ltt_channel);
-//ust//        int (*user_blocking) (struct ltt_trace_struct *trace,
-//ust//                                unsigned int index, size_t data_size,
-//ust//                                struct user_dbg_data *dbg);
-//ust//        /* End of first 32 bytes cacheline */
-//ust//        int (*create_dirs) (struct ltt_trace_struct *new_trace);
-//ust//        void (*remove_dirs) (struct ltt_trace_struct *new_trace);
+       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,
@@ -166,12 +155,7 @@ struct ltt_trace_ops {
        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);
-//ust// #ifdef CONFIG_HOTPLUG_CPU
-//ust//        int (*handle_cpuhp) (struct notifier_block *nb,
-//ust//                                unsigned long action, void *hcpu,
-//ust//                                struct ltt_trace_struct *trace);
-//ust// #endif
+                               struct user_dbg_data *dbg);
 } ____cacheline_aligned;
 
 struct ltt_transport {
@@ -204,11 +188,9 @@ struct ltt_trace_struct {
        struct {
                struct dentry                   *trace_root;
        } dentry;
-//ust//        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;
-//ust//        wait_queue_head_t kref_wq; /* Place for ltt_trace_destroy to sleep */
        char trace_name[NAME_MAX];
 } ____cacheline_aligned;
 
@@ -332,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);
@@ -496,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);
 }
 
 
@@ -538,8 +517,6 @@ static inline void ltt_commit_slot(
  * cpu channel :
  * cpu
  */
-//ust// #define LTT_RELAY_ROOT         "ltt"
-//ust// #define LTT_RELAY_LOCKED_ROOT  "ltt-locked"
 
 #define LTT_METADATA_CHANNEL           "metadata_state"
 #define LTT_UST_CHANNEL                        "ust"
@@ -547,11 +524,14 @@ static inline void ltt_commit_slot(
 #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
@@ -573,22 +553,11 @@ enum ltt_module_function {
        LTT_FUNCTION_STATEDUMP
 };
 
-//ust// extern int ltt_module_register(enum ltt_module_function name, void *function,
-//ust//                struct module *owner);
-//ust// 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 */
 
-//ust// enum ltt_control_msg {
-//ust//        LTT_CONTROL_START,
-//ust//        LTT_CONTROL_STOP,
-//ust//        LTT_CONTROL_CREATE_TRACE,
-//ust//        LTT_CONTROL_DESTROY_TRACE
-//ust// };
-
 union ltt_control_args {
        struct {
                enum trace_mode mode;
@@ -618,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);
 
-//ust// extern int ltt_control(enum ltt_control_msg msg, const char *trace_name,
-//ust//                const char *trace_type, union ltt_control_args args);
-
 enum ltt_filter_control_msg {
        LTT_FILTER_DEFAULT_ACCEPT,
        LTT_FILTER_DEFAULT_REJECT
@@ -653,40 +619,6 @@ extern void ltt_dump_marker_state(struct ltt_trace_struct *trace);
 void ltt_lock_traces(void);
 void ltt_unlock_traces(void);
 
-//ust// extern void ltt_dump_softirq_vec(void *call_data);
-//ust// 
-//ust// #ifdef CONFIG_HAVE_LTT_DUMP_TABLES
-//ust// extern void ltt_dump_sys_call_table(void *call_data);
-//ust// extern void ltt_dump_idt_table(void *call_data);
-//ust// #else
-//ust// static inline void ltt_dump_sys_call_table(void *call_data)
-//ust// {
-//ust// }
-//ust// 
-//ust// static inline void ltt_dump_idt_table(void *call_data)
-//ust// {
-//ust// }
-//ust// #endif
-
-//ust// #ifdef CONFIG_LTT_KPROBES
-//ust// extern void ltt_dump_kprobes_table(void *call_data);
-//ust// #else
-//ust// static inline void ltt_dump_kprobes_table(void *call_data)
-//ust// {
-//ust// }
-//ust// #endif
-
-//ust// /* Relay IOCTL */
-//ust// 
-//ust// /* Get the next sub buffer that can be read. */
-//ust// #define RELAY_GET_SUBBUF               _IOR(0xF5, 0x00, __u32)
-//ust// /* Release the oldest reserved (by "get") sub buffer. */
-//ust// #define RELAY_PUT_SUBBUF               _IOW(0xF5, 0x01, __u32)
-//ust// /* returns the number of sub buffers in the per cpu channel. */
-//ust// #define RELAY_GET_N_SUBBUFS            _IOR(0xF5, 0x02, __u32)
-//ust// /* returns the size of the sub buffers. */
-//ust// #define RELAY_GET_SUBBUF_SIZE          _IOR(0xF5, 0x03, __u32)
-
-//ust// #endif /* CONFIG_LTT */
+struct ltt_trace_struct *_ltt_trace_find(const char *trace_name);
 
 #endif /* _LTT_TRACER_H */
This page took 0.025246 seconds and 4 git commands to generate.