xref: /aosp_15_r20/external/igt-gpu-tools/runner/settings.h (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker #ifndef RUNNER_SETTINGS_H
2*d83cc019SAndroid Build Coastguard Worker #define RUNNER_SETTINGS_H
3*d83cc019SAndroid Build Coastguard Worker 
4*d83cc019SAndroid Build Coastguard Worker #include <stdbool.h>
5*d83cc019SAndroid Build Coastguard Worker #include <stddef.h>
6*d83cc019SAndroid Build Coastguard Worker #include <sys/types.h>
7*d83cc019SAndroid Build Coastguard Worker #include <stdio.h>
8*d83cc019SAndroid Build Coastguard Worker #include <glib.h>
9*d83cc019SAndroid Build Coastguard Worker 
10*d83cc019SAndroid Build Coastguard Worker enum {
11*d83cc019SAndroid Build Coastguard Worker 	LOG_LEVEL_NORMAL = 0,
12*d83cc019SAndroid Build Coastguard Worker 	LOG_LEVEL_QUIET = -1,
13*d83cc019SAndroid Build Coastguard Worker 	LOG_LEVEL_VERBOSE = 1,
14*d83cc019SAndroid Build Coastguard Worker };
15*d83cc019SAndroid Build Coastguard Worker 
16*d83cc019SAndroid Build Coastguard Worker #define ABORT_TAINT   (1 << 0)
17*d83cc019SAndroid Build Coastguard Worker #define ABORT_LOCKDEP (1 << 1)
18*d83cc019SAndroid Build Coastguard Worker #define ABORT_ALL     (ABORT_TAINT | ABORT_LOCKDEP)
19*d83cc019SAndroid Build Coastguard Worker 
20*d83cc019SAndroid Build Coastguard Worker _Static_assert(ABORT_ALL == (ABORT_TAINT | ABORT_LOCKDEP), "ABORT_ALL must be all conditions bitwise or'd");
21*d83cc019SAndroid Build Coastguard Worker 
22*d83cc019SAndroid Build Coastguard Worker struct regex_list {
23*d83cc019SAndroid Build Coastguard Worker 	char **regex_strings;
24*d83cc019SAndroid Build Coastguard Worker 	GRegex **regexes;
25*d83cc019SAndroid Build Coastguard Worker 	size_t size;
26*d83cc019SAndroid Build Coastguard Worker };
27*d83cc019SAndroid Build Coastguard Worker 
28*d83cc019SAndroid Build Coastguard Worker struct settings {
29*d83cc019SAndroid Build Coastguard Worker 	int abort_mask;
30*d83cc019SAndroid Build Coastguard Worker 	char *test_list;
31*d83cc019SAndroid Build Coastguard Worker 	char *name;
32*d83cc019SAndroid Build Coastguard Worker 	bool dry_run;
33*d83cc019SAndroid Build Coastguard Worker 	struct regex_list include_regexes;
34*d83cc019SAndroid Build Coastguard Worker 	struct regex_list exclude_regexes;
35*d83cc019SAndroid Build Coastguard Worker 	bool sync;
36*d83cc019SAndroid Build Coastguard Worker 	int log_level;
37*d83cc019SAndroid Build Coastguard Worker 	bool overwrite;
38*d83cc019SAndroid Build Coastguard Worker 	bool multiple_mode;
39*d83cc019SAndroid Build Coastguard Worker 	int inactivity_timeout;
40*d83cc019SAndroid Build Coastguard Worker 	int overall_timeout;
41*d83cc019SAndroid Build Coastguard Worker 	bool use_watchdog;
42*d83cc019SAndroid Build Coastguard Worker 	char *test_root;
43*d83cc019SAndroid Build Coastguard Worker 	char *results_path;
44*d83cc019SAndroid Build Coastguard Worker 	bool piglit_style_dmesg;
45*d83cc019SAndroid Build Coastguard Worker 	int dmesg_warn_level;
46*d83cc019SAndroid Build Coastguard Worker 	bool list_all;
47*d83cc019SAndroid Build Coastguard Worker };
48*d83cc019SAndroid Build Coastguard Worker 
49*d83cc019SAndroid Build Coastguard Worker /**
50*d83cc019SAndroid Build Coastguard Worker  * init_settings:
51*d83cc019SAndroid Build Coastguard Worker  *
52*d83cc019SAndroid Build Coastguard Worker  * Initializes a settings object to an empty state (all values NULL, 0
53*d83cc019SAndroid Build Coastguard Worker  * or false).
54*d83cc019SAndroid Build Coastguard Worker  *
55*d83cc019SAndroid Build Coastguard Worker  * @settings: Object to initialize. Storage for it must exist.
56*d83cc019SAndroid Build Coastguard Worker  */
57*d83cc019SAndroid Build Coastguard Worker void init_settings(struct settings *settings);
58*d83cc019SAndroid Build Coastguard Worker 
59*d83cc019SAndroid Build Coastguard Worker /**
60*d83cc019SAndroid Build Coastguard Worker  * free_settings:
61*d83cc019SAndroid Build Coastguard Worker  *
62*d83cc019SAndroid Build Coastguard Worker  * Releases all allocated resources for a settings object and
63*d83cc019SAndroid Build Coastguard Worker  * initializes it to an empty state (see #init_settings).
64*d83cc019SAndroid Build Coastguard Worker  *
65*d83cc019SAndroid Build Coastguard Worker  * @settings: Object to release and initialize.
66*d83cc019SAndroid Build Coastguard Worker  */
67*d83cc019SAndroid Build Coastguard Worker void free_settings(struct settings *settings);
68*d83cc019SAndroid Build Coastguard Worker 
69*d83cc019SAndroid Build Coastguard Worker /**
70*d83cc019SAndroid Build Coastguard Worker  * parse_options:
71*d83cc019SAndroid Build Coastguard Worker  *
72*d83cc019SAndroid Build Coastguard Worker  * Parses command line options and sets the settings object to
73*d83cc019SAndroid Build Coastguard Worker  * designated values.
74*d83cc019SAndroid Build Coastguard Worker  *
75*d83cc019SAndroid Build Coastguard Worker  * The function can be called again on the same settings object. The
76*d83cc019SAndroid Build Coastguard Worker  * old values will be properly released and cleared. On a parse
77*d83cc019SAndroid Build Coastguard Worker  * failure, the settings object will be in an empty state (see
78*d83cc019SAndroid Build Coastguard Worker  * #init_settings) and usage instructions will be printed with an
79*d83cc019SAndroid Build Coastguard Worker  * error message.
80*d83cc019SAndroid Build Coastguard Worker  *
81*d83cc019SAndroid Build Coastguard Worker  * @argc: Argument count
82*d83cc019SAndroid Build Coastguard Worker  * @argv: Argument array. First element is the program name.
83*d83cc019SAndroid Build Coastguard Worker  * @settings: Settings object to fill with values. Must have proper
84*d83cc019SAndroid Build Coastguard Worker  * storage.
85*d83cc019SAndroid Build Coastguard Worker  *
86*d83cc019SAndroid Build Coastguard Worker  * Returns: True on successful parse, false on error.
87*d83cc019SAndroid Build Coastguard Worker  */
88*d83cc019SAndroid Build Coastguard Worker bool parse_options(int argc, char **argv,
89*d83cc019SAndroid Build Coastguard Worker 		   struct settings *settings);
90*d83cc019SAndroid Build Coastguard Worker 
91*d83cc019SAndroid Build Coastguard Worker /**
92*d83cc019SAndroid Build Coastguard Worker  * validate_settings:
93*d83cc019SAndroid Build Coastguard Worker  *
94*d83cc019SAndroid Build Coastguard Worker  * Checks the settings object against the system to see if executing
95*d83cc019SAndroid Build Coastguard Worker  * on it can be done. Checks pathnames for existence and access
96*d83cc019SAndroid Build Coastguard Worker  * rights. Note that this function will not check that the designated
97*d83cc019SAndroid Build Coastguard Worker  * job listing (through a test-list file or the -t/-x flags) yields a
98*d83cc019SAndroid Build Coastguard Worker  * non-zero amount of testing to be done. On errors, usage
99*d83cc019SAndroid Build Coastguard Worker  * instructions will be printed with an error message.
100*d83cc019SAndroid Build Coastguard Worker  *
101*d83cc019SAndroid Build Coastguard Worker  * @settings: Settings object to check.
102*d83cc019SAndroid Build Coastguard Worker  *
103*d83cc019SAndroid Build Coastguard Worker  * Returns: True on valid settings, false on any error.
104*d83cc019SAndroid Build Coastguard Worker  */
105*d83cc019SAndroid Build Coastguard Worker bool validate_settings(struct settings *settings);
106*d83cc019SAndroid Build Coastguard Worker 
107*d83cc019SAndroid Build Coastguard Worker /* TODO: Better place for this */
108*d83cc019SAndroid Build Coastguard Worker char *absolute_path(char *path);
109*d83cc019SAndroid Build Coastguard Worker 
110*d83cc019SAndroid Build Coastguard Worker /**
111*d83cc019SAndroid Build Coastguard Worker  * serialize_settings:
112*d83cc019SAndroid Build Coastguard Worker  *
113*d83cc019SAndroid Build Coastguard Worker  * Serializes the settings object to a file in the results_path
114*d83cc019SAndroid Build Coastguard Worker  * directory.
115*d83cc019SAndroid Build Coastguard Worker  *
116*d83cc019SAndroid Build Coastguard Worker  * @settings: Settings object to serialize.
117*d83cc019SAndroid Build Coastguard Worker  */
118*d83cc019SAndroid Build Coastguard Worker bool serialize_settings(struct settings *settings);
119*d83cc019SAndroid Build Coastguard Worker 
120*d83cc019SAndroid Build Coastguard Worker bool read_settings_from_file(struct settings *settings, FILE* f);
121*d83cc019SAndroid Build Coastguard Worker bool read_settings_from_dir(struct settings *settings, int dirfd);
122*d83cc019SAndroid Build Coastguard Worker 
123*d83cc019SAndroid Build Coastguard Worker #endif
124