summaryrefslogtreecommitdiffstats
path: root/runtime/transport/utt.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/transport/utt.h')
-rw-r--r--runtime/transport/utt.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/runtime/transport/utt.h b/runtime/transport/utt.h
index b2c9fa9f..fd704009 100644
--- a/runtime/transport/utt.h
+++ b/runtime/transport/utt.h
@@ -15,11 +15,18 @@ struct utt_trace {
atomic_t dropped;
struct dentry *utt_tree_root; /* systemtap */
void *private_data;
+ atomic_t wakeup;
+ struct timer_list timer;
+ int is_global;
};
#define UTT_TRACE_ROOT_NAME_SIZE 64 /* Largest string for a root dir identifier */
#define UTT_TRACE_NAME_SIZE 64 /* Largest string for a trace identifier */
+#ifndef UTT_TIMER_INTERVAL
+#define UTT_TIMER_INTERVAL ((HZ + 99) / 100) /* Wakeup timer interval in jiffies (default 10 ms)*/
+#endif
+
/*
* User setup structure
*/
@@ -39,4 +46,33 @@ extern int utt_trace_startstop(struct utt_trace *utt, int start,
extern void utt_trace_cleanup(struct utt_trace *utt);
extern int utt_trace_remove(struct utt_trace *utt);
+#ifndef STP_OLD_TRANSPORT
+extern size_t utt_switch_subbuf(struct utt_trace *utt, struct rchan_buf *buf,
+ size_t length);
+/**
+ * utt_reserve - reserve slot in channel buffer
+ * @utt: utt channel
+ * @length: number of bytes to reserve
+ *
+ * Returns pointer to reserved slot, NULL if full.
+ *
+ * This function is utt_switch_subbuf version of relay_reserve.
+ */
+static inline void *utt_reserve(struct utt_trace *utt, size_t length)
+{
+ void *reserved;
+ struct rchan_buf *buf = utt->rchan->buf[smp_processor_id()];
+
+ if (unlikely(buf->offset + length > buf->chan->subbuf_size)) {
+ length = utt_switch_subbuf(utt, buf, length);
+ if (!length)
+ return NULL;
+ }
+ reserved = buf->data + buf->offset;
+ buf->offset += length;
+
+ return reserved;
+}
+#endif
+
#endif