[PATCH] Don't overwrite magic in trace
[blktrace.git] / blktrace.h
CommitLineData
d0ca268b
JA
1#if !defined(__BLKTRACE_H__)
2#define __BLKTRACE_H__ 1
3
4#include <asm/types.h>
5
6enum {
7 BLK_TC_READ = 1 << 0, /* reads */
8 BLK_TC_WRITE = 1 << 1, /* writes */
9 BLK_TC_BARRIER = 1 << 2, /* barrier */
10 BLK_TC_SYNC = 1 << 3, /* barrier */
11 BLK_TC_QUEUE = 1 << 4, /* queueing/merging */
12 BLK_TC_REQUEUE = 1 << 5, /* requeueing */
13 BLK_TC_ISSUE = 1 << 6, /* issue */
14 BLK_TC_COMPLETE = 1 << 7, /* completions */
15 BLK_TC_FS = 1 << 8, /* fs requests */
16 BLK_TC_PC = 1 << 9, /* pc requests */
17
18 BLK_TC_END = 1 << 15, /* only 16-bits, reminder */
19};
20
21#define BLK_TC_SHIFT (16)
22#define BLK_TC_ACT(act) ((act) << BLK_TC_SHIFT)
23
24/*
25 * Basic trace actions
26 */
27enum {
28 __BLK_TA_QUEUE = 1, /* queued */
29 __BLK_TA_BACKMERGE, /* back merged to existing rq */
30 __BLK_TA_FRONTMERGE, /* front merge to existing rq */
31 __BLK_TA_GETRQ, /* allocated new request */
32 __BLK_TA_SLEEPRQ, /* sleeping on rq allocation */
33 __BLK_TA_REQUEUE, /* request requeued */
34 __BLK_TA_ISSUE, /* sent to driver */
35 __BLK_TA_COMPLETE, /* completed by driver */
36};
37
38/*
39 * Trace actions in full. Additionally, read or write is masked
40 */
41#define BLK_TA_QUEUE (__BLK_TA_QUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
42#define BLK_TA_BACKMERGE (__BLK_TA_BACKMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
43#define BLK_TA_FRONTMERGE (__BLK_TA_FRONTMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
44#define BLK_TA_GETRQ (__BLK_TA_GETRQ | BLK_TC_ACT(BLK_TC_QUEUE))
45#define BLK_TA_SLEEPRQ (__BLK_TA_SLEEPRQ | BLK_TC_ACT(BLK_TC_QUEUE))
46#define BLK_TA_REQUEUE (__BLK_TA_REQUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
47#define BLK_TA_ISSUE (__BLK_TA_ISSUE | BLK_TC_ACT(BLK_TC_ISSUE))
48#define BLK_TA_COMPLETE (__BLK_TA_COMPLETE| BLK_TC_ACT(BLK_TC_COMPLETE))
49
50#define BLK_IO_TRACE_MAGIC (0x65617400)
51#define CHECK_MAGIC(t) (((t)->magic & 0xffffff00) == BLK_IO_TRACE_MAGIC)
52#define SUPPORTED_VERSION (0x02)
53
54struct blk_io_trace {
55 __u32 magic;
56 __u32 sequence;
57 __u64 time;
58 __u64 sector;
59 __u32 bytes;
60 __u32 action;
61 __u32 pid;
62 __u16 error;
63 __u16 pdu_len;
64};
65
66struct blk_user_trace_setup {
67 char name[32];
68 __u16 act_mask;
69 __u32 buf_size;
70 __u32 buf_nr;
71};
72
73
74#ifndef BLKSTARTTRACE
75#define BLKSTARTTRACE _IOWR(0x12,115,struct blk_user_trace_setup)
76#define BLKSTOPTRACE _IO(0x12,116)
77#endif
78
79#endif