1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM fsnotify 4 5 #if !defined(_TRACE_FSNOTIFY_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_FSNOTIFY_H 7 8 #include <linux/tracepoint.h> 9 10 #include <trace/misc/fsnotify.h> 11 12 TRACE_EVENT(fsnotify, 13 TP_PROTO(__u32 mask, const void *data, int data_type, 14 struct inode *dir, const struct qstr *file_name, 15 struct inode *inode, u32 cookie), 16 17 TP_ARGS(mask, data, data_type, dir, file_name, inode, cookie), 18 19 TP_STRUCT__entry( 20 __field(__u32, mask) 21 __field(unsigned long, dir_ino) 22 __field(unsigned long, ino) 23 __field(dev_t, s_dev) 24 __field(int, data_type) 25 __field(u32, cookie) 26 __string(file_name, file_name ? (const char *)file_name->name : "") 27 ), 28 29 TP_fast_assign( 30 __entry->mask = mask; 31 __entry->dir_ino = dir ? dir->i_ino : 0; 32 __entry->ino = inode ? inode->i_ino : 0; 33 __entry->s_dev = dir ? dir->i_sb->s_dev : 34 inode ? inode->i_sb->s_dev : 0; 35 __entry->data_type = data_type; 36 __entry->cookie = cookie; 37 __assign_str(file_name); 38 ), 39 40 TP_printk("dev=%d:%d dir=%lu ino=%lu data_type=%d cookie=0x%x mask=0x%x %s name=%s", 41 MAJOR(__entry->s_dev), MINOR(__entry->s_dev), 42 __entry->dir_ino, __entry->ino, 43 __entry->data_type, __entry->cookie, 44 __entry->mask, show_fsnotify_mask(__entry->mask), 45 __get_str(file_name)) 46 ); 47 48 #endif /* _TRACE_FSNOTIFY_H */ 49 50 /* This part must be outside protection */ 51 #include <trace/define_trace.h> 52