trace_events.c (6b93f350e55f3f2ee071dd41109d936abfba8ebf) | trace_events.c (d23569979ca1cd139a42c410e0c7b9e6014c3b3a) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * event tracer 4 * 5 * Copyright (C) 2008 Red Hat Inc, Steven Rostedt <srostedt@redhat.com> 6 * 7 * - Added format output of fields of the trace point. 8 * This was based off of work by Tom Zanussi <tzanussi@gmail.com>. --- 2882 unchanged lines hidden (view full) --- 2891 update_event_fields(call, map[i]); 2892 } 2893 } 2894 cond_resched(); 2895 } 2896 up_write(&trace_event_sem); 2897} 2898 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * event tracer 4 * 5 * Copyright (C) 2008 Red Hat Inc, Steven Rostedt <srostedt@redhat.com> 6 * 7 * - Added format output of fields of the trace point. 8 * This was based off of work by Tom Zanussi <tzanussi@gmail.com>. --- 2882 unchanged lines hidden (view full) --- 2891 update_event_fields(call, map[i]); 2892 } 2893 } 2894 cond_resched(); 2895 } 2896 up_write(&trace_event_sem); 2897} 2898 |
2899static bool event_in_systems(struct trace_event_call *call, 2900 const char *systems) 2901{ 2902 const char *system; 2903 const char *p; 2904 2905 if (!systems) 2906 return true; 2907 2908 system = call->class->system; 2909 p = strstr(systems, system); 2910 if (!p) 2911 return false; 2912 2913 if (p != systems && !isspace(*(p - 1)) && *(p - 1) != ',') 2914 return false; 2915 2916 p += strlen(system); 2917 return !*p || isspace(*p) || *p == ','; 2918} 2919 |
|
2899static struct trace_event_file * 2900trace_create_new_event(struct trace_event_call *call, 2901 struct trace_array *tr) 2902{ 2903 struct trace_pid_list *no_pid_list; 2904 struct trace_pid_list *pid_list; 2905 struct trace_event_file *file; 2906 unsigned int first; 2907 | 2920static struct trace_event_file * 2921trace_create_new_event(struct trace_event_call *call, 2922 struct trace_array *tr) 2923{ 2924 struct trace_pid_list *no_pid_list; 2925 struct trace_pid_list *pid_list; 2926 struct trace_event_file *file; 2927 unsigned int first; 2928 |
2929 if (!event_in_systems(call, tr->system_names)) 2930 return NULL; 2931 |
|
2908 file = kmem_cache_alloc(file_cachep, GFP_TRACE); 2909 if (!file) | 2932 file = kmem_cache_alloc(file_cachep, GFP_TRACE); 2933 if (!file) |
2910 return NULL; | 2934 return ERR_PTR(-ENOMEM); |
2911 2912 pid_list = rcu_dereference_protected(tr->filtered_pids, 2913 lockdep_is_held(&event_mutex)); 2914 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids, 2915 lockdep_is_held(&event_mutex)); 2916 2917 if (!trace_pid_list_first(pid_list, &first) || 2918 !trace_pid_list_first(no_pid_list, &first)) --- 48 unchanged lines hidden (view full) --- 2967 2968/* Add an event to a trace directory */ 2969static int 2970__trace_add_new_event(struct trace_event_call *call, struct trace_array *tr) 2971{ 2972 struct trace_event_file *file; 2973 2974 file = trace_create_new_event(call, tr); | 2935 2936 pid_list = rcu_dereference_protected(tr->filtered_pids, 2937 lockdep_is_held(&event_mutex)); 2938 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids, 2939 lockdep_is_held(&event_mutex)); 2940 2941 if (!trace_pid_list_first(pid_list, &first) || 2942 !trace_pid_list_first(no_pid_list, &first)) --- 48 unchanged lines hidden (view full) --- 2991 2992/* Add an event to a trace directory */ 2993static int 2994__trace_add_new_event(struct trace_event_call *call, struct trace_array *tr) 2995{ 2996 struct trace_event_file *file; 2997 2998 file = trace_create_new_event(call, tr); |
2999 /* 3000 * trace_create_new_event() returns ERR_PTR(-ENOMEM) if failed 3001 * allocation, or NULL if the event is not part of the tr->system_names. 3002 * When the event is not part of the tr->system_names, return zero, not 3003 * an error. 3004 */ |
|
2975 if (!file) | 3005 if (!file) |
2976 return -ENOMEM; | 3006 return 0; |
2977 | 3007 |
3008 if (IS_ERR(file)) 3009 return PTR_ERR(file); 3010 |
|
2978 if (eventdir_initialized) 2979 return event_create_dir(tr->event_dir, file); 2980 else 2981 return event_define_fields(call); 2982} 2983 2984static void trace_early_triggers(struct trace_event_file *file, const char *name) 2985{ --- 21 unchanged lines hidden (view full) --- 3007static int 3008__trace_early_add_new_event(struct trace_event_call *call, 3009 struct trace_array *tr) 3010{ 3011 struct trace_event_file *file; 3012 int ret; 3013 3014 file = trace_create_new_event(call, tr); | 3011 if (eventdir_initialized) 3012 return event_create_dir(tr->event_dir, file); 3013 else 3014 return event_define_fields(call); 3015} 3016 3017static void trace_early_triggers(struct trace_event_file *file, const char *name) 3018{ --- 21 unchanged lines hidden (view full) --- 3040static int 3041__trace_early_add_new_event(struct trace_event_call *call, 3042 struct trace_array *tr) 3043{ 3044 struct trace_event_file *file; 3045 int ret; 3046 3047 file = trace_create_new_event(call, tr); |
3048 /* 3049 * trace_create_new_event() returns ERR_PTR(-ENOMEM) if failed 3050 * allocation, or NULL if the event is not part of the tr->system_names. 3051 * When the event is not part of the tr->system_names, return zero, not 3052 * an error. 3053 */ |
|
3015 if (!file) | 3054 if (!file) |
3016 return -ENOMEM; | 3055 return 0; |
3017 | 3056 |
3057 if (IS_ERR(file)) 3058 return PTR_ERR(file); 3059 |
|
3018 ret = event_define_fields(call); 3019 if (ret) 3020 return ret; 3021 3022 trace_early_triggers(file, trace_event_name(call)); 3023 3024 return 0; 3025} --- 1273 unchanged lines hidden --- | 3060 ret = event_define_fields(call); 3061 if (ret) 3062 return ret; 3063 3064 trace_early_triggers(file, trace_event_name(call)); 3065 3066 return 0; 3067} --- 1273 unchanged lines hidden --- |