@@ -84,6 +84,7 @@ enum hist_field_flags {
84
84
HIST_FIELD_FL_SYM = 16 ,
85
85
HIST_FIELD_FL_SYM_OFFSET = 32 ,
86
86
HIST_FIELD_FL_EXECNAME = 64 ,
87
+ HIST_FIELD_FL_SYSCALL = 128 ,
87
88
};
88
89
89
90
struct hist_trigger_attrs {
@@ -474,6 +475,8 @@ static int create_key_field(struct hist_trigger_data *hist_data,
474
475
else if ((strcmp (field_str , "execname" ) == 0 ) &&
475
476
(strcmp (field_name , "common_pid" ) == 0 ))
476
477
flags |= HIST_FIELD_FL_EXECNAME ;
478
+ else if (strcmp (field_str , "syscall" ) == 0 )
479
+ flags |= HIST_FIELD_FL_SYSCALL ;
477
480
else {
478
481
ret = - EINVAL ;
479
482
goto out ;
@@ -854,6 +857,16 @@ hist_trigger_entry_print(struct seq_file *m,
854
857
uval = * (u64 * )(key + key_field -> offset );
855
858
seq_printf (m , "%s: %-16s[%10llu]" ,
856
859
key_field -> field -> name , comm , uval );
860
+ } else if (key_field -> flags & HIST_FIELD_FL_SYSCALL ) {
861
+ const char * syscall_name ;
862
+
863
+ uval = * (u64 * )(key + key_field -> offset );
864
+ syscall_name = get_syscall_name (uval );
865
+ if (!syscall_name )
866
+ syscall_name = "unknown_syscall" ;
867
+
868
+ seq_printf (m , "%s: %-30s[%3llu]" ,
869
+ key_field -> field -> name , syscall_name , uval );
857
870
} else if (key_field -> flags & HIST_FIELD_FL_STRING ) {
858
871
seq_printf (m , "%s: %-50s" , key_field -> field -> name ,
859
872
(char * )(key + key_field -> offset ));
@@ -975,6 +988,8 @@ static const char *get_hist_field_flags(struct hist_field *hist_field)
975
988
flags_str = "sym-offset" ;
976
989
else if (hist_field -> flags & HIST_FIELD_FL_EXECNAME )
977
990
flags_str = "execname" ;
991
+ else if (hist_field -> flags & HIST_FIELD_FL_SYSCALL )
992
+ flags_str = "syscall" ;
978
993
979
994
return flags_str ;
980
995
}
0 commit comments