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