[RFC PATCH 26/38] blktrace: add trace entry & pdu helpers

Chaitanya Kulkarni <[email protected]>
Newsgroups org.kernel.vger.linux-btrace
Message-ID <[email protected]>
Signed-off-by: Chaitanya Kulkarni <[email protected]>
---
 kernel/trace/blktrace.c | 55 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index c8b5955163ad..ff776e117793 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -1732,52 +1732,107 @@ const struct blk_io_trace *te_blk_io_trace(const struct trace_entry *ent)
 	return (const struct blk_io_trace *)ent;
 }
 
+static inline
+const struct blk_io_trace_ext *te_blk_io_trace_ext(const struct trace_entry *ent)
+{
+	return (const struct blk_io_trace_ext *)ent;
+}
+
 static inline const void *pdu_start(const struct trace_entry *ent, bool has_cg)
 {
 	return (void *)(te_blk_io_trace(ent) + 1) + (has_cg ? sizeof(u64) : 0);
 }
 
+static inline const void *pdu_start_ext(const struct trace_entry *ent, bool has_cg)
+{
+	return (void *)(te_blk_io_trace_ext(ent) + 1) +
+		(has_cg ? sizeof(u64) : 0);
+
+}
+
 static inline u64 t_cgid(const struct trace_entry *ent)
 {
 	return *(u64 *)(te_blk_io_trace(ent) + 1);
 }
 
+static inline const void *cgid_start_ext(const struct trace_entry *ent)
+{
+	return (void *)(te_blk_io_trace_ext(ent) + 1);
+}
+
 static inline int pdu_real_len(const struct trace_entry *ent, bool has_cg)
 {
 	return te_blk_io_trace(ent)->pdu_len - (has_cg ? sizeof(u64) : 0);
 }
 
+static inline int pdu_real_len_ext(const struct trace_entry *ent, bool has_cg)
+{
+	return te_blk_io_trace_ext(ent)->pdu_len -
+			(has_cg ? sizeof(u64) : 0);
+}
+
 static inline u32 t_action(const struct trace_entry *ent)
 {
 	return te_blk_io_trace(ent)->action;
 }
 
+static inline u64 t_action_ext(const struct trace_entry *ent)
+{
+	return te_blk_io_trace_ext(ent)->action;
+}
+
 static inline u32 t_bytes(const struct trace_entry *ent)
 {
 	return te_blk_io_trace(ent)->bytes;
 }
 
+static inline u32 t_bytes_ext(const struct trace_entry *ent)
+{
+	return te_blk_io_trace_ext(ent)->bytes;
+}
+
 static inline u32 t_sec(const struct trace_entry *ent)
 {
 	return te_blk_io_trace(ent)->bytes >> 9;
 }
 
+static inline u32 t_sec_ext(const struct trace_entry *ent)
+{
+	return te_blk_io_trace_ext(ent)->bytes >> 9;
+}
+
 static inline unsigned long long t_sector(const struct trace_entry *ent)
 {
 	return te_blk_io_trace(ent)->sector;
 }
 
+static inline unsigned long long t_sector_ext(const struct trace_entry *ent)
+{
+	return te_blk_io_trace_ext(ent)->sector;
+}
+
 static inline __u16 t_error(const struct trace_entry *ent)
 {
 	return te_blk_io_trace(ent)->error;
 }
 
+static inline __u16 t_error_ext(const struct trace_entry *ent)
+{
+	return te_blk_io_trace_ext(ent)->error;
+}
+
 static __u64 get_pdu_int(const struct trace_entry *ent, bool has_cg)
 {
 	const __be64 *val = pdu_start(ent, has_cg);
 	return be64_to_cpu(*val);
 }
 
+static __u64 get_pdu_int_ext(const struct trace_entry *ent, bool has_cg)
+{
+	const __u64 *val = pdu_start_ext(ent, has_cg);
+	return be64_to_cpu(*val);
+}
+
 typedef void (blk_log_action_t) (struct trace_iterator *iter, const char *act,
 	bool has_cg);
 
-- 
2.22.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.