|
@@ -1895,4 +1895,22 @@ static inline void tracer_hardirqs_off(unsigned long a0, unsigned long a1) { }
|
|
|
|
|
|
|
|
extern struct trace_iterator *tracepoint_print_iter;
|
|
extern struct trace_iterator *tracepoint_print_iter;
|
|
|
|
|
|
|
|
|
|
+/*
|
|
|
|
|
+ * Reset the state of the trace_iterator so that it can read consumed data.
|
|
|
|
|
+ * Normally, the trace_iterator is used for reading the data when it is not
|
|
|
|
|
+ * consumed, and must retain state.
|
|
|
|
|
+ */
|
|
|
|
|
+static __always_inline void trace_iterator_reset(struct trace_iterator *iter)
|
|
|
|
|
+{
|
|
|
|
|
+ const size_t offset = offsetof(struct trace_iterator, seq);
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Keep gcc from complaining about overwriting more than just one
|
|
|
|
|
+ * member in the structure.
|
|
|
|
|
+ */
|
|
|
|
|
+ memset((char *)iter + offset, 0, sizeof(struct trace_iterator) - offset);
|
|
|
|
|
+
|
|
|
|
|
+ iter->pos = -1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
#endif /* _LINUX_KERNEL_TRACE_H */
|
|
#endif /* _LINUX_KERNEL_TRACE_H */
|