xref: /aosp_15_r20/external/igt-gpu-tools/lib/igt.cocci (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker// Semantic patch for common patterns and their replacement by igt
2*d83cc019SAndroid Build Coastguard Worker// infrastructure and macros. Please run with
3*d83cc019SAndroid Build Coastguard Worker//
4*d83cc019SAndroid Build Coastguard Worker// spatch --sp-file lib/igt.cocci --in-place tests/*.c
5*d83cc019SAndroid Build Coastguard Worker//
6*d83cc019SAndroid Build Coastguard Worker// on your new testcase.
7*d83cc019SAndroid Build Coastguard Worker
8*d83cc019SAndroid Build Coastguard Worker
9*d83cc019SAndroid Build Coastguard Worker// Replace open-coded augmented igt_assert/skip/require with macro versions
10*d83cc019SAndroid Build Coastguard Worker@@
11*d83cc019SAndroid Build Coastguard Workerexpression Ec;
12*d83cc019SAndroid Build Coastguard Workerexpression list[n] Ep;
13*d83cc019SAndroid Build Coastguard Worker@@
14*d83cc019SAndroid Build Coastguard Worker- if (Ec) {
15*d83cc019SAndroid Build Coastguard Worker(
16*d83cc019SAndroid Build Coastguard Worker- igt_warn( Ep );
17*d83cc019SAndroid Build Coastguard Worker|
18*d83cc019SAndroid Build Coastguard Worker- igt_info( Ep );
19*d83cc019SAndroid Build Coastguard Worker|
20*d83cc019SAndroid Build Coastguard Worker- igt_debug( Ep );
21*d83cc019SAndroid Build Coastguard Worker)
22*d83cc019SAndroid Build Coastguard Worker- igt_fail(...);
23*d83cc019SAndroid Build Coastguard Worker- }
24*d83cc019SAndroid Build Coastguard Worker+ igt_fail_on_f(Ec, Ep);
25*d83cc019SAndroid Build Coastguard Worker@@
26*d83cc019SAndroid Build Coastguard Workerexpression Ec;
27*d83cc019SAndroid Build Coastguard Worker@@
28*d83cc019SAndroid Build Coastguard Worker- if (Ec) {
29*d83cc019SAndroid Build Coastguard Worker- igt_fail(...);
30*d83cc019SAndroid Build Coastguard Worker- }
31*d83cc019SAndroid Build Coastguard Worker+ igt_fail_on(Ec);
32*d83cc019SAndroid Build Coastguard Worker@@
33*d83cc019SAndroid Build Coastguard Workerexpression Ec;
34*d83cc019SAndroid Build Coastguard Workerexpression list[n] Ep;
35*d83cc019SAndroid Build Coastguard Worker@@
36*d83cc019SAndroid Build Coastguard Worker- if (Ec) {
37*d83cc019SAndroid Build Coastguard Worker- igt_skip(Ep);
38*d83cc019SAndroid Build Coastguard Worker- }
39*d83cc019SAndroid Build Coastguard Worker+ igt_skip_on_f(Ec, Ep);
40*d83cc019SAndroid Build Coastguard Worker@@
41*d83cc019SAndroid Build Coastguard Workerexpression Ec;
42*d83cc019SAndroid Build Coastguard Workerexpression list[n] Ep;
43*d83cc019SAndroid Build Coastguard Worker@@
44*d83cc019SAndroid Build Coastguard Worker- if (Ec) {
45*d83cc019SAndroid Build Coastguard Worker- igt_warn(Ep);
46*d83cc019SAndroid Build Coastguard Worker- }
47*d83cc019SAndroid Build Coastguard Worker+ igt_warn_on_f(Ec, Ep);
48*d83cc019SAndroid Build Coastguard Worker
49*d83cc019SAndroid Build Coastguard Worker// Enforce use of logging functions
50*d83cc019SAndroid Build Coastguard Worker@@
51*d83cc019SAndroid Build Coastguard Workerexpression list[n] Ep;
52*d83cc019SAndroid Build Coastguard Worker@@
53*d83cc019SAndroid Build Coastguard Worker-fprintf(stderr, Ep);
54*d83cc019SAndroid Build Coastguard Worker+igt_warn(Ep);
55*d83cc019SAndroid Build Coastguard Worker@@
56*d83cc019SAndroid Build Coastguard Workerexpression E;
57*d83cc019SAndroid Build Coastguard Worker@@
58*d83cc019SAndroid Build Coastguard Worker-perror(E);
59*d83cc019SAndroid Build Coastguard Worker+igt_warn(E);
60*d83cc019SAndroid Build Coastguard Worker@@
61*d83cc019SAndroid Build Coastguard Workerexpression list[n] Ep;
62*d83cc019SAndroid Build Coastguard Worker@@
63*d83cc019SAndroid Build Coastguard Worker-fprintf(stdout, Ep);
64*d83cc019SAndroid Build Coastguard Worker+igt_info(Ep);
65*d83cc019SAndroid Build Coastguard Worker@@
66*d83cc019SAndroid Build Coastguard Workerexpression list[n] Ep;
67*d83cc019SAndroid Build Coastguard Worker@@
68*d83cc019SAndroid Build Coastguard Worker-printf(Ep);
69*d83cc019SAndroid Build Coastguard Worker+igt_info(Ep);
70*d83cc019SAndroid Build Coastguard Worker
71*d83cc019SAndroid Build Coastguard Worker// No abort for tests, really. Should only be used for internal library checks
72*d83cc019SAndroid Build Coastguard Worker// in lib/*
73*d83cc019SAndroid Build Coastguard Worker@@
74*d83cc019SAndroid Build Coastguard Worker@@
75*d83cc019SAndroid Build Coastguard Worker-abort();
76*d83cc019SAndroid Build Coastguard Worker+igt_fail(IGT_EXIT_FAILURE);
77*d83cc019SAndroid Build Coastguard Worker
78*d83cc019SAndroid Build Coastguard Worker@@
79*d83cc019SAndroid Build Coastguard Workeriterator name for_each_pipe;
80*d83cc019SAndroid Build Coastguard Workerigt_display_t *display;
81*d83cc019SAndroid Build Coastguard Workerexpression pipe;
82*d83cc019SAndroid Build Coastguard Worker@@
83*d83cc019SAndroid Build Coastguard Worker- for (pipe = 0; pipe < igt_display_get_n_pipes(display); pipe++) {
84*d83cc019SAndroid Build Coastguard Worker+ for_each_pipe (display, pipe) {
85*d83cc019SAndroid Build Coastguard Worker...
86*d83cc019SAndroid Build Coastguard Worker}
87*d83cc019SAndroid Build Coastguard Worker
88*d83cc019SAndroid Build Coastguard Worker// Tests really shouldn't use plain assert!
89*d83cc019SAndroid Build Coastguard Worker@@
90*d83cc019SAndroid Build Coastguard Workerexpression E;
91*d83cc019SAndroid Build Coastguard Worker@@
92*d83cc019SAndroid Build Coastguard Worker- assert(E);
93*d83cc019SAndroid Build Coastguard Worker+ igt_assert(E);
94*d83cc019SAndroid Build Coastguard Worker
95*d83cc019SAndroid Build Coastguard Worker// Replace open-coded igt_swap()
96*d83cc019SAndroid Build Coastguard Worker@@
97*d83cc019SAndroid Build Coastguard Workertype T;
98*d83cc019SAndroid Build Coastguard WorkerT a, b, tmp;
99*d83cc019SAndroid Build Coastguard Worker@@
100*d83cc019SAndroid Build Coastguard Worker- tmp = a;
101*d83cc019SAndroid Build Coastguard Worker- a = b;
102*d83cc019SAndroid Build Coastguard Worker- b = tmp;
103*d83cc019SAndroid Build Coastguard Worker+ igt_swap(a, b);
104*d83cc019SAndroid Build Coastguard Worker
105*d83cc019SAndroid Build Coastguard Worker// Replace open-coded min()
106*d83cc019SAndroid Build Coastguard Worker@@
107*d83cc019SAndroid Build Coastguard Workerexpression a;
108*d83cc019SAndroid Build Coastguard Workerexpression b;
109*d83cc019SAndroid Build Coastguard Worker@@
110*d83cc019SAndroid Build Coastguard Worker(
111*d83cc019SAndroid Build Coastguard Worker- ((a) < (b) ? (a) : (b))
112*d83cc019SAndroid Build Coastguard Worker+ min(a, b)
113*d83cc019SAndroid Build Coastguard Worker|
114*d83cc019SAndroid Build Coastguard Worker- ((a) <= (b) ? (a) : (b))
115*d83cc019SAndroid Build Coastguard Worker+ min(a, b)
116*d83cc019SAndroid Build Coastguard Worker)
117*d83cc019SAndroid Build Coastguard Worker
118*d83cc019SAndroid Build Coastguard Worker// Replace open-coded max()
119*d83cc019SAndroid Build Coastguard Worker@@
120*d83cc019SAndroid Build Coastguard Workerexpression a;
121*d83cc019SAndroid Build Coastguard Workerexpression b;
122*d83cc019SAndroid Build Coastguard Worker@@
123*d83cc019SAndroid Build Coastguard Worker(
124*d83cc019SAndroid Build Coastguard Worker- ((a) > (b) ? (a) : (b))
125*d83cc019SAndroid Build Coastguard Worker+ max(a, b)
126*d83cc019SAndroid Build Coastguard Worker|
127*d83cc019SAndroid Build Coastguard Worker- ((a) >= (b) ? (a) : (b))
128*d83cc019SAndroid Build Coastguard Worker+ max(a, b)
129*d83cc019SAndroid Build Coastguard Worker)
130*d83cc019SAndroid Build Coastguard Worker
131*d83cc019SAndroid Build Coastguard Worker// drm_open_any always returns a valid file descriptor
132*d83cc019SAndroid Build Coastguard Worker@@
133*d83cc019SAndroid Build Coastguard Workerexpression a;
134*d83cc019SAndroid Build Coastguard Worker@@
135*d83cc019SAndroid Build Coastguard Workera = drm_open_any();
136*d83cc019SAndroid Build Coastguard Worker(
137*d83cc019SAndroid Build Coastguard Worker- igt_assert(a >= 0);
138*d83cc019SAndroid Build Coastguard Worker|
139*d83cc019SAndroid Build Coastguard Worker- if (a < 0) {
140*d83cc019SAndroid Build Coastguard Worker- ...
141*d83cc019SAndroid Build Coastguard Worker- return ...;
142*d83cc019SAndroid Build Coastguard Worker- }
143*d83cc019SAndroid Build Coastguard Worker)
144*d83cc019SAndroid Build Coastguard Worker
145*d83cc019SAndroid Build Coastguard Worker// Use comparison macros instead of raw igt_assert when possible
146*d83cc019SAndroid Build Coastguard Worker@@
147*d83cc019SAndroid Build Coastguard Workertypedef uint32_t;
148*d83cc019SAndroid Build Coastguard Workeruint32_t E1, E2;
149*d83cc019SAndroid Build Coastguard Workerint E3, E4;
150*d83cc019SAndroid Build Coastguard Worker@@
151*d83cc019SAndroid Build Coastguard Worker(
152*d83cc019SAndroid Build Coastguard Worker- igt_assert(E1 == E2);
153*d83cc019SAndroid Build Coastguard Worker+ igt_assert_eq_u32(E1, E2);
154*d83cc019SAndroid Build Coastguard Worker|
155*d83cc019SAndroid Build Coastguard Worker- igt_assert(E1 != E2);
156*d83cc019SAndroid Build Coastguard Worker+ igt_assert_neq_u32(E1, E2);
157*d83cc019SAndroid Build Coastguard Worker|
158*d83cc019SAndroid Build Coastguard Worker- igt_assert(E1 <= E2);
159*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lte_u32(E1, E2);
160*d83cc019SAndroid Build Coastguard Worker|
161*d83cc019SAndroid Build Coastguard Worker- igt_assert(E1 < E2);
162*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lt_u32(E1, E2);
163*d83cc019SAndroid Build Coastguard Worker|
164*d83cc019SAndroid Build Coastguard Worker- igt_assert(E1 >= E2);
165*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lte_u32(E2, E1);
166*d83cc019SAndroid Build Coastguard Worker|
167*d83cc019SAndroid Build Coastguard Worker- igt_assert(E1 > E2);
168*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lt_u32(E2, E1);
169*d83cc019SAndroid Build Coastguard Worker|
170*d83cc019SAndroid Build Coastguard Worker- igt_assert(E3 == E4);
171*d83cc019SAndroid Build Coastguard Worker+ igt_assert_eq(E3, E4);
172*d83cc019SAndroid Build Coastguard Worker|
173*d83cc019SAndroid Build Coastguard Worker- igt_assert(E3 != E4);
174*d83cc019SAndroid Build Coastguard Worker+ igt_assert_neq(E3, E4);
175*d83cc019SAndroid Build Coastguard Worker|
176*d83cc019SAndroid Build Coastguard Worker- igt_assert(E3 <= E4);
177*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lte(E3, E4);
178*d83cc019SAndroid Build Coastguard Worker|
179*d83cc019SAndroid Build Coastguard Worker- igt_assert(E3 < E4);
180*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lt(E3, E4);
181*d83cc019SAndroid Build Coastguard Worker|
182*d83cc019SAndroid Build Coastguard Worker- igt_assert(E3 >= E4);
183*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lte(E4, E3);
184*d83cc019SAndroid Build Coastguard Worker|
185*d83cc019SAndroid Build Coastguard Worker- igt_assert(E3 > E4);
186*d83cc019SAndroid Build Coastguard Worker+ igt_assert_lt(E4, E3);
187*d83cc019SAndroid Build Coastguard Worker)
188*d83cc019SAndroid Build Coastguard Worker
189*d83cc019SAndroid Build Coastguard Worker// avoid unused-result warnings when compiling with _FORTIFY_SOURCE defined
190*d83cc019SAndroid Build Coastguard Worker@@
191*d83cc019SAndroid Build Coastguard Workeridentifier func =~ "^(read|write)$";
192*d83cc019SAndroid Build Coastguard Workerexpression list[2] E;
193*d83cc019SAndroid Build Coastguard Workerexpression size;
194*d83cc019SAndroid Build Coastguard Worker@@
195*d83cc019SAndroid Build Coastguard Worker-func(E, size);
196*d83cc019SAndroid Build Coastguard Worker+igt_assert_eq(func(E, size), size);
197*d83cc019SAndroid Build Coastguard Worker
198*d83cc019SAndroid Build Coastguard Worker@@
199*d83cc019SAndroid Build Coastguard Workerexpression ptr, size, nmemb, stream;
200*d83cc019SAndroid Build Coastguard Worker@@
201*d83cc019SAndroid Build Coastguard Worker-fread(ptr, size, nmemb, stream);
202*d83cc019SAndroid Build Coastguard Worker+igt_assert_eq(fread(ptr, size, nmemb, stream), nmemb);
203*d83cc019SAndroid Build Coastguard Worker
204*d83cc019SAndroid Build Coastguard Worker@@
205*d83cc019SAndroid Build Coastguard Workerexpression list E;
206*d83cc019SAndroid Build Coastguard Worker@@
207*d83cc019SAndroid Build Coastguard Worker-fgets(E);
208*d83cc019SAndroid Build Coastguard Worker+igt_assert(fgets(E) != NULL);
209*d83cc019SAndroid Build Coastguard Worker
210*d83cc019SAndroid Build Coastguard Worker@@
211*d83cc019SAndroid Build Coastguard Workeridentifier func =~ "^v?asprintf$";
212*d83cc019SAndroid Build Coastguard Workerexpression list E;
213*d83cc019SAndroid Build Coastguard Worker@@
214*d83cc019SAndroid Build Coastguard Worker-func(E);
215*d83cc019SAndroid Build Coastguard Worker+igt_assert_neq(func(E), -1);
216*d83cc019SAndroid Build Coastguard Worker
217*d83cc019SAndroid Build Coastguard Worker// replace open-coded do_ioctl
218*d83cc019SAndroid Build Coastguard Worker@@
219*d83cc019SAndroid Build Coastguard Workerexpression a, b, c, e;
220*d83cc019SAndroid Build Coastguard Worker@@
221*d83cc019SAndroid Build Coastguard Worker(
222*d83cc019SAndroid Build Coastguard Worker-do_or_die(drmIoctl(a, b, c));
223*d83cc019SAndroid Build Coastguard Worker+do_ioctl(a, b, c);
224*d83cc019SAndroid Build Coastguard Worker|
225*d83cc019SAndroid Build Coastguard Worker-igt_assert(drmIoctl(a, b, c) == 0);
226*d83cc019SAndroid Build Coastguard Worker+do_ioctl(a, b, c);
227*d83cc019SAndroid Build Coastguard Worker|
228*d83cc019SAndroid Build Coastguard Worker-igt_assert(drmIoctl(a, b, c) == -1 && errno == e);
229*d83cc019SAndroid Build Coastguard Worker+do_ioctl_err(a, b, c, e);
230*d83cc019SAndroid Build Coastguard Worker|
231*d83cc019SAndroid Build Coastguard Worker-igt_assert(drmIoctl(a, b, c) < 0 && errno == e);
232*d83cc019SAndroid Build Coastguard Worker+do_ioctl_err(a, b, c, e);
233*d83cc019SAndroid Build Coastguard Worker)
234