xref: /aosp_15_r20/external/libtraceevent/include/traceevent/event-utils.h (revision 436bf2bcd5202612ffffe471bbcc1f277cc8d28e)
1*436bf2bcSAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1 */
2*436bf2bcSAndroid Build Coastguard Worker /*
3*436bf2bcSAndroid Build Coastguard Worker  * Copyright (C) 2010 Red Hat Inc, Steven Rostedt <[email protected]>
4*436bf2bcSAndroid Build Coastguard Worker  *
5*436bf2bcSAndroid Build Coastguard Worker  */
6*436bf2bcSAndroid Build Coastguard Worker #ifndef __TEP_EVENT_UTIL_H
7*436bf2bcSAndroid Build Coastguard Worker #define __TEP_EVENT_UTIL_H
8*436bf2bcSAndroid Build Coastguard Worker 
9*436bf2bcSAndroid Build Coastguard Worker #include <ctype.h>
10*436bf2bcSAndroid Build Coastguard Worker #include <stdarg.h>
11*436bf2bcSAndroid Build Coastguard Worker #include <stdbool.h>
12*436bf2bcSAndroid Build Coastguard Worker 
13*436bf2bcSAndroid Build Coastguard Worker #include "event-parse.h"
14*436bf2bcSAndroid Build Coastguard Worker 
15*436bf2bcSAndroid Build Coastguard Worker void tep_warning(const char *fmt, ...);
16*436bf2bcSAndroid Build Coastguard Worker void tep_info(const char *fmt, ...);
17*436bf2bcSAndroid Build Coastguard Worker 
18*436bf2bcSAndroid Build Coastguard Worker /* Can be overridden */
19*436bf2bcSAndroid Build Coastguard Worker int tep_vprint(const char *name, enum tep_loglevel level,
20*436bf2bcSAndroid Build Coastguard Worker 	       bool print_err, const char *fmt, va_list ap);
21*436bf2bcSAndroid Build Coastguard Worker 
22*436bf2bcSAndroid Build Coastguard Worker /* The actual call of tep_vprint() for overrides to use */
23*436bf2bcSAndroid Build Coastguard Worker int __tep_vprint(const char *name, enum tep_loglevel level,
24*436bf2bcSAndroid Build Coastguard Worker 		 bool print_err, const char *fmt, va_list ap);
25*436bf2bcSAndroid Build Coastguard Worker 
26*436bf2bcSAndroid Build Coastguard Worker 
27*436bf2bcSAndroid Build Coastguard Worker #define __deprecated(msg) __attribute__((deprecated("msg")))
28*436bf2bcSAndroid Build Coastguard Worker 
29*436bf2bcSAndroid Build Coastguard Worker /* For backward compatibilty, do not use */
30*436bf2bcSAndroid Build Coastguard Worker int tep_vwarning(const char *name, const char *fmt, va_list ap) __deprecated(Use tep_vprint instead);
31*436bf2bcSAndroid Build Coastguard Worker void pr_stat(const char *fmt, ...) __deprecated(Use tep_info instead);
32*436bf2bcSAndroid Build Coastguard Worker void vpr_stat(const char *fmt, va_list ap) __deprecated(Use tep_vprint instead);
33*436bf2bcSAndroid Build Coastguard Worker void __pr_stat(const char *fmt, ...) __deprecated(Use tep_info instead);;
34*436bf2bcSAndroid Build Coastguard Worker void __vpr_stat(const char *fmt, va_list ap) __deprecated(Use tep_vprint instead);;
35*436bf2bcSAndroid Build Coastguard Worker 
36*436bf2bcSAndroid Build Coastguard Worker #define min(x, y) ({				\
37*436bf2bcSAndroid Build Coastguard Worker 	typeof(x) _min1 = (x);			\
38*436bf2bcSAndroid Build Coastguard Worker 	typeof(y) _min2 = (y);			\
39*436bf2bcSAndroid Build Coastguard Worker 	(void) (&_min1 == &_min2);		\
40*436bf2bcSAndroid Build Coastguard Worker 	_min1 < _min2 ? _min1 : _min2; })
41*436bf2bcSAndroid Build Coastguard Worker 
strim(char * string)42*436bf2bcSAndroid Build Coastguard Worker static inline char *strim(char *string)
43*436bf2bcSAndroid Build Coastguard Worker {
44*436bf2bcSAndroid Build Coastguard Worker 	char *ret;
45*436bf2bcSAndroid Build Coastguard Worker 
46*436bf2bcSAndroid Build Coastguard Worker 	if (!string)
47*436bf2bcSAndroid Build Coastguard Worker 		return NULL;
48*436bf2bcSAndroid Build Coastguard Worker 	while (*string) {
49*436bf2bcSAndroid Build Coastguard Worker 		if (!isspace(*string))
50*436bf2bcSAndroid Build Coastguard Worker 			break;
51*436bf2bcSAndroid Build Coastguard Worker 		string++;
52*436bf2bcSAndroid Build Coastguard Worker 	}
53*436bf2bcSAndroid Build Coastguard Worker 	ret = string;
54*436bf2bcSAndroid Build Coastguard Worker 
55*436bf2bcSAndroid Build Coastguard Worker 	string = ret + strlen(ret) - 1;
56*436bf2bcSAndroid Build Coastguard Worker 	while (string > ret) {
57*436bf2bcSAndroid Build Coastguard Worker 		if (!isspace(*string))
58*436bf2bcSAndroid Build Coastguard Worker 			break;
59*436bf2bcSAndroid Build Coastguard Worker 		string--;
60*436bf2bcSAndroid Build Coastguard Worker 	}
61*436bf2bcSAndroid Build Coastguard Worker 	string[1] = 0;
62*436bf2bcSAndroid Build Coastguard Worker 
63*436bf2bcSAndroid Build Coastguard Worker 	return ret;
64*436bf2bcSAndroid Build Coastguard Worker }
65*436bf2bcSAndroid Build Coastguard Worker 
has_text(const char * text)66*436bf2bcSAndroid Build Coastguard Worker static inline int has_text(const char *text)
67*436bf2bcSAndroid Build Coastguard Worker {
68*436bf2bcSAndroid Build Coastguard Worker 	if (!text)
69*436bf2bcSAndroid Build Coastguard Worker 		return 0;
70*436bf2bcSAndroid Build Coastguard Worker 
71*436bf2bcSAndroid Build Coastguard Worker 	while (*text) {
72*436bf2bcSAndroid Build Coastguard Worker 		if (!isspace(*text))
73*436bf2bcSAndroid Build Coastguard Worker 			return 1;
74*436bf2bcSAndroid Build Coastguard Worker 		text++;
75*436bf2bcSAndroid Build Coastguard Worker 	}
76*436bf2bcSAndroid Build Coastguard Worker 
77*436bf2bcSAndroid Build Coastguard Worker 	return 0;
78*436bf2bcSAndroid Build Coastguard Worker }
79*436bf2bcSAndroid Build Coastguard Worker 
80*436bf2bcSAndroid Build Coastguard Worker #endif
81