|
@@ -1,8 +1,10 @@
|
|
#ifndef BLKTRACE_H
|
|
#ifndef BLKTRACE_H
|
|
#define BLKTRACE_H
|
|
#define BLKTRACE_H
|
|
|
|
|
|
|
|
+#ifdef __KERNEL__
|
|
#include <linux/blkdev.h>
|
|
#include <linux/blkdev.h>
|
|
#include <linux/relay.h>
|
|
#include <linux/relay.h>
|
|
|
|
+#endif
|
|
|
|
|
|
/*
|
|
/*
|
|
* Trace categories
|
|
* Trace categories
|
|
@@ -92,17 +94,17 @@ enum blktrace_notify {
|
|
* The trace itself
|
|
* The trace itself
|
|
*/
|
|
*/
|
|
struct blk_io_trace {
|
|
struct blk_io_trace {
|
|
- u32 magic; /* MAGIC << 8 | version */
|
|
|
|
- u32 sequence; /* event number */
|
|
|
|
- u64 time; /* in microseconds */
|
|
|
|
- u64 sector; /* disk offset */
|
|
|
|
- u32 bytes; /* transfer length */
|
|
|
|
- u32 action; /* what happened */
|
|
|
|
- u32 pid; /* who did it */
|
|
|
|
- u32 device; /* device number */
|
|
|
|
- u32 cpu; /* on what cpu did it happen */
|
|
|
|
- u16 error; /* completion error */
|
|
|
|
- u16 pdu_len; /* length of data after this trace */
|
|
|
|
|
|
+ __u32 magic; /* MAGIC << 8 | version */
|
|
|
|
+ __u32 sequence; /* event number */
|
|
|
|
+ __u64 time; /* in microseconds */
|
|
|
|
+ __u64 sector; /* disk offset */
|
|
|
|
+ __u32 bytes; /* transfer length */
|
|
|
|
+ __u32 action; /* what happened */
|
|
|
|
+ __u32 pid; /* who did it */
|
|
|
|
+ __u32 device; /* device number */
|
|
|
|
+ __u32 cpu; /* on what cpu did it happen */
|
|
|
|
+ __u16 error; /* completion error */
|
|
|
|
+ __u16 pdu_len; /* length of data after this trace */
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -120,6 +122,25 @@ enum {
|
|
Blktrace_stopped,
|
|
Blktrace_stopped,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * User setup structure passed with BLKTRACESTART
|
|
|
|
+ */
|
|
|
|
+struct blk_user_trace_setup {
|
|
|
|
+#ifdef __KERNEL__
|
|
|
|
+ char name[BDEVNAME_SIZE]; /* output */
|
|
|
|
+#else
|
|
|
|
+ char name[32]; /* output */
|
|
|
|
+#endif
|
|
|
|
+ __u16 act_mask; /* input */
|
|
|
|
+ __u32 buf_size; /* input */
|
|
|
|
+ __u32 buf_nr; /* input */
|
|
|
|
+ __u64 start_lba;
|
|
|
|
+ __u64 end_lba;
|
|
|
|
+ __u32 pid;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#ifdef __KERNEL__
|
|
|
|
+#if defined(CONFIG_BLK_DEV_IO_TRACE)
|
|
struct blk_trace {
|
|
struct blk_trace {
|
|
int trace_state;
|
|
int trace_state;
|
|
struct rchan *rchan;
|
|
struct rchan *rchan;
|
|
@@ -136,21 +157,6 @@ struct blk_trace {
|
|
atomic_t dropped;
|
|
atomic_t dropped;
|
|
};
|
|
};
|
|
|
|
|
|
-/*
|
|
|
|
- * User setup structure passed with BLKTRACESTART
|
|
|
|
- */
|
|
|
|
-struct blk_user_trace_setup {
|
|
|
|
- char name[BDEVNAME_SIZE]; /* output */
|
|
|
|
- u16 act_mask; /* input */
|
|
|
|
- u32 buf_size; /* input */
|
|
|
|
- u32 buf_nr; /* input */
|
|
|
|
- u64 start_lba;
|
|
|
|
- u64 end_lba;
|
|
|
|
- u32 pid;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-#ifdef __KERNEL__
|
|
|
|
-#if defined(CONFIG_BLK_DEV_IO_TRACE)
|
|
|
|
extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
|
|
extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
|
|
extern void blk_trace_shutdown(struct request_queue *);
|
|
extern void blk_trace_shutdown(struct request_queue *);
|
|
extern void __blk_add_trace(struct blk_trace *, sector_t, int, int, u32, int, int, void *);
|
|
extern void __blk_add_trace(struct blk_trace *, sector_t, int, int, u32, int, int, void *);
|