Line data Source code
1 :
2 : struct device;
3 :
4 : void *ldv_dev_get_drvdata(const struct device *dev);
5 : int ldv_dev_set_drvdata(struct device *dev, void *data);
6 :
7 : struct spi_master;
8 : struct device;
9 : struct spi_master *ldv_spi_alloc_master(struct device *host, unsigned size);
10 :
11 : #include <linux/ldv/err.h>
12 :
13 : #include <linux/types.h>
14 : void *ldv_kzalloc(size_t size, gfp_t flags);
15 :
16 : struct clk;
17 :
18 : extern void ldv_clk_disable(struct clk *clk);
19 : extern int ldv_clk_enable(void);
20 :
21 : #include <linux/ldv/common.h>
22 : #include <linux/ldv/irq.h>
23 : #include <verifier/common.h>
24 : #include <verifier/nondet.h>
25 : #include <verifier/memory.h>
26 : #include <verifier/thread.h>
27 :
28 : #include <linux/platform_device.h>
29 : #include <linux/pm.h>
30 :
31 :
32 : struct ldv_struct_platform_instance_1 {
33 : struct platform_driver *arg0;
34 : int signal_pending;
35 : };
36 1 :
37 : struct ldv_struct_random_containerless_scenario_3 {
38 : struct fb_info *arg0;
39 : int signal_pending;
40 : };
41 :
42 : /* EMG Function declarations */
43 : void ldv_dispatch_default_deregister_8_5_4(void);
44 : void ldv_dispatch_default_register_8_5_5(void);
45 : void ldv_dispatch_deregister_6_1(struct platform_driver *);
46 : void ldv_dispatch_deregister_8_1(struct fb_info *);
47 : void ldv_dispatch_insmod_deregister_10_2(void);
48 : void ldv_dispatch_insmod_register_10_3(void);
49 : void ldv_dispatch_pm_deregister_1_5(void);
50 : void ldv_dispatch_pm_register_1_6(void);
51 : void ldv_dispatch_register_7_3(struct platform_driver *);
52 : void ldv_dispatch_register_9_3(struct fb_info *);
53 : int ldv_emg_platform_driver_register(struct platform_driver *);
54 : void ldv_emg_platform_driver_unregister(struct platform_driver *);
55 : int ldv_emg_register_framebuffer(struct fb_info *);
56 : int ldv_emg_unregister_framebuffer(struct fb_info *);
57 : void ldv_insmod_5(void *);
58 : void ldv_insmod_hgafb_exit_5_2(void (*)(void));
59 : int ldv_insmod_hgafb_init_5_9(int (*)(void));
60 : void ldv_main_10(void *);
61 : void ldv_platform_instance_1(void *);
62 : int ldv_platform_instance_probe_1_14(int (*)(struct platform_device *), struct platform_device *);
63 : void ldv_platform_instance_release_1_3(int (*)(struct platform_device *), struct platform_device *);
64 : void ldv_pm_ops_scenario_2(void *);
65 : void ldv_pm_ops_scenario_complete_2_3(void (*)(struct device *), struct device *);
66 : void ldv_pm_ops_scenario_freeze_2_13(int (*)(struct device *), struct device *);
67 : void ldv_pm_ops_scenario_freeze_noirq_2_11(int (*)(struct device *), struct device *);
68 : void ldv_pm_ops_scenario_poweroff_2_8(int (*)(struct device *), struct device *);
69 : void ldv_pm_ops_scenario_poweroff_noirq_2_7(int (*)(struct device *), struct device *);
70 : void ldv_pm_ops_scenario_prepare_2_19(int (*)(struct device *), struct device *);
71 : void ldv_pm_ops_scenario_restore_2_4(int (*)(struct device *), struct device *);
72 : void ldv_pm_ops_scenario_restore_noirq_2_6(int (*)(struct device *), struct device *);
73 : void ldv_pm_ops_scenario_resume_2_14(int (*)(struct device *), struct device *);
74 : void ldv_pm_ops_scenario_resume_noirq_2_16(int (*)(struct device *), struct device *);
75 : void ldv_pm_ops_scenario_runtime_idle_2_24(int (*)(struct device *), struct device *);
76 : void ldv_pm_ops_scenario_runtime_resume_2_21(int (*)(struct device *), struct device *);
77 : void ldv_pm_ops_scenario_runtime_suspend_2_22(int (*)(struct device *), struct device *);
78 : void ldv_pm_ops_scenario_suspend_2_18(int (*)(struct device *), struct device *);
79 : void ldv_pm_ops_scenario_suspend_noirq_2_17(int (*)(struct device *), struct device *);
80 : void ldv_pm_ops_scenario_thaw_2_9(int (*)(struct device *), struct device *);
81 : void ldv_pm_ops_scenario_thaw_noirq_2_10(int (*)(struct device *), struct device *);
82 : void ldv_random_containerless_scenario_3(void *);
83 : void ldv_random_containerless_scenario_4(void *);
84 : void ldv_random_containerless_scenario_callback_3_10(void (*)(struct fb_info *, struct fb_image *), struct fb_info *, struct fb_image *);
85 : void ldv_random_containerless_scenario_callback_3_11(int (*)(struct fb_info *, int), struct fb_info *, int);
86 : void ldv_random_containerless_scenario_callback_3_14(int (*)(struct fb_var_screeninfo *, struct fb_info *), struct fb_var_screeninfo *, struct fb_info *);
87 : void ldv_random_containerless_scenario_callback_3_15(int (*)(struct fb_info *, int), struct fb_info *, int);
88 : void ldv_random_containerless_scenario_callback_3_18(int (*)(u_int , u_int , u_int , u_int , u_int , struct fb_info *), unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, struct fb_info *);
89 : void ldv_random_containerless_scenario_callback_3_3(int (*)(int, struct fb_info *), int, struct fb_info *);
90 : void ldv_random_containerless_scenario_callback_3_8(void (*)(struct fb_info *, struct fb_copyarea *), struct fb_info *, struct fb_copyarea *);
91 : void ldv_random_containerless_scenario_callback_3_9(void (*)(struct fb_info *, struct fb_fillrect *), struct fb_info *, struct fb_fillrect *);
92 : void ldv_random_containerless_scenario_callback_4_10(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
93 : void ldv_random_containerless_scenario_callback_4_4(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
94 : int main(void);
95 :
96 : /* EMG variable declarations */
97 1 : struct ldv_thread ldv_thread_1;
98 1 : struct ldv_thread ldv_thread_10;
99 1 : struct ldv_thread ldv_thread_2;
100 1 : struct ldv_thread ldv_thread_3;
101 1 : struct ldv_thread ldv_thread_4;
102 1 : struct ldv_thread ldv_thread_5;
103 :
104 : /* EMG variable initialization */
105 :
106 : /* EMG function definitions */
107 : /* AUX_FUNC ldv_dispatch_default_deregister_8_5_4 */
108 : void ldv_dispatch_default_deregister_8_5_4() {
109 : struct ldv_struct_platform_instance_1 *cf_arg_4;
110 : /* Skip thread join call */
111 1 : return;
112 : }
113 :
114 : /* AUX_FUNC ldv_dispatch_default_register_8_5_5 */
115 : void ldv_dispatch_default_register_8_5_5() {
116 : struct ldv_struct_platform_instance_1 *cf_arg_4;
117 4 : cf_arg_4 = ldv_xmalloc(sizeof(struct ldv_struct_platform_instance_1));
118 3 : ldv_random_containerless_scenario_4(cf_arg_4);
119 1 : return;
120 : }
121 :
122 : /* AUX_FUNC ldv_dispatch_deregister_6_1 */
123 : void ldv_dispatch_deregister_6_1(struct platform_driver *arg0) {
124 : struct ldv_struct_platform_instance_1 *cf_arg_1;
125 : /* Skip thread join call */
126 3 : return;
127 : }
128 :
129 : /* AUX_FUNC ldv_dispatch_deregister_8_1 */
130 : void ldv_dispatch_deregister_8_1(struct fb_info *arg0) {
131 : struct ldv_struct_random_containerless_scenario_3 *cf_arg_3;
132 : /* Skip thread join call */
133 1 : return;
134 : }
135 :
136 : /* AUX_FUNC ldv_dispatch_insmod_deregister_10_2 */
137 : void ldv_dispatch_insmod_deregister_10_2() {
138 : struct ldv_struct_platform_instance_1 *cf_arg_5;
139 : /* Skip thread join call */
140 1 : return;
141 : }
142 :
143 : /* AUX_FUNC ldv_dispatch_insmod_register_10_3 */
144 : void ldv_dispatch_insmod_register_10_3() {
145 : struct ldv_struct_platform_instance_1 *cf_arg_5;
146 4 : cf_arg_5 = ldv_xmalloc(sizeof(struct ldv_struct_platform_instance_1));
147 4 : ldv_insmod_5(cf_arg_5);
148 1 : return;
149 : }
150 :
151 : /* AUX_FUNC ldv_dispatch_pm_deregister_1_5 */
152 : void ldv_dispatch_pm_deregister_1_5() {
153 : struct ldv_struct_platform_instance_1 *cf_arg_2;
154 : /* Skip thread join call */
155 1 : return;
156 : }
157 :
158 : /* AUX_FUNC ldv_dispatch_pm_register_1_6 */
159 : void ldv_dispatch_pm_register_1_6() {
160 : struct ldv_struct_platform_instance_1 *cf_arg_2;
161 4 : cf_arg_2 = ldv_xmalloc(sizeof(struct ldv_struct_platform_instance_1));
162 3 : ldv_pm_ops_scenario_2(cf_arg_2);
163 1 : return;
164 : }
165 :
166 : /* AUX_FUNC ldv_dispatch_register_7_3 */
167 : void ldv_dispatch_register_7_3(struct platform_driver *arg0) {
168 : struct ldv_struct_platform_instance_1 *cf_arg_1;
169 4 : cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_platform_instance_1));
170 2 : cf_arg_1->arg0 = arg0;
171 2 : ldv_platform_instance_1(cf_arg_1);
172 1 : return;
173 : }
174 :
175 : /* AUX_FUNC ldv_dispatch_register_9_3 */
176 : void ldv_dispatch_register_9_3(struct fb_info *arg0) {
177 : struct ldv_struct_random_containerless_scenario_3 *cf_arg_3;
178 4 : cf_arg_3 = ldv_xmalloc(sizeof(struct ldv_struct_random_containerless_scenario_3));
179 2 : cf_arg_3->arg0 = arg0;
180 2 : ldv_random_containerless_scenario_3(cf_arg_3);
181 1 : return;
182 : }
183 :
184 : /* AUX_FUNC ldv_emg_platform_driver_register */
185 : int ldv_emg_platform_driver_register(struct platform_driver *arg0) {
186 : /* LDV {"comment": "Control function 'platform_driver_register'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_platform_driver_register"} */
187 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
188 1 : struct platform_driver *ldv_7_platform_driver_platform_driver;
189 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
190 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
191 :
192 4 : if (ldv_undef_int()) {
193 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'platform' callbacks to register."} */
194 1 : ldv_7_platform_driver_platform_driver = arg0;
195 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
196 :
197 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register PLATFORM callbacks."} */
198 2 : ldv_dispatch_register_7_3(ldv_7_platform_driver_platform_driver);
199 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
200 :
201 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'platform' callbacks."} */
202 3 : return ldv_undef_int_negative();
203 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
204 :
205 : /* Exit function at a terminal state */
206 : }
207 : else {
208 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'platform' callbacks has been successful."} */
209 1 : return 0;
210 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
211 :
212 : /* Exit function at a terminal state */
213 : }
214 : /* End of the process */
215 : /* LDV {"comment": "End of control function based on process 'platform_driver_register'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_platform_driver_register"} */
216 : }
217 :
218 : /* AUX_FUNC ldv_emg_platform_driver_unregister */
219 : void ldv_emg_platform_driver_unregister(struct platform_driver *arg0) {
220 : /* LDV {"comment": "Control function 'platform_driver_unregister'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_platform_driver_unregister"} */
221 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
222 : struct platform_driver *ldv_6_platform_driver_platform_driver;
223 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
224 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'platform_driver' argument."} */
225 3 : ldv_6_platform_driver_platform_driver = arg0;
226 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
227 :
228 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister 'platform_driver' callbacks."} */
229 6 : ldv_dispatch_deregister_6_1(ldv_6_platform_driver_platform_driver);
230 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
231 :
232 : /* Exit function at a terminal state */
233 3 : return;
234 : /* End of the process */
235 : return;
236 : /* LDV {"comment": "End of control function based on process 'platform_driver_unregister'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_platform_driver_unregister"} */
237 : }
238 :
239 : /* AUX_FUNC ldv_emg_register_framebuffer */
240 : int ldv_emg_register_framebuffer(struct fb_info *arg0) {
241 : /* LDV {"comment": "Control function 'register_framebuffer'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_register_framebuffer"} */
242 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
243 1 : struct fb_info *ldv_9_struct_fb_info_ptr_struct_fb_info_ptr;
244 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
245 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
246 :
247 4 : if (ldv_undef_int()) {
248 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_fb_ops' callbacks to register."} */
249 1 : ldv_9_struct_fb_info_ptr_struct_fb_info_ptr = arg0;
250 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
251 :
252 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register STRUCT_FB_OPS callbacks."} */
253 2 : ldv_dispatch_register_9_3(ldv_9_struct_fb_info_ptr_struct_fb_info_ptr);
254 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
255 :
256 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'struct_fb_ops' callbacks."} */
257 3 : return ldv_undef_int_negative();
258 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
259 :
260 : /* Exit function at a terminal state */
261 : }
262 : else {
263 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'struct_fb_ops' callbacks has been successful."} */
264 1 : return 0;
265 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
266 :
267 : /* Exit function at a terminal state */
268 : }
269 : /* End of the process */
270 : /* LDV {"comment": "End of control function based on process 'register_framebuffer'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_register_framebuffer"} */
271 : }
272 :
273 : /* AUX_FUNC ldv_emg_unregister_framebuffer */
274 : int ldv_emg_unregister_framebuffer(struct fb_info *arg0) {
275 : /* LDV {"comment": "Control function 'unregister_framebuffer'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_unregister_framebuffer"} */
276 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
277 : struct fb_info *ldv_8_struct_fb_info_ptr_struct_fb_info_ptr;
278 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
279 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_fb_ops' callbacks to deregister."} */
280 1 : ldv_8_struct_fb_info_ptr_struct_fb_info_ptr = arg0;
281 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
282 :
283 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister STRUCT_FB_OPS callbacks."} */
284 2 : ldv_dispatch_deregister_8_1(ldv_8_struct_fb_info_ptr_struct_fb_info_ptr);
285 1 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
286 :
287 : /* Exit function at a terminal state */
288 : /* End of the process */
289 : /* LDV {"comment": "End of control function based on process 'unregister_framebuffer'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_unregister_framebuffer"} */
290 : }
291 :
292 : /* AUX_FUNC ldv_insmod_5 */
293 : void ldv_insmod_5(void *arg0) {
294 : /* LDV {"thread": 5, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'insmod(artificial)'", "function": "ldv_insmod_5"} */
295 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
296 1 : void (*ldv_5_hgafb_exit_default)(void);
297 1 : int (*ldv_5_hgafb_init_default)(void);
298 1 : int ldv_5_ret_default;
299 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
300 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module initialization."} */
301 2 : ldv_free(arg0);
302 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_END"} */
303 :
304 : /* LDV {"action": "HGAFB_INIT", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize the module after insmod with 'hgafb_init' function. Invoke callback hgafb_init from ARTIFICIAL."} */
305 : /* LDV {"type": "CALLBACK", "call": "ldv_5_ret_default = (hgafb_init)();", "comment": "hgafb_init"} */
306 2 : ldv_5_ret_default = ldv_insmod_hgafb_init_5_9(ldv_5_hgafb_init_default);
307 : /* Callback post-call */
308 2 : ldv_5_ret_default = ldv_post_init(ldv_5_ret_default);
309 : /* LDV {"action": "HGAFB_INIT", "type": "CALL_END"} */
310 :
311 4 : if (ldv_undef_int()) {
312 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize the module."} */
313 2 : ldv_assume(ldv_5_ret_default != 0);
314 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_END"} */
315 :
316 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
317 : /* Skip a non-replicative signal receiving */
318 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
319 :
320 : /* Exit function at a terminal state */
321 1 : return;
322 : }
323 : else {
324 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Module has been initialized."} */
325 2 : ldv_assume(ldv_5_ret_default == 0);
326 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_END"} */
327 :
328 4 : if (ldv_undef_int()) {
329 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_KERNEL_PARAM' callbacks with unknown registration function."} */
330 2 : ldv_dispatch_default_register_8_5_5();
331 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "DISPATCH_END"} */
332 :
333 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_KERNEL_PARAM' callbacks with unknown deregistration function."} */
334 2 : ldv_dispatch_default_deregister_8_5_4();
335 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "DISPATCH_END"} */
336 :
337 : }
338 : else {
339 : /* LDV {"action": "NONE", "type": "CONDITION_BEGIN", "comment": "Skip default callbacks registrations and deregistrations."} */
340 : /* LDV {"action": "NONE", "type": "CONDITION_END"} */
341 :
342 : }
343 : /* LDV {"action": "HGAFB_EXIT", "type": "CALL_BEGIN", "callback": true, "comment": "Exit the module before its unloading with 'hgafb_exit' function. Invoke callback hgafb_exit from ARTIFICIAL."} */
344 : /* LDV {"type": "CALLBACK", "call": "(hgafb_exit)();", "comment": "hgafb_exit"} */
345 4 : ldv_insmod_hgafb_exit_5_2(ldv_5_hgafb_exit_default);
346 : /* LDV {"action": "HGAFB_EXIT", "type": "CALL_END"} */
347 :
348 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
349 : /* Skip a non-replicative signal receiving */
350 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
351 :
352 : /* Exit function at a terminal state */
353 1 : return;
354 : }
355 : /* End of the process */
356 : return;
357 : /* LDV {"comment": "End of control function based on process 'insmod(artificial)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_insmod_5"} */
358 : }
359 :
360 : /* AUX_FUNC_CALLBACK ldv_insmod_hgafb_exit_5_2 */
361 : void ldv_insmod_hgafb_exit_5_2(void (*arg0)(void)) {
362 4 : (hgafb_exit)();
363 2 : }
364 :
365 : /* AUX_FUNC_CALLBACK ldv_insmod_hgafb_init_5_9 */
366 : int ldv_insmod_hgafb_init_5_9(int (*arg0)(void)) {
367 6 : return (hgafb_init)();
368 1 : }
369 :
370 : /* AUX_FUNC ldv_main_10 */
371 : void ldv_main_10(void *arg0) {
372 : /* LDV {"thread": 10, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'main(main)'", "function": "ldv_main_10"} */
373 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
374 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
375 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Initialize rule models."} */
376 1 : ldv_initialize();
377 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
378 :
379 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Start environment model scenarios."} */
380 2 : ldv_dispatch_insmod_register_10_3();
381 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_END"} */
382 :
383 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Stop environment model scenarios."} */
384 2 : ldv_dispatch_insmod_deregister_10_2();
385 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_END"} */
386 :
387 : /* LDV {"action": "FINAL", "type": "CONDITION_BEGIN", "comment": "Check rule model state at the exit."} */
388 1 : ldv_check_final_state();
389 1 : ldv_stop();
390 : /* LDV {"action": "FINAL", "type": "CONDITION_END"} */
391 :
392 : /* Exit function at a terminal state */
393 0 : return;
394 : /* End of the process */
395 : return;
396 : /* LDV {"comment": "End of control function based on process 'main(main)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_main_10"} */
397 : }
398 :
399 : /* AUX_FUNC ldv_platform_instance_1 */
400 : void ldv_platform_instance_1(void *arg0) {
401 : /* LDV {"thread": 1, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'platform_instance(platform)'", "function": "ldv_platform_instance_1"} */
402 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
403 1 : struct platform_driver *ldv_1_container_platform_driver;
404 1 : int ldv_1_probed_default;
405 1 : struct platform_device *ldv_1_resource_platform_device;
406 1 : /* Received labels */
407 2 : struct ldv_struct_platform_instance_1 *data = (struct ldv_struct_platform_instance_1*) arg0;
408 1 :
409 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
410 : /* Initialize automaton variables */
411 1 : ldv_1_probed_default = 1;
412 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Register a driver callbacks for platform-level device."} */
413 : /* Assign recieved labels */
414 2 : if (data) {
415 1 : ldv_1_container_platform_driver = data->arg0;
416 2 : ldv_free(data);
417 : }
418 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
419 :
420 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Alloc memory for 'platform_device' structure."} */
421 5 : ldv_1_resource_platform_device = ldv_xmalloc(sizeof(struct platform_device));
422 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
423 :
424 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Check that device is truely in the system and begin callback invocations."} */
425 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
426 :
427 : /* Jump to a subprocess 'main' initial state */
428 1 : goto ldv_main_1;
429 : /* End of the process */
430 : return;
431 1 :
432 : /* Sbprocess main */
433 : ldv_main_1:
434 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
435 :
436 4 : if (ldv_undef_int()) {
437 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Check that the device in the system and do driver initializations. Invoke callback probe from platform_driver."} */
438 : /* Callback pre-call */
439 1 : ldv_pre_probe();
440 : /* LDV {"type": "CALLBACK", "call": "ldv_1_probed_default = ((& hgafb_probe))(ldv_1_resource_platform_device);", "comment": "probe"} */
441 2 : ldv_1_probed_default = ldv_platform_instance_probe_1_14(ldv_1_container_platform_driver->probe, ldv_1_resource_platform_device);
442 : /* Callback post-call */
443 2 : ldv_1_probed_default = ldv_post_probe(ldv_1_probed_default);
444 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
445 :
446 4 : if (ldv_undef_int()) {
447 : /* LDV {"action": "POSITIVE_PROBE", "type": "CONDITION_BEGIN", "comment": "Platform device is probed successfully now."} */
448 2 : ldv_assume(ldv_1_probed_default == 0);
449 : /* LDV {"action": "POSITIVE_PROBE", "type": "CONDITION_END"} */
450 :
451 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed. Call power management callbacks or release the device."} */
452 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
453 :
454 : /* Jump to a subprocess 'call' initial state */
455 1 : goto ldv_call_1;
456 : }
457 : else {
458 : /* LDV {"action": "NEGATIVE_PROBE", "type": "CONDITION_BEGIN", "comment": "Failed to probe the device."} */
459 2 : ldv_assume(ldv_1_probed_default != 0);
460 : /* LDV {"action": "NEGATIVE_PROBE", "type": "CONDITION_END"} */
461 :
462 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Check that device is truely in the system and begin callback invocations."} */
463 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
464 :
465 : /* Jump to a subprocess 'main' initial state */
466 1 : goto ldv_main_1;
467 : }
468 : }
469 : else {
470 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory for 'platform_device' structure."} */
471 2 : ldv_free(ldv_1_resource_platform_device);
472 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
473 :
474 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish PLATFORM callbacks invocations scenario."} */
475 : /* Skip a non-replicative signal receiving */
476 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
477 :
478 : /* Exit function at a terminal state */
479 1 : return;
480 : }
481 : /* End of the subprocess 'main' */
482 : return;
483 1 :
484 : /* Sbprocess call */
485 : ldv_call_1:
486 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
487 :
488 2 : switch (ldv_undef_int()) {
489 3 : case 1: {
490 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "comment": "Call callback 'callback' of a process 'platform_instance' of an interface category 'platform'"} */
491 : /* Skip callback without implementations */
492 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
493 :
494 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed. Call power management callbacks or release the device."} */
495 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
496 :
497 : /* Jump to a subprocess 'call' initial state */
498 1 : goto ldv_call_1;
499 1 : break;
500 : }
501 3 : case 2: {
502 : /* LDV {"action": "PM_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Proceed to a power management scenario."} */
503 2 : ldv_dispatch_pm_register_1_6();
504 : /* LDV {"action": "PM_REGISTER", "type": "DISPATCH_END"} */
505 :
506 : /* LDV {"action": "PM_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Finish the power management scenario."} */
507 2 : ldv_dispatch_pm_deregister_1_5();
508 : /* LDV {"action": "PM_DEREGISTER", "type": "DISPATCH_END"} */
509 :
510 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed. Call power management callbacks or release the device."} */
511 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
512 :
513 : /* Jump to a subprocess 'call' initial state */
514 1 : goto ldv_call_1;
515 : /* Jump to a subprocess 'call' initial state */
516 : goto ldv_call_1;
517 1 : break;
518 : }
519 3 : case 3: {
520 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "Remove device from the system. Invoke callback remove from platform_driver."} */
521 : /* LDV {"type": "CALLBACK", "call": "((& hgafb_remove))(ldv_1_resource_platform_device);", "comment": "release"} */
522 2 : ldv_platform_instance_release_1_3(ldv_1_container_platform_driver->remove, ldv_1_resource_platform_device);
523 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
524 :
525 : /* LDV {"action": "AFTER_RELEASE", "type": "CONDITION_BEGIN", "comment": "Platform device is released now."} */
526 1 : ldv_1_probed_default = 1;
527 : /* LDV {"action": "AFTER_RELEASE", "type": "CONDITION_END"} */
528 :
529 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Check that device is truely in the system and begin callback invocations."} */
530 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
531 :
532 : /* Jump to a subprocess 'main' initial state */
533 1 : goto ldv_main_1;
534 1 : break;
535 : }
536 2 : default: ldv_stop();
537 1 : }
538 0 : /* End of the subprocess 'call' */
539 0 : return;
540 : /* LDV {"comment": "End of control function based on process 'platform_instance(platform)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_platform_instance_1"} */
541 : }
542 :
543 : /* AUX_FUNC_CALLBACK ldv_platform_instance_probe_1_14 */
544 : int ldv_platform_instance_probe_1_14(int (*arg0)(struct platform_device *), struct platform_device *arg1) {
545 4 : return ((& hgafb_probe))(arg1);
546 1 : }
547 :
548 : /* AUX_FUNC_CALLBACK ldv_platform_instance_release_1_3 */
549 : void ldv_platform_instance_release_1_3(int (*arg0)(struct platform_device *), struct platform_device *arg1) {
550 3 : ((& hgafb_remove))(arg1);
551 1 : }
552 :
553 : /* AUX_FUNC ldv_pm_ops_scenario_2 */
554 : void ldv_pm_ops_scenario_2(void *arg0) {
555 : /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'pm_ops_scenario(platform)'", "function": "ldv_pm_ops_scenario_2"} */
556 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
557 1 : struct device *ldv_2_device_device;
558 1 : struct dev_pm_ops *ldv_2_pm_ops_dev_pm_ops;
559 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
560 1 : /* LDV {"action": "PM_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Ready for a power management scenarios."} */
561 3 : ldv_free(arg0);
562 1 : /* LDV {"action": "PM_REGISTER", "type": "RECEIVE_END"} */
563 :
564 : /* LDV {"action": "DO", "type": "SUBPROCESS_BEGIN", "comment": "Begin a power management scenario."} */
565 : /* LDV {"action": "DO", "type": "SUBPROCESS_END"} */
566 :
567 : /* Jump to a subprocess 'do' initial state */
568 1 : goto ldv_do_2;
569 : /* End of the process */
570 : return;
571 1 :
572 : /* Sbprocess do */
573 : ldv_do_2:
574 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
575 :
576 2 : switch (ldv_undef_int()) {
577 3 : case 1: {
578 : /* LDV {"action": "RUNTIME_IDLE", "type": "CALL_BEGIN", "callback": true, "comment": "Device appears to be inactive and it might be put into a low-power state if all of the necessary conditions are satisfied. Invoke callback runtime_idle from PLATFORM."} */
579 3 : if (ldv_2_pm_ops_dev_pm_ops->runtime_idle) {
580 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->runtime_idle)(ldv_2_device_device);", "comment": "runtime_idle"} */
581 2 : ldv_pm_ops_scenario_runtime_idle_2_24(ldv_2_pm_ops_dev_pm_ops->runtime_idle, ldv_2_device_device);
582 : }
583 : /* LDV {"action": "RUNTIME_IDLE", "type": "CALL_END"} */
584 :
585 : /* LDV {"action": "DO", "type": "SUBPROCESS_BEGIN", "comment": "Begin a power management scenario."} */
586 : /* LDV {"action": "DO", "type": "SUBPROCESS_END"} */
587 :
588 : /* Jump to a subprocess 'do' initial state */
589 2 : goto ldv_do_2;
590 1 : break;
591 : }
592 3 : case 2: {
593 : /* LDV {"action": "RUNTIME_SUSPEND", "type": "CALL_BEGIN", "callback": true, "comment": "The device should be put into a low-power state to prevent communication of the device with the CPU(s) and RAM. Invoke callback runtime_suspend from PLATFORM."} */
594 3 : if (ldv_2_pm_ops_dev_pm_ops->runtime_suspend) {
595 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->runtime_suspend)(ldv_2_device_device);", "comment": "runtime_suspend"} */
596 2 : ldv_pm_ops_scenario_runtime_suspend_2_22(ldv_2_pm_ops_dev_pm_ops->runtime_suspend, ldv_2_device_device);
597 : }
598 : /* LDV {"action": "RUNTIME_SUSPEND", "type": "CALL_END"} */
599 :
600 : /* LDV {"action": "RUNTIME_RESUME", "type": "CALL_BEGIN", "callback": true, "comment": "Put the device into the fully active state in response to a wakeup event generated by hardware or at the request of software. Invoke callback runtime_resume from PLATFORM."} */
601 6 : if (ldv_2_pm_ops_dev_pm_ops->runtime_resume) {
602 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->runtime_resume)(ldv_2_device_device);", "comment": "runtime_resume"} */
603 4 : ldv_pm_ops_scenario_runtime_resume_2_21(ldv_2_pm_ops_dev_pm_ops->runtime_resume, ldv_2_device_device);
604 : }
605 : /* LDV {"action": "RUNTIME_RESUME", "type": "CALL_END"} */
606 :
607 : /* LDV {"action": "DO", "type": "SUBPROCESS_BEGIN", "comment": "Begin a power management scenario."} */
608 : /* LDV {"action": "DO", "type": "SUBPROCESS_END"} */
609 :
610 : /* Jump to a subprocess 'do' initial state */
611 3 : goto ldv_do_2;
612 1 : break;
613 : }
614 3 : case 3: {
615 : /* LDV {"action": "PREPARE", "type": "CALL_BEGIN", "callback": true, "comment": "Prevent new children of the device from being registered. Invoke callback prepare from PLATFORM."} */
616 3 : if (ldv_2_pm_ops_dev_pm_ops->prepare) {
617 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->prepare)(ldv_2_device_device);", "comment": "prepare"} */
618 2 : ldv_pm_ops_scenario_prepare_2_19(ldv_2_pm_ops_dev_pm_ops->prepare, ldv_2_device_device);
619 : }
620 : /* LDV {"action": "PREPARE", "type": "CALL_END"} */
621 :
622 4 : switch (ldv_undef_int()) {
623 3 : case 1: {
624 : /* LDV {"action": "SUSPEND", "type": "CALL_BEGIN", "callback": true, "comment": "Quiesce subsystem-level device before suspend. Invoke callback suspend from PLATFORM."} */
625 3 : if (ldv_2_pm_ops_dev_pm_ops->suspend) {
626 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->suspend)(ldv_2_device_device);", "comment": "suspend"} */
627 2 : ldv_pm_ops_scenario_suspend_2_18(ldv_2_pm_ops_dev_pm_ops->suspend, ldv_2_device_device);
628 : }
629 : /* LDV {"action": "SUSPEND", "type": "CALL_END"} */
630 :
631 6 : if (ldv_undef_int()) {
632 : /* LDV {"action": "SUSPEND_NOIRQ", "type": "CALL_BEGIN", "callback": true, "comment": "Expect that the device will be in a low-power state. Invoke callback suspend_noirq from PLATFORM."} */
633 3 : if (ldv_2_pm_ops_dev_pm_ops->suspend_noirq) {
634 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->suspend_noirq)(ldv_2_device_device);", "comment": "suspend_noirq"} */
635 2 : ldv_pm_ops_scenario_suspend_noirq_2_17(ldv_2_pm_ops_dev_pm_ops->suspend_noirq, ldv_2_device_device);
636 : }
637 : /* LDV {"action": "SUSPEND_NOIRQ", "type": "CALL_END"} */
638 :
639 : /* LDV {"action": "RESUME_NOIRQ", "type": "CALL_BEGIN", "callback": true, "comment": "Prepare for the #resume() performing actions that might be racing with device's interrupt handler. Invoke callback resume_noirq from PLATFORM."} */
640 6 : if (ldv_2_pm_ops_dev_pm_ops->resume_noirq) {
641 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->resume_noirq)(ldv_2_device_device);", "comment": "resume_noirq"} */
642 4 : ldv_pm_ops_scenario_resume_noirq_2_16(ldv_2_pm_ops_dev_pm_ops->resume_noirq, ldv_2_device_device);
643 : }
644 : /* LDV {"action": "RESUME_NOIRQ", "type": "CALL_END"} */
645 :
646 : }
647 : else {
648 : /* LDV {"action": "SKIP_NOIRQ", "type": "CONDITION_BEGIN", "comment": "Skip noirq callbacks"} */
649 : /* LDV {"action": "SKIP_NOIRQ", "type": "CONDITION_END"} */
650 :
651 : }
652 : /* LDV {"action": "RESUME", "type": "CALL_BEGIN", "callback": true, "comment": "Make the device start working again after resume. Invoke callback resume from PLATFORM."} */
653 9 : if (ldv_2_pm_ops_dev_pm_ops->resume) {
654 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->resume)(ldv_2_device_device);", "comment": "resume"} */
655 6 : ldv_pm_ops_scenario_resume_2_14(ldv_2_pm_ops_dev_pm_ops->resume, ldv_2_device_device);
656 : }
657 : /* LDV {"action": "RESUME", "type": "CALL_END"} */
658 :
659 4 : break;
660 1 : }
661 3 : case 2: {
662 : /* LDV {"action": "FREEZE", "type": "CALL_BEGIN", "callback": true, "comment": "Prepare for creating a hibernation image. Invoke callback freeze from PLATFORM."} */
663 3 : if (ldv_2_pm_ops_dev_pm_ops->freeze) {
664 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->freeze)(ldv_2_device_device);", "comment": "freeze"} */
665 2 : ldv_pm_ops_scenario_freeze_2_13(ldv_2_pm_ops_dev_pm_ops->freeze, ldv_2_device_device);
666 : }
667 : /* LDV {"action": "FREEZE", "type": "CALL_END"} */
668 :
669 6 : if (ldv_undef_int()) {
670 : /* LDV {"action": "SKIP_NOIRQ", "type": "CONDITION_BEGIN", "comment": "Skip noirq callbacks"} */
671 : /* LDV {"action": "SKIP_NOIRQ", "type": "CONDITION_END"} */
672 :
673 : }
674 : else {
675 : /* LDV {"action": "FREEZE_NOIRQ", "type": "CALL_BEGIN", "callback": true, "comment": "Complete the actions started by #freeze() that might be racing with device's interrupt handler. Invoke callback freeze_noirq from PLATFORM."} */
676 3 : if (ldv_2_pm_ops_dev_pm_ops->freeze_noirq) {
677 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->freeze_noirq)(ldv_2_device_device);", "comment": "freeze_noirq"} */
678 2 : ldv_pm_ops_scenario_freeze_noirq_2_11(ldv_2_pm_ops_dev_pm_ops->freeze_noirq, ldv_2_device_device);
679 : }
680 : /* LDV {"action": "FREEZE_NOIRQ", "type": "CALL_END"} */
681 :
682 : /* LDV {"action": "THAW_NOIRQ", "type": "CALL_BEGIN", "callback": true, "comment": "Prepare for the execution of #thaw() performing actions that might be racing with device's interrupt handler. Invoke callback thaw_noirq from PLATFORM."} */
683 6 : if (ldv_2_pm_ops_dev_pm_ops->thaw_noirq) {
684 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->thaw_noirq)(ldv_2_device_device);", "comment": "thaw_noirq"} */
685 4 : ldv_pm_ops_scenario_thaw_noirq_2_10(ldv_2_pm_ops_dev_pm_ops->thaw_noirq, ldv_2_device_device);
686 : }
687 : /* LDV {"action": "THAW_NOIRQ", "type": "CALL_END"} */
688 :
689 : }
690 : /* LDV {"action": "THAW", "type": "CALL_BEGIN", "callback": true, "comment": "The hibernation image has created or creation has failed. Invoke callback thaw from PLATFORM."} */
691 9 : if (ldv_2_pm_ops_dev_pm_ops->thaw) {
692 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->thaw)(ldv_2_device_device);", "comment": "thaw"} */
693 6 : ldv_pm_ops_scenario_thaw_2_9(ldv_2_pm_ops_dev_pm_ops->thaw, ldv_2_device_device);
694 : }
695 : /* LDV {"action": "THAW", "type": "CALL_END"} */
696 :
697 4 : break;
698 1 : }
699 3 : case 3: {
700 : /* LDV {"action": "POWEROFF", "type": "CALL_BEGIN", "callback": true, "comment": "Hibernation image has been created. Invoke callback poweroff from PLATFORM."} */
701 3 : if (ldv_2_pm_ops_dev_pm_ops->poweroff) {
702 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->poweroff)(ldv_2_device_device);", "comment": "poweroff"} */
703 2 : ldv_pm_ops_scenario_poweroff_2_8(ldv_2_pm_ops_dev_pm_ops->poweroff, ldv_2_device_device);
704 : }
705 : /* LDV {"action": "POWEROFF", "type": "CALL_END"} */
706 :
707 6 : if (ldv_undef_int()) {
708 : /* LDV {"action": "POWEROFF_NOIRQ", "type": "CALL_BEGIN", "callback": true, "comment": "Complete the actions started by #poweroff(). Invoke callback poweroff_noirq from PLATFORM."} */
709 3 : if (ldv_2_pm_ops_dev_pm_ops->poweroff_noirq) {
710 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->poweroff_noirq)(ldv_2_device_device);", "comment": "poweroff_noirq"} */
711 2 : ldv_pm_ops_scenario_poweroff_noirq_2_7(ldv_2_pm_ops_dev_pm_ops->poweroff_noirq, ldv_2_device_device);
712 : }
713 : /* LDV {"action": "POWEROFF_NOIRQ", "type": "CALL_END"} */
714 :
715 : /* LDV {"action": "RESTORE_NOIRQ", "type": "CALL_BEGIN", "callback": true, "comment": "Prepare for the execution of #restore() performing actions that might be racing with device's interrupt handler. Invoke callback restore_noirq from PLATFORM."} */
716 6 : if (ldv_2_pm_ops_dev_pm_ops->restore_noirq) {
717 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->restore_noirq)(ldv_2_device_device);", "comment": "restore_noirq"} */
718 4 : ldv_pm_ops_scenario_restore_noirq_2_6(ldv_2_pm_ops_dev_pm_ops->restore_noirq, ldv_2_device_device);
719 : }
720 : /* LDV {"action": "RESTORE_NOIRQ", "type": "CALL_END"} */
721 :
722 : }
723 : else {
724 : /* LDV {"action": "SKIP_NOIRQ", "type": "CONDITION_BEGIN", "comment": "Skip noirq callbacks"} */
725 : /* LDV {"action": "SKIP_NOIRQ", "type": "CONDITION_END"} */
726 :
727 : }
728 : /* LDV {"action": "RESTORE", "type": "CALL_BEGIN", "callback": true, "comment": "Restoration of the contents of main memory from a hibernation image has been done. Invoke callback restore from PLATFORM."} */
729 9 : if (ldv_2_pm_ops_dev_pm_ops->restore) {
730 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->restore)(ldv_2_device_device);", "comment": "restore"} */
731 6 : ldv_pm_ops_scenario_restore_2_4(ldv_2_pm_ops_dev_pm_ops->restore, ldv_2_device_device);
732 : }
733 : /* LDV {"action": "RESTORE", "type": "CALL_END"} */
734 :
735 4 : break;
736 1 : }
737 2 : default: ldv_stop();
738 1 : }
739 0 : /* LDV {"action": "COMPLETE", "type": "CALL_BEGIN", "callback": true, "comment": "Undo the changes made by #prepare(). Invoke callback complete from PLATFORM."} */
740 36 : if (ldv_2_pm_ops_dev_pm_ops->complete) {
741 0 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_pm_ops_dev_pm_ops->complete)(ldv_2_device_device);", "comment": "complete"} */
742 24 : ldv_pm_ops_scenario_complete_2_3(ldv_2_pm_ops_dev_pm_ops->complete, ldv_2_device_device);
743 : }
744 : /* LDV {"action": "COMPLETE", "type": "CALL_END"} */
745 :
746 : /* LDV {"action": "DO", "type": "SUBPROCESS_BEGIN", "comment": "Begin a power management scenario."} */
747 : /* LDV {"action": "DO", "type": "SUBPROCESS_END"} */
748 :
749 : /* Jump to a subprocess 'do' initial state */
750 13 : goto ldv_do_2;
751 1 : break;
752 : }
753 3 : case 4: {
754 : /* LDV {"action": "PM_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Do not expect power management scenarios."} */
755 : /* Skip a non-replicative signal receiving */
756 : /* LDV {"action": "PM_DEREGISTER", "type": "RECEIVE_END"} */
757 :
758 : /* Exit function at a terminal state */
759 1 : return;
760 1 : break;
761 : }
762 2 : default: ldv_stop();
763 1 : }
764 0 : /* End of the subprocess 'do' */
765 0 : return;
766 : /* LDV {"comment": "End of control function based on process 'pm_ops_scenario(platform)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_pm_ops_scenario_2"} */
767 : }
768 :
769 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_complete_2_3 */
770 : void ldv_pm_ops_scenario_complete_2_3(void (*arg0)(struct device *), struct device *arg1) {
771 12 : (*arg0)(arg1);
772 12 : }
773 :
774 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_freeze_2_13 */
775 : void ldv_pm_ops_scenario_freeze_2_13(int (*arg0)(struct device *), struct device *arg1) {
776 1 : (*arg0)(arg1);
777 1 : }
778 :
779 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_freeze_noirq_2_11 */
780 : void ldv_pm_ops_scenario_freeze_noirq_2_11(int (*arg0)(struct device *), struct device *arg1) {
781 1 : (*arg0)(arg1);
782 1 : }
783 :
784 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_poweroff_2_8 */
785 : void ldv_pm_ops_scenario_poweroff_2_8(int (*arg0)(struct device *), struct device *arg1) {
786 1 : (*arg0)(arg1);
787 1 : }
788 :
789 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_poweroff_noirq_2_7 */
790 : void ldv_pm_ops_scenario_poweroff_noirq_2_7(int (*arg0)(struct device *), struct device *arg1) {
791 1 : (*arg0)(arg1);
792 1 : }
793 :
794 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_prepare_2_19 */
795 : void ldv_pm_ops_scenario_prepare_2_19(int (*arg0)(struct device *), struct device *arg1) {
796 1 : (*arg0)(arg1);
797 1 : }
798 :
799 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_restore_2_4 */
800 : void ldv_pm_ops_scenario_restore_2_4(int (*arg0)(struct device *), struct device *arg1) {
801 3 : (*arg0)(arg1);
802 3 : }
803 :
804 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_restore_noirq_2_6 */
805 : void ldv_pm_ops_scenario_restore_noirq_2_6(int (*arg0)(struct device *), struct device *arg1) {
806 2 : (*arg0)(arg1);
807 2 : }
808 :
809 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_resume_2_14 */
810 : void ldv_pm_ops_scenario_resume_2_14(int (*arg0)(struct device *), struct device *arg1) {
811 3 : (*arg0)(arg1);
812 3 : }
813 :
814 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_resume_noirq_2_16 */
815 : void ldv_pm_ops_scenario_resume_noirq_2_16(int (*arg0)(struct device *), struct device *arg1) {
816 2 : (*arg0)(arg1);
817 2 : }
818 :
819 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_runtime_idle_2_24 */
820 : void ldv_pm_ops_scenario_runtime_idle_2_24(int (*arg0)(struct device *), struct device *arg1) {
821 1 : (*arg0)(arg1);
822 1 : }
823 :
824 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_runtime_resume_2_21 */
825 : void ldv_pm_ops_scenario_runtime_resume_2_21(int (*arg0)(struct device *), struct device *arg1) {
826 2 : (*arg0)(arg1);
827 2 : }
828 :
829 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_runtime_suspend_2_22 */
830 : void ldv_pm_ops_scenario_runtime_suspend_2_22(int (*arg0)(struct device *), struct device *arg1) {
831 1 : (*arg0)(arg1);
832 1 : }
833 :
834 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_suspend_2_18 */
835 : void ldv_pm_ops_scenario_suspend_2_18(int (*arg0)(struct device *), struct device *arg1) {
836 1 : (*arg0)(arg1);
837 1 : }
838 :
839 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_suspend_noirq_2_17 */
840 : void ldv_pm_ops_scenario_suspend_noirq_2_17(int (*arg0)(struct device *), struct device *arg1) {
841 1 : (*arg0)(arg1);
842 1 : }
843 :
844 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_thaw_2_9 */
845 : void ldv_pm_ops_scenario_thaw_2_9(int (*arg0)(struct device *), struct device *arg1) {
846 3 : (*arg0)(arg1);
847 3 : }
848 :
849 : /* AUX_FUNC_CALLBACK ldv_pm_ops_scenario_thaw_noirq_2_10 */
850 : void ldv_pm_ops_scenario_thaw_noirq_2_10(int (*arg0)(struct device *), struct device *arg1) {
851 2 : (*arg0)(arg1);
852 2 : }
853 :
854 : /* AUX_FUNC ldv_random_containerless_scenario_3 */
855 : void ldv_random_containerless_scenario_3(void *arg0) {
856 : /* LDV {"thread": 3, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_fb_ops)'", "function": "ldv_random_containerless_scenario_3"} */
857 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
858 1 : int (*ldv_3_callback_fb_blank)(int, struct fb_info *);
859 1 : void (*ldv_3_callback_fb_copyarea)(struct fb_info *, struct fb_copyarea *);
860 1 : void (*ldv_3_callback_fb_fillrect)(struct fb_info *, struct fb_fillrect *);
861 1 : void (*ldv_3_callback_fb_imageblit)(struct fb_info *, struct fb_image *);
862 1 : int (*ldv_3_callback_fb_open)(struct fb_info *, int);
863 1 : int (*ldv_3_callback_fb_pan_display)(struct fb_var_screeninfo *, struct fb_info *);
864 1 : int (*ldv_3_callback_fb_release)(struct fb_info *, int);
865 : int (*ldv_3_callback_fb_setcolreg)(u_int , u_int , u_int , u_int , u_int , struct fb_info *);
866 1 : struct fb_copyarea *ldv_3_container_struct_fb_copyarea_ptr;
867 1 : struct fb_fillrect *ldv_3_container_struct_fb_fillrect_ptr;
868 1 : struct fb_image *ldv_3_container_struct_fb_image_ptr;
869 1 : struct fb_info *ldv_3_container_struct_fb_info_ptr;
870 1 : struct fb_var_screeninfo *ldv_3_container_struct_fb_var_screeninfo_ptr;
871 1 : int ldv_3_ldv_param_11_1_default;
872 1 : int ldv_3_ldv_param_15_1_default;
873 1 : unsigned int ldv_3_ldv_param_18_0_default;
874 1 : unsigned int ldv_3_ldv_param_18_1_default;
875 1 : unsigned int ldv_3_ldv_param_18_2_default;
876 1 : unsigned int ldv_3_ldv_param_18_3_default;
877 1 : unsigned int ldv_3_ldv_param_18_4_default;
878 1 : int ldv_3_ldv_param_3_0_default;
879 1 : /* Received labels */
880 2 : struct ldv_struct_random_containerless_scenario_3 *data = (struct ldv_struct_random_containerless_scenario_3*) arg0;
881 1 :
882 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
883 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_FB_OPS callbacks invocations scenario."} */
884 : /* Assign recieved labels */
885 2 : if (data) {
886 1 : ldv_3_container_struct_fb_info_ptr = data->arg0;
887 2 : ldv_free(data);
888 : }
889 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
890 :
891 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
892 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
893 :
894 : /* Jump to a subprocess 'call' initial state */
895 2 : goto ldv_call_3;
896 : /* End of the process */
897 : return;
898 1 :
899 : /* Sbprocess call */
900 : ldv_call_3:
901 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
902 :
903 4 : if (ldv_undef_int()) {
904 : /* LDV {"action": "PRE_CALL_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
905 : /* LDV {"action": "PRE_CALL_3", "type": "CONDITION_END"} */
906 :
907 2 : switch (ldv_undef_int()) {
908 3 : case 1: {
909 : /* LDV {"action": "PRE_CALL_18", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
910 : /* LDV {"action": "PRE_CALL_18", "type": "CONDITION_END"} */
911 :
912 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_setcolreg from fb_ops."} */
913 : /* LDV {"type": "CALLBACK", "call": "(( & hgafb_setcolreg))(ldv_3_ldv_param_18_0_default, ldv_3_ldv_param_18_1_default, ldv_3_ldv_param_18_2_default, ldv_3_ldv_param_18_3_default, ldv_3_ldv_param_18_4_default, ldv_3_container_struct_fb_info_ptr);", "comment": "callback"} */
914 2 : ldv_random_containerless_scenario_callback_3_18(ldv_3_callback_fb_setcolreg, ldv_3_ldv_param_18_0_default, ldv_3_ldv_param_18_1_default, ldv_3_ldv_param_18_2_default, ldv_3_ldv_param_18_3_default, ldv_3_ldv_param_18_4_default, ldv_3_container_struct_fb_info_ptr);
915 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
916 :
917 : /* LDV {"action": "POST_CALL_18", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
918 : /* LDV {"action": "POST_CALL_18", "type": "CONDITION_END"} */
919 :
920 1 : break;
921 1 : }
922 3 : case 2: {
923 : /* LDV {"action": "PRE_CALL_15", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
924 : /* LDV {"action": "PRE_CALL_15", "type": "CONDITION_END"} */
925 :
926 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_release from fb_ops."} */
927 : /* LDV {"type": "CALLBACK", "call": "((& hgafb_release))(ldv_3_container_struct_fb_info_ptr, ldv_3_ldv_param_15_1_default);", "comment": "callback"} */
928 2 : ldv_random_containerless_scenario_callback_3_15(ldv_3_callback_fb_release, ldv_3_container_struct_fb_info_ptr, ldv_3_ldv_param_15_1_default);
929 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
930 :
931 : /* LDV {"action": "POST_CALL_15", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
932 : /* LDV {"action": "POST_CALL_15", "type": "CONDITION_END"} */
933 :
934 1 : break;
935 1 : }
936 3 : case 3: {
937 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_pan_display from fb_ops."} */
938 : /* LDV {"type": "CALLBACK", "call": "((& hgafb_pan_display))(ldv_3_container_struct_fb_var_screeninfo_ptr, ldv_3_container_struct_fb_info_ptr);", "comment": "callback"} */
939 2 : ldv_random_containerless_scenario_callback_3_14(ldv_3_callback_fb_pan_display, ldv_3_container_struct_fb_var_screeninfo_ptr, ldv_3_container_struct_fb_info_ptr);
940 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
941 :
942 1 : break;
943 1 : }
944 3 : case 4: {
945 : /* LDV {"action": "PRE_CALL_11", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
946 : /* LDV {"action": "PRE_CALL_11", "type": "CONDITION_END"} */
947 :
948 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_open from fb_ops."} */
949 : /* LDV {"type": "CALLBACK", "call": "((& hgafb_open))(ldv_3_container_struct_fb_info_ptr, ldv_3_ldv_param_11_1_default);", "comment": "callback"} */
950 2 : ldv_random_containerless_scenario_callback_3_11(ldv_3_callback_fb_open, ldv_3_container_struct_fb_info_ptr, ldv_3_ldv_param_11_1_default);
951 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
952 :
953 : /* LDV {"action": "POST_CALL_11", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
954 : /* LDV {"action": "POST_CALL_11", "type": "CONDITION_END"} */
955 :
956 1 : break;
957 1 : }
958 3 : case 5: {
959 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_imageblit from fb_ops."} */
960 : /* LDV {"type": "CALLBACK", "call": "((& cfb_imageblit))(ldv_3_container_struct_fb_info_ptr, ldv_3_container_struct_fb_image_ptr);", "comment": "callback"} */
961 2 : ldv_random_containerless_scenario_callback_3_10(ldv_3_callback_fb_imageblit, ldv_3_container_struct_fb_info_ptr, ldv_3_container_struct_fb_image_ptr);
962 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
963 :
964 1 : break;
965 1 : }
966 3 : case 6: {
967 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_fillrect from fb_ops."} */
968 : /* LDV {"type": "CALLBACK", "call": "((& cfb_fillrect))(ldv_3_container_struct_fb_info_ptr, ldv_3_container_struct_fb_fillrect_ptr);", "comment": "callback"} */
969 2 : ldv_random_containerless_scenario_callback_3_9(ldv_3_callback_fb_fillrect, ldv_3_container_struct_fb_info_ptr, ldv_3_container_struct_fb_fillrect_ptr);
970 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
971 :
972 1 : break;
973 1 : }
974 3 : case 7: {
975 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_copyarea from fb_ops."} */
976 : /* LDV {"type": "CALLBACK", "call": "((& cfb_copyarea))(ldv_3_container_struct_fb_info_ptr, ldv_3_container_struct_fb_copyarea_ptr);", "comment": "callback"} */
977 2 : ldv_random_containerless_scenario_callback_3_8(ldv_3_callback_fb_copyarea, ldv_3_container_struct_fb_info_ptr, ldv_3_container_struct_fb_copyarea_ptr);
978 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
979 :
980 1 : break;
981 1 : }
982 3 : case 8: {
983 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fb_blank from fb_ops."} */
984 : /* LDV {"type": "CALLBACK", "call": "((& hgafb_blank))(ldv_3_ldv_param_3_0_default, ldv_3_container_struct_fb_info_ptr);", "comment": "callback"} */
985 2 : ldv_random_containerless_scenario_callback_3_3(ldv_3_callback_fb_blank, ldv_3_ldv_param_3_0_default, ldv_3_container_struct_fb_info_ptr);
986 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
987 :
988 1 : break;
989 1 : }
990 2 : default: ldv_stop();
991 1 : }
992 0 : /* LDV {"action": "POST_CALL_3", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
993 : /* LDV {"action": "POST_CALL_3", "type": "CONDITION_END"} */
994 0 :
995 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
996 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
997 :
998 : /* Jump to a subprocess 'call' initial state */
999 8 : goto ldv_call_3;
1000 : }
1001 : else {
1002 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_FB_OPS callbacks invocations scenario."} */
1003 : /* Skip a non-replicative signal receiving */
1004 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1005 :
1006 : /* Exit function at a terminal state */
1007 1 : return;
1008 : }
1009 : /* End of the subprocess 'call' */
1010 : return;
1011 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_fb_ops)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_3"} */
1012 : }
1013 :
1014 : /* AUX_FUNC ldv_random_containerless_scenario_4 */
1015 : void ldv_random_containerless_scenario_4(void *arg0) {
1016 : /* LDV {"thread": 4, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_kernel_param)'", "function": "ldv_random_containerless_scenario_4"} */
1017 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1018 1 : int (*ldv_4_callback_get)(char *, struct kernel_param *);
1019 1 : int (*ldv_4_callback_set)(char *, struct kernel_param *);
1020 1 : struct kernel_param *ldv_4_container_struct_kernel_param;
1021 1 : char *ldv_4_ldv_param_10_0_default;
1022 1 : char *ldv_4_ldv_param_4_0_default;
1023 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1024 1 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_KERNEL_PARAM callbacks invocations scenario."} */
1025 3 : ldv_free(arg0);
1026 1 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "RECEIVE_END"} */
1027 :
1028 : /* LDV {"action": "DEFAULT_ALLOC_8", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1029 3 : ldv_4_container_struct_kernel_param = ldv_xmalloc_unknown_size(0);
1030 : /* LDV {"action": "DEFAULT_ALLOC_8", "type": "CONDITION_END"} */
1031 :
1032 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1033 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1034 :
1035 : /* Jump to a subprocess 'call' initial state */
1036 1 : goto ldv_call_4;
1037 : /* End of the process */
1038 : return;
1039 1 :
1040 : /* Sbprocess call */
1041 : ldv_call_4:
1042 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1043 :
1044 4 : if (ldv_undef_int()) {
1045 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1046 3 : ldv_4_ldv_param_4_0_default = ldv_xmalloc_unknown_size(0);
1047 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1048 :
1049 4 : if (ldv_undef_int()) {
1050 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1051 3 : ldv_4_ldv_param_10_0_default = ldv_xmalloc_unknown_size(0);
1052 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_END"} */
1053 :
1054 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback set from kernel_param."} */
1055 : /* LDV {"type": "CALLBACK", "call": "((& param_set_bool))(ldv_4_ldv_param_10_0_default, ldv_4_container_struct_kernel_param);", "comment": "callback"} */
1056 2 : ldv_random_containerless_scenario_callback_4_10(ldv_4_callback_set, ldv_4_ldv_param_10_0_default, ldv_4_container_struct_kernel_param);
1057 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1058 :
1059 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1060 2 : ldv_free(ldv_4_ldv_param_10_0_default);
1061 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_END"} */
1062 :
1063 : }
1064 : else {
1065 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get from kernel_param."} */
1066 : /* LDV {"type": "CALLBACK", "call": "((& param_get_bool))(ldv_4_ldv_param_4_0_default, ldv_4_container_struct_kernel_param);", "comment": "callback"} */
1067 2 : ldv_random_containerless_scenario_callback_4_4(ldv_4_callback_get, ldv_4_ldv_param_4_0_default, ldv_4_container_struct_kernel_param);
1068 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1069 :
1070 : }
1071 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1072 4 : ldv_free(ldv_4_ldv_param_4_0_default);
1073 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1074 :
1075 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1076 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1077 :
1078 : /* Jump to a subprocess 'call' initial state */
1079 1 : goto ldv_call_4;
1080 : }
1081 : else {
1082 : /* LDV {"action": "DEFAULT_FREE_8", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1083 2 : ldv_free(ldv_4_container_struct_kernel_param);
1084 : /* LDV {"action": "DEFAULT_FREE_8", "type": "CONDITION_END"} */
1085 :
1086 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_KERNEL_PARAM callbacks invocations scenario."} */
1087 : /* Skip a non-replicative signal receiving */
1088 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "RECEIVE_END"} */
1089 :
1090 : /* Exit function at a terminal state */
1091 1 : return;
1092 : }
1093 : /* End of the subprocess 'call' */
1094 : return;
1095 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_kernel_param)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_4"} */
1096 : }
1097 :
1098 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_10 */
1099 : void ldv_random_containerless_scenario_callback_3_10(void (*arg0)(struct fb_info *, struct fb_image *), struct fb_info *arg1, struct fb_image *arg2) {
1100 1 : ((& cfb_imageblit))(arg1, arg2);
1101 1 : }
1102 :
1103 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_11 */
1104 : void ldv_random_containerless_scenario_callback_3_11(int (*arg0)(struct fb_info *, int), struct fb_info *arg1, int arg2) {
1105 3 : ((& hgafb_open))(arg1, arg2);
1106 1 : }
1107 :
1108 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_14 */
1109 : void ldv_random_containerless_scenario_callback_3_14(int (*arg0)(struct fb_var_screeninfo *, struct fb_info *), struct fb_var_screeninfo *arg1, struct fb_info *arg2) {
1110 3 : ((& hgafb_pan_display))(arg1, arg2);
1111 1 : }
1112 :
1113 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_15 */
1114 : void ldv_random_containerless_scenario_callback_3_15(int (*arg0)(struct fb_info *, int), struct fb_info *arg1, int arg2) {
1115 2 : ((& hgafb_release))(arg1, arg2);
1116 1 : }
1117 :
1118 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_18 */
1119 : void ldv_random_containerless_scenario_callback_3_18(int (*arg0)(u_int , u_int , u_int , u_int , u_int , struct fb_info *), unsigned int arg1, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5, struct fb_info *arg6) {
1120 2 : (( & hgafb_setcolreg))(arg1, arg2, arg3, arg4, arg5, arg6);
1121 1 : }
1122 :
1123 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_3 */
1124 : void ldv_random_containerless_scenario_callback_3_3(int (*arg0)(int, struct fb_info *), int arg1, struct fb_info *arg2) {
1125 2 : ((& hgafb_blank))(arg1, arg2);
1126 1 : }
1127 :
1128 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_8 */
1129 : void ldv_random_containerless_scenario_callback_3_8(void (*arg0)(struct fb_info *, struct fb_copyarea *), struct fb_info *arg1, struct fb_copyarea *arg2) {
1130 1 : ((& cfb_copyarea))(arg1, arg2);
1131 1 : }
1132 :
1133 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_9 */
1134 : void ldv_random_containerless_scenario_callback_3_9(void (*arg0)(struct fb_info *, struct fb_fillrect *), struct fb_info *arg1, struct fb_fillrect *arg2) {
1135 1 : ((& cfb_fillrect))(arg1, arg2);
1136 1 : }
1137 :
1138 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_10 */
1139 : void ldv_random_containerless_scenario_callback_4_10(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
1140 1 : ((& param_set_bool))(arg1, arg2);
1141 1 : }
1142 :
1143 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_4 */
1144 : void ldv_random_containerless_scenario_callback_4_4(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
1145 1 : ((& param_get_bool))(arg1, arg2);
1146 1 : }
1147 :
1148 : /* AUX_FUNC main */
1149 : int main() {
1150 1 : ldv_main_10(0);
1151 0 : return 0;
1152 : }
1153 :
1154 :
1155 : /* AUX_FUNC ERR_PTR */
1156 : static inline void *ERR_PTR (long int error)
1157 : {
1158 :
1159 : return ldv_err_ptr(error);
1160 : }
1161 :
1162 : /* AUX_FUNC PTR_ERR */
1163 : static inline long int PTR_ERR (void const *ptr)
1164 : {
1165 1 :
1166 3 : return ldv_ptr_err(ptr);
1167 : }
1168 :
1169 : /* AUX_FUNC IS_ERR */
1170 : static inline long int IS_ERR (void const *ptr)
1171 : {
1172 1 :
1173 3 : return ldv_is_err(ptr);
1174 : }
1175 :
1176 : /* AUX_FUNC IS_ERR_OR_NULL */
1177 : static inline long int IS_ERR_OR_NULL (void const *ptr)
1178 : {
1179 :
1180 : return ldv_is_err_or_null(ptr);
1181 : }
1182 :
1183 : /* AUX_FUNC kzalloc */
1184 : static inline void *kzalloc (size_t size, gfp_t flags)
1185 : {
1186 :
1187 : return ldv_kzalloc(size, flags);
1188 : }
1189 :
1190 : /* AUX_FUNC ldv_dev_get_drvdata_6 */
1191 : void *ldv_dev_get_drvdata_6 (struct device const *dev)
1192 : {
1193 :
1194 : return ldv_dev_get_drvdata(dev);
1195 : }
1196 :
1197 : /* AUX_FUNC ldv_dev_get_drvdata_7 */
1198 : void *ldv_dev_get_drvdata_7 (struct device const *dev)
1199 : {
1200 :
1201 : return ldv_dev_get_drvdata(dev);
1202 : }
1203 :
1204 : /* AUX_FUNC ldv_dev_get_drvdata_8 */
1205 : void *ldv_dev_get_drvdata_8 (struct device const *dev)
1206 : {
1207 :
1208 : return ldv_dev_get_drvdata(dev);
1209 : }
1210 :
1211 : /* AUX_FUNC ldv_register_framebuffer_9 */
1212 : int ldv_register_framebuffer_9 (struct fb_info *ldv_func_arg1)
1213 : {
1214 1 :
1215 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'register_framebuffer'"} */
1216 4 : return ldv_emg_register_framebuffer(ldv_func_arg1);
1217 : }
1218 :
1219 : /* AUX_FUNC ldv_dev_get_drvdata_10 */
1220 : void *ldv_dev_get_drvdata_10 (struct device const *dev)
1221 : {
1222 1 :
1223 3 : return ldv_dev_get_drvdata(dev);
1224 : }
1225 :
1226 : /* AUX_FUNC ldv_unregister_framebuffer_11 */
1227 : int ldv_unregister_framebuffer_11 (struct fb_info *ldv_func_arg1)
1228 : {
1229 1 :
1230 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'unregister_framebuffer'"} */
1231 3 : return ldv_emg_unregister_framebuffer(ldv_func_arg1);
1232 : }
1233 :
1234 : /* AUX_FUNC ldv_platform_driver_register_12 */
1235 : int ldv_platform_driver_register_12 (struct platform_driver *ldv_func_arg1)
1236 : {
1237 1 :
1238 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'platform_driver_register'"} */
1239 4 : return ldv_emg_platform_driver_register(ldv_func_arg1);
1240 : }
1241 :
1242 : /* AUX_FUNC ldv_platform_driver_unregister_13 */
1243 : void ldv_platform_driver_unregister_13 (struct platform_driver *ldv_func_arg1)
1244 : {
1245 :
1246 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'platform_driver_unregister'"} */
1247 2 : ldv_emg_platform_driver_unregister(ldv_func_arg1);
1248 1 : }
1249 :
1250 : /* AUX_FUNC ldv_platform_driver_unregister_14 */
1251 : void ldv_platform_driver_unregister_14 (struct platform_driver *ldv_func_arg1)
1252 : {
1253 :
1254 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'platform_driver_unregister'"} */
1255 4 : ldv_emg_platform_driver_unregister(ldv_func_arg1);
1256 2 : }
|