1*4882a593Smuzhiyun #if !defined(_TRACE_ANDROID_FS_TEMPLATE_H) || defined(TRACE_HEADER_MULTI_READ) 2*4882a593Smuzhiyun #define _TRACE_ANDROID_FS_TEMPLATE_H 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <linux/tracepoint.h> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun DECLARE_EVENT_CLASS(android_fs_data_start_template, 7*4882a593Smuzhiyun TP_PROTO(struct inode *inode, loff_t offset, int bytes, 8*4882a593Smuzhiyun pid_t pid, char *pathname, char *command), 9*4882a593Smuzhiyun TP_ARGS(inode, offset, bytes, pid, pathname, command), 10*4882a593Smuzhiyun TP_STRUCT__entry( 11*4882a593Smuzhiyun __string(pathbuf, pathname) 12*4882a593Smuzhiyun __field(loff_t, offset) 13*4882a593Smuzhiyun __field(int, bytes) 14*4882a593Smuzhiyun __field(loff_t, i_size) 15*4882a593Smuzhiyun __string(cmdline, command) 16*4882a593Smuzhiyun __field(pid_t, pid) 17*4882a593Smuzhiyun __field(ino_t, ino) 18*4882a593Smuzhiyun ), 19*4882a593Smuzhiyun TP_fast_assign( 20*4882a593Smuzhiyun { 21*4882a593Smuzhiyun /* 22*4882a593Smuzhiyun * Replace the spaces in filenames and cmdlines 23*4882a593Smuzhiyun * because this screws up the tooling that parses 24*4882a593Smuzhiyun * the traces. 25*4882a593Smuzhiyun */ 26*4882a593Smuzhiyun __assign_str(pathbuf, pathname); 27*4882a593Smuzhiyun (void)strreplace(__get_str(pathbuf), ' ', '_'); 28*4882a593Smuzhiyun __entry->offset = offset; 29*4882a593Smuzhiyun __entry->bytes = bytes; 30*4882a593Smuzhiyun __entry->i_size = i_size_read(inode); 31*4882a593Smuzhiyun __assign_str(cmdline, command); 32*4882a593Smuzhiyun (void)strreplace(__get_str(cmdline), ' ', '_'); 33*4882a593Smuzhiyun __entry->pid = pid; 34*4882a593Smuzhiyun __entry->ino = inode->i_ino; 35*4882a593Smuzhiyun } 36*4882a593Smuzhiyun ), 37*4882a593Smuzhiyun TP_printk("entry_name %s, offset %llu, bytes %d, cmdline %s," 38*4882a593Smuzhiyun " pid %d, i_size %llu, ino %lu", 39*4882a593Smuzhiyun __get_str(pathbuf), __entry->offset, __entry->bytes, 40*4882a593Smuzhiyun __get_str(cmdline), __entry->pid, __entry->i_size, 41*4882a593Smuzhiyun (unsigned long) __entry->ino) 42*4882a593Smuzhiyun ); 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun DECLARE_EVENT_CLASS(android_fs_data_end_template, 45*4882a593Smuzhiyun TP_PROTO(struct inode *inode, loff_t offset, int bytes), 46*4882a593Smuzhiyun TP_ARGS(inode, offset, bytes), 47*4882a593Smuzhiyun TP_STRUCT__entry( 48*4882a593Smuzhiyun __field(ino_t, ino) 49*4882a593Smuzhiyun __field(loff_t, offset) 50*4882a593Smuzhiyun __field(int, bytes) 51*4882a593Smuzhiyun ), 52*4882a593Smuzhiyun TP_fast_assign( 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun __entry->ino = inode->i_ino; 55*4882a593Smuzhiyun __entry->offset = offset; 56*4882a593Smuzhiyun __entry->bytes = bytes; 57*4882a593Smuzhiyun } 58*4882a593Smuzhiyun ), 59*4882a593Smuzhiyun TP_printk("ino %lu, offset %llu, bytes %d", 60*4882a593Smuzhiyun (unsigned long) __entry->ino, 61*4882a593Smuzhiyun __entry->offset, __entry->bytes) 62*4882a593Smuzhiyun ); 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #endif /* _TRACE_ANDROID_FS_TEMPLATE_H */ 65