~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/blktrace_api.h

Version: ~ [ linux-5.3 ] ~ [ linux-5.2.14 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.72 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.143 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.192 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.192 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.73 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef BLKTRACE_H
  2 #define BLKTRACE_H
  3 
  4 #include <linux/blkdev.h>
  5 #include <linux/relay.h>
  6 #include <linux/compat.h>
  7 #include <uapi/linux/blktrace_api.h>
  8 #include <linux/list.h>
  9 
 10 #if defined(CONFIG_BLK_DEV_IO_TRACE)
 11 
 12 #include <linux/sysfs.h>
 13 
 14 struct blk_trace {
 15         int trace_state;
 16         struct rchan *rchan;
 17         unsigned long __percpu *sequence;
 18         unsigned char __percpu *msg_data;
 19         u16 act_mask;
 20         u64 start_lba;
 21         u64 end_lba;
 22         u32 pid;
 23         u32 dev;
 24         struct dentry *dir;
 25         struct dentry *dropped_file;
 26         struct dentry *msg_file;
 27         struct list_head running_list;
 28         atomic_t dropped;
 29 };
 30 
 31 extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);
 32 extern void blk_trace_shutdown(struct request_queue *);
 33 extern __printf(2, 3)
 34 void __trace_note_message(struct blk_trace *, const char *fmt, ...);
 35 
 36 /**
 37  * blk_add_trace_msg - Add a (simple) message to the blktrace stream
 38  * @q:          queue the io is for
 39  * @fmt:        format to print message in
 40  * args...      Variable argument list for format
 41  *
 42  * Description:
 43  *     Records a (simple) message onto the blktrace stream.
 44  *
 45  *     NOTE: BLK_TN_MAX_MSG characters are output at most.
 46  *     NOTE: Can not use 'static inline' due to presence of var args...
 47  *
 48  **/
 49 #define blk_add_trace_msg(q, fmt, ...)                                  \
 50         do {                                                            \
 51                 struct blk_trace *bt = (q)->blk_trace;                  \
 52                 if (unlikely(bt))                                       \
 53                         __trace_note_message(bt, fmt, ##__VA_ARGS__);   \
 54         } while (0)
 55 #define BLK_TN_MAX_MSG          128
 56 
 57 static inline bool blk_trace_note_message_enabled(struct request_queue *q)
 58 {
 59         struct blk_trace *bt = q->blk_trace;
 60         if (likely(!bt))
 61                 return false;
 62         return bt->act_mask & BLK_TC_NOTIFY;
 63 }
 64 
 65 extern void blk_add_driver_data(struct request_queue *q, struct request *rq,
 66                                 void *data, size_t len);
 67 extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
 68                            struct block_device *bdev,
 69                            char __user *arg);
 70 extern int blk_trace_startstop(struct request_queue *q, int start);
 71 extern int blk_trace_remove(struct request_queue *q);
 72 extern void blk_trace_remove_sysfs(struct device *dev);
 73 extern int blk_trace_init_sysfs(struct device *dev);
 74 
 75 extern struct attribute_group blk_trace_attr_group;
 76 
 77 #else /* !CONFIG_BLK_DEV_IO_TRACE */
 78 # define blk_trace_ioctl(bdev, cmd, arg)                (-ENOTTY)
 79 # define blk_trace_shutdown(q)                          do { } while (0)
 80 # define blk_add_driver_data(q, rq, data, len)          do {} while (0)
 81 # define blk_trace_setup(q, name, dev, bdev, arg)       (-ENOTTY)
 82 # define blk_trace_startstop(q, start)                  (-ENOTTY)
 83 # define blk_trace_remove(q)                            (-ENOTTY)
 84 # define blk_add_trace_msg(q, fmt, ...)                 do { } while (0)
 85 # define blk_trace_remove_sysfs(dev)                    do { } while (0)
 86 # define blk_trace_note_message_enabled(q)              (false)
 87 static inline int blk_trace_init_sysfs(struct device *dev)
 88 {
 89         return 0;
 90 }
 91 
 92 #endif /* CONFIG_BLK_DEV_IO_TRACE */
 93 
 94 #ifdef CONFIG_COMPAT
 95 
 96 struct compat_blk_user_trace_setup {
 97         char name[BLKTRACE_BDEV_SIZE];
 98         u16 act_mask;
 99         u32 buf_size;
100         u32 buf_nr;
101         compat_u64 start_lba;
102         compat_u64 end_lba;
103         u32 pid;
104 };
105 #define BLKTRACESETUP32 _IOWR(0x12, 115, struct compat_blk_user_trace_setup)
106 
107 #endif
108 
109 extern void blk_fill_rwbs(char *rwbs, unsigned int op, int bytes);
110 
111 static inline sector_t blk_rq_trace_sector(struct request *rq)
112 {
113         return blk_rq_is_passthrough(rq) ? 0 : blk_rq_pos(rq);
114 }
115 
116 static inline unsigned int blk_rq_trace_nr_sectors(struct request *rq)
117 {
118         return blk_rq_is_passthrough(rq) ? 0 : blk_rq_sectors(rq);
119 }
120 
121 #endif
122 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp