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/netdevice.h>
29 : #include <linux/pci.h>
30 : #include <linux/pm.h>
31 : #include <linux/timer.h>
32 : #include <linux/interrupt.h>
33 :
34 :
35 : struct ldv_struct_free_irq_9 {
36 : int arg0;
37 : int signal_pending;
38 : };
39 1 :
40 : struct ldv_struct_insmod_7 {
41 : int signal_pending;
42 : };
43 1 :
44 : struct ldv_struct_interrupt_scenario_1 {
45 : int arg0;
46 : irqreturn_t (*arg1)(int, void *);
47 : irqreturn_t (*arg2)(int, void *);
48 : void *arg3;
49 : int signal_pending;
50 : };
51 1 :
52 : struct ldv_struct_pci_scenario_3 {
53 : struct pci_driver *arg0;
54 : int signal_pending;
55 : };
56 1 :
57 : struct ldv_struct_random_containerless_scenario_2 {
58 : struct net_device *arg0;
59 : int signal_pending;
60 : };
61 1 :
62 : struct ldv_struct_timer_scenario_6 {
63 : struct timer_list *arg0;
64 : int signal_pending;
65 : };
66 :
67 : /* EMG Function declarations */
68 : void ldv_dispatch_default_deregister_13_7_4(void);
69 : void ldv_dispatch_default_register_13_7_5(void);
70 : void ldv_dispatch_deregister_14_1(struct net_device *);
71 : void ldv_dispatch_deregister_15_1(struct pci_driver *);
72 : void ldv_dispatch_insmod_deregister_17_2(void);
73 : void ldv_dispatch_insmod_register_17_3(void);
74 : void ldv_dispatch_instance_deregister_8_1(struct timer_list *);
75 : void ldv_dispatch_instance_register_11_3(struct timer_list *);
76 : void ldv_dispatch_irq_deregister_9_1(int);
77 : void ldv_dispatch_irq_register_13_3(int, irqreturn_t (*)(int, void *), irqreturn_t (*)(int, void *), void *);
78 : void ldv_dispatch_register_12_4(struct net_device *);
79 : void ldv_dispatch_register_16_3(struct pci_driver *);
80 : int ldv_emg___pci_register_driver(struct pci_driver *, struct module *, char *);
81 : int ldv_emg_del_timer_sync(struct timer_list *);
82 : void ldv_emg_free_irq(int, void *);
83 : void ldv_emg_free_netdev(struct net_device *);
84 : int ldv_emg_mod_timer(struct timer_list *, long unsigned int);
85 : void ldv_emg_pci_unregister_driver(struct pci_driver *);
86 : int ldv_emg_register_netdev(struct net_device *);
87 : int ldv_emg_request_irq(unsigned int, irq_handler_t , long unsigned int, char *, void *);
88 : void ldv_emg_unregister_netdev(struct net_device *);
89 : void ldv_insmod_7(void *);
90 : void ldv_insmod_vortex_cleanup_7_2(void (*)(void));
91 : int ldv_insmod_vortex_init_7_9(int (*)(void));
92 : void ldv_interrupt_scenario_1(void *);
93 : enum irqreturn ldv_interrupt_scenario_handler_1_5(irqreturn_t (*)(int, void *), int, void *);
94 : void ldv_interrupt_scenario_thread_1_3(irqreturn_t (*)(int, void *), int, void *);
95 : void ldv_main_17(void *);
96 : void ldv_pci_scenario_3(void *);
97 : int ldv_pci_scenario_probe_3_17(int (*)(struct pci_dev *, struct pci_device_id *), struct pci_dev *, struct pci_device_id *);
98 : void ldv_pci_scenario_release_3_2(void (*)(struct pci_dev *), struct pci_dev *);
99 : void ldv_pci_scenario_resume_3_5(int (*)(struct pci_dev *), struct pci_dev *);
100 : void ldv_pci_scenario_resume_early_3_6(int (*)(struct pci_dev *), struct pci_dev *);
101 : void ldv_pci_scenario_shutdown_3_3(void (*)(struct pci_dev *), struct pci_dev *);
102 : int ldv_pci_scenario_suspend_3_8(int (*)(struct pci_dev *, struct pm_message), struct pci_dev *, struct pm_message);
103 : int ldv_pci_scenario_suspend_late_3_7(int (*)(struct pci_dev *, struct pm_message), struct pci_dev *, struct pm_message);
104 : void ldv_random_containerless_scenario_2(void *);
105 : void ldv_random_containerless_scenario_4(void *);
106 : void ldv_random_containerless_scenario_5(void *);
107 : void ldv_random_containerless_scenario_callback_2_10(u32 (*)(struct net_device *), struct net_device *);
108 : void ldv_random_containerless_scenario_callback_2_11(int (*)(struct net_device *, struct ethtool_cmd *), struct net_device *, struct ethtool_cmd *);
109 : void ldv_random_containerless_scenario_callback_2_12(int (*)(struct net_device *, int), struct net_device *, int);
110 : void ldv_random_containerless_scenario_callback_2_15(void (*)(struct net_device *, u32 , u8 *), struct net_device *, unsigned int, u8 *);
111 : void ldv_random_containerless_scenario_callback_2_18(int (*)(struct net_device *, int), struct net_device *, int);
112 : void ldv_random_containerless_scenario_callback_2_21(int (*)(struct net_device *, struct ifreq *, int), struct net_device *, struct ifreq *, int);
113 : void ldv_random_containerless_scenario_callback_2_24(struct net_device_stats *(*)(struct net_device *), struct net_device *);
114 : void ldv_random_containerless_scenario_callback_2_25(int (*)(struct net_device *, void *), struct net_device *, void *);
115 : void ldv_random_containerless_scenario_callback_2_26(void (*)(struct net_device *), struct net_device *);
116 : void ldv_random_containerless_scenario_callback_2_27(netdev_tx_t (*)(struct sk_buff *, struct net_device *), struct sk_buff *, struct net_device *);
117 : void ldv_random_containerless_scenario_callback_2_28(void (*)(struct net_device *), struct net_device *);
118 : void ldv_random_containerless_scenario_callback_2_29(int (*)(struct net_device *), struct net_device *);
119 : void ldv_random_containerless_scenario_callback_2_3(void (*)(struct net_device *, struct ethtool_drvinfo *), struct net_device *, struct ethtool_drvinfo *);
120 : void ldv_random_containerless_scenario_callback_2_30(int (*)(struct net_device *), struct net_device *);
121 : void ldv_random_containerless_scenario_callback_2_31(void (*)(struct net_device *, u32 ), struct net_device *, unsigned int);
122 : void ldv_random_containerless_scenario_callback_2_34(int (*)(struct net_device *, struct ethtool_cmd *), struct net_device *, struct ethtool_cmd *);
123 : void ldv_random_containerless_scenario_callback_2_6(void (*)(struct net_device *, struct ethtool_stats *, u64 *), struct net_device *, struct ethtool_stats *, u64 *);
124 : void ldv_random_containerless_scenario_callback_2_9(u32 (*)(struct net_device *), struct net_device *);
125 : void ldv_random_containerless_scenario_callback_4_10(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
126 : void ldv_random_containerless_scenario_callback_4_4(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
127 : void ldv_random_containerless_scenario_callback_5_10(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
128 : void ldv_random_containerless_scenario_callback_5_4(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
129 : int ldv_register_netdev_open_12_6(int (*)(struct net_device *), struct net_device *);
130 : void ldv_timer_scenario_6(void *);
131 : void ldv_timer_scenario_callback_6_2(void (*)(unsigned long), unsigned long);
132 : void ldv_unregister_netdev_stop_14_2(int (*)(struct net_device *), struct net_device *);
133 : int main(void);
134 :
135 : /* EMG variable declarations */
136 1 : struct ldv_thread ldv_thread_1;
137 1 : struct ldv_thread ldv_thread_17;
138 1 : struct ldv_thread ldv_thread_2;
139 1 : struct ldv_thread ldv_thread_3;
140 1 : struct ldv_thread ldv_thread_4;
141 1 : struct ldv_thread ldv_thread_5;
142 1 : struct ldv_thread ldv_thread_6;
143 1 : struct ldv_thread ldv_thread_7;
144 :
145 : /* EMG variable initialization */
146 :
147 : /* EMG function definitions */
148 : /* AUX_FUNC ldv_dispatch_default_deregister_13_7_4 */
149 : void ldv_dispatch_default_deregister_13_7_4() {
150 : struct ldv_struct_insmod_7 *cf_arg_4;
151 : struct ldv_struct_insmod_7 *cf_arg_5;
152 : /* Skip thread join call */
153 : /* Skip thread join call */
154 1 : return;
155 : }
156 :
157 : /* AUX_FUNC ldv_dispatch_default_register_13_7_5 */
158 : void ldv_dispatch_default_register_13_7_5() {
159 : struct ldv_struct_insmod_7 *cf_arg_4;
160 1 : struct ldv_struct_insmod_7 *cf_arg_5;
161 4 : cf_arg_4 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
162 3 : ldv_random_containerless_scenario_4(cf_arg_4);
163 4 : cf_arg_5 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
164 2 : ldv_random_containerless_scenario_5(cf_arg_5);
165 1 : return;
166 : }
167 :
168 : /* AUX_FUNC ldv_dispatch_deregister_14_1 */
169 : void ldv_dispatch_deregister_14_1(struct net_device *arg0) {
170 : struct ldv_struct_random_containerless_scenario_2 *cf_arg_2;
171 : /* Skip thread join call */
172 4 : return;
173 : }
174 :
175 : /* AUX_FUNC ldv_dispatch_deregister_15_1 */
176 : void ldv_dispatch_deregister_15_1(struct pci_driver *arg0) {
177 : struct ldv_struct_pci_scenario_3 *cf_arg_3;
178 : /* Skip thread join call */
179 2 : return;
180 : }
181 :
182 : /* AUX_FUNC ldv_dispatch_insmod_deregister_17_2 */
183 : void ldv_dispatch_insmod_deregister_17_2() {
184 : struct ldv_struct_insmod_7 *cf_arg_7;
185 : /* Skip thread join call */
186 1 : return;
187 : }
188 :
189 : /* AUX_FUNC ldv_dispatch_insmod_register_17_3 */
190 : void ldv_dispatch_insmod_register_17_3() {
191 : struct ldv_struct_insmod_7 *cf_arg_7;
192 4 : cf_arg_7 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
193 4 : ldv_insmod_7(cf_arg_7);
194 1 : return;
195 : }
196 :
197 : /* AUX_FUNC ldv_dispatch_instance_deregister_8_1 */
198 : void ldv_dispatch_instance_deregister_8_1(struct timer_list *arg0) {
199 : struct ldv_struct_timer_scenario_6 *cf_arg_6;
200 : /* Skip thread join call */
201 728 : return;
202 : }
203 :
204 : /* AUX_FUNC ldv_dispatch_instance_register_11_3 */
205 : void ldv_dispatch_instance_register_11_3(struct timer_list *arg0) {
206 : struct ldv_struct_timer_scenario_6 *cf_arg_6;
207 120 : cf_arg_6 = ldv_xmalloc(sizeof(struct ldv_struct_timer_scenario_6));
208 60 : cf_arg_6->arg0 = arg0;
209 120 : ldv_timer_scenario_6(cf_arg_6);
210 30 : return;
211 : }
212 :
213 : /* AUX_FUNC ldv_dispatch_irq_deregister_9_1 */
214 : void ldv_dispatch_irq_deregister_9_1(int arg0) {
215 : struct ldv_struct_free_irq_9 *cf_arg_1;
216 : /* Skip thread join call */
217 48 : return;
218 : }
219 :
220 : /* AUX_FUNC ldv_dispatch_irq_register_13_3 */
221 : void ldv_dispatch_irq_register_13_3(int arg0, irqreturn_t (*arg1)(int, void *), irqreturn_t (*arg2)(int, void *), void *arg3) {
222 : struct ldv_struct_interrupt_scenario_1 *cf_arg_1;
223 60 : cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_interrupt_scenario_1));
224 40 : cf_arg_1->arg0 = arg0;
225 40 : cf_arg_1->arg1 = arg1;
226 20 : cf_arg_1->arg2 = arg2;
227 20 : cf_arg_1->arg3 = arg3;
228 80 : ldv_interrupt_scenario_1(cf_arg_1);
229 20 : return;
230 : }
231 :
232 : /* AUX_FUNC ldv_dispatch_register_12_4 */
233 : void ldv_dispatch_register_12_4(struct net_device *arg0) {
234 : struct ldv_struct_random_containerless_scenario_2 *cf_arg_2;
235 40 : cf_arg_2 = ldv_xmalloc(sizeof(struct ldv_struct_random_containerless_scenario_2));
236 20 : cf_arg_2->arg0 = arg0;
237 20 : ldv_random_containerless_scenario_2(cf_arg_2);
238 10 : return;
239 : }
240 :
241 : /* AUX_FUNC ldv_dispatch_register_16_3 */
242 : void ldv_dispatch_register_16_3(struct pci_driver *arg0) {
243 : struct ldv_struct_pci_scenario_3 *cf_arg_3;
244 4 : cf_arg_3 = ldv_xmalloc(sizeof(struct ldv_struct_pci_scenario_3));
245 2 : cf_arg_3->arg0 = arg0;
246 2 : ldv_pci_scenario_3(cf_arg_3);
247 1 : return;
248 : }
249 :
250 : /* AUX_FUNC ldv_emg___pci_register_driver */
251 : int ldv_emg___pci_register_driver(struct pci_driver *arg0, struct module *arg1, char *arg2) {
252 : /* LDV {"comment": "Control function '__pci_register_driver'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg___pci_register_driver"} */
253 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
254 1 : struct pci_driver *ldv_16_pci_driver_pci_driver;
255 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
256 1 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
257 :
258 4 : if (ldv_undef_int()) {
259 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'pci' callbacks to register."} */
260 1 : ldv_16_pci_driver_pci_driver = arg0;
261 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
262 :
263 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register PCI callbacks."} */
264 2 : ldv_dispatch_register_16_3(ldv_16_pci_driver_pci_driver);
265 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
266 :
267 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'pci' callbacks."} */
268 3 : return ldv_undef_int_negative();
269 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
270 :
271 : /* Exit function at a terminal state */
272 : }
273 : else {
274 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'pci' callbacks has been successful."} */
275 1 : return 0;
276 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
277 :
278 : /* Exit function at a terminal state */
279 : }
280 : /* End of the process */
281 : /* LDV {"comment": "End of control function based on process '__pci_register_driver'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg___pci_register_driver"} */
282 : }
283 :
284 : /* AUX_FUNC ldv_emg_del_timer_sync */
285 : int ldv_emg_del_timer_sync(struct timer_list *arg0) {
286 : /* LDV {"comment": "Control function 'del_timer_sync'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_del_timer_sync"} */
287 728 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
288 : struct timer_list *ldv_8_timer_list_timer_list;
289 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
290 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get timer representing structure."} */
291 728 : ldv_8_timer_list_timer_list = arg0;
292 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
293 :
294 : /* LDV {"action": "INSTANCE_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister TIMER callbacks."} */
295 1456 : ldv_dispatch_instance_deregister_8_1(ldv_8_timer_list_timer_list);
296 728 : /* LDV {"action": "INSTANCE_DEREGISTER", "type": "DISPATCH_END"} */
297 :
298 : /* Exit function at a terminal state */
299 : /* End of the process */
300 : /* LDV {"comment": "End of control function based on process 'del_timer_sync'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_del_timer_sync"} */
301 : }
302 :
303 : /* AUX_FUNC ldv_emg_free_irq */
304 : void ldv_emg_free_irq(int arg0, void *arg1) {
305 : /* LDV {"comment": "Control function 'free_irq'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_free_irq"} */
306 48 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
307 : int ldv_9_line_line;
308 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
309 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get an interrupt line argument."} */
310 48 : ldv_9_line_line = arg0;
311 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
312 :
313 : /* LDV {"action": "IRQ_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "The interrupt line is freed."} */
314 96 : ldv_dispatch_irq_deregister_9_1(ldv_9_line_line);
315 : /* LDV {"action": "IRQ_DEREGISTER", "type": "DISPATCH_END"} */
316 :
317 : /* Exit function at a terminal state */
318 48 : return;
319 : /* End of the process */
320 : return;
321 : /* LDV {"comment": "End of control function based on process 'free_irq'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_free_irq"} */
322 : }
323 :
324 : /* AUX_FUNC ldv_emg_free_netdev */
325 : void ldv_emg_free_netdev(struct net_device *arg0) {
326 : /* LDV {"comment": "Control function 'free_netdev'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_free_netdev"} */
327 8 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
328 : struct net_device *ldv_10_netdev_net_device;
329 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
330 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Freeing memory of a network device."} */
331 8 : ldv_10_netdev_net_device = arg0;
332 16 : ldv_free(ldv_10_netdev_net_device);
333 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
334 :
335 : /* Exit function at a terminal state */
336 8 : return;
337 : /* End of the process */
338 : return;
339 : /* LDV {"comment": "End of control function based on process 'free_netdev'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_free_netdev"} */
340 : }
341 :
342 : /* AUX_FUNC ldv_emg_mod_timer */
343 : int ldv_emg_mod_timer(struct timer_list *arg0, long unsigned int arg1) {
344 : /* LDV {"comment": "Control function 'mod_timer'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_mod_timer"} */
345 30 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
346 30 : struct timer_list *ldv_11_timer_list_timer_list;
347 30 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
348 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
349 :
350 120 : if (ldv_undef_int()) {
351 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get timer representing structure."} */
352 30 : ldv_11_timer_list_timer_list = arg0;
353 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
354 :
355 : /* LDV {"action": "INSTANCE_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register TIMER callbacks."} */
356 60 : ldv_dispatch_instance_register_11_3(ldv_11_timer_list_timer_list);
357 : /* LDV {"action": "INSTANCE_REGISTER", "type": "DISPATCH_END"} */
358 :
359 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Successfully modified a timer's timeout"} */
360 30 : return 0;
361 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
362 :
363 : /* Exit function at a terminal state */
364 : }
365 : else {
366 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to modify a timer's timeout"} */
367 90 : return ldv_undef_int_negative();
368 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
369 :
370 : /* Exit function at a terminal state */
371 : }
372 : /* End of the process */
373 : /* LDV {"comment": "End of control function based on process 'mod_timer'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_mod_timer"} */
374 : }
375 :
376 : /* AUX_FUNC ldv_emg_pci_unregister_driver */
377 : void ldv_emg_pci_unregister_driver(struct pci_driver *arg0) {
378 : /* LDV {"comment": "Control function 'pci_unregister_driver'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_pci_unregister_driver"} */
379 2 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
380 : struct pci_driver *ldv_15_pci_driver_pci_driver;
381 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
382 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'pci' callbacks to deregister."} */
383 2 : ldv_15_pci_driver_pci_driver = arg0;
384 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
385 :
386 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister PCI callbacks."} */
387 4 : ldv_dispatch_deregister_15_1(ldv_15_pci_driver_pci_driver);
388 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
389 :
390 : /* Exit function at a terminal state */
391 2 : return;
392 : /* End of the process */
393 : return;
394 : /* LDV {"comment": "End of control function based on process 'pci_unregister_driver'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_pci_unregister_driver"} */
395 : }
396 :
397 : /* AUX_FUNC ldv_emg_register_netdev */
398 : int ldv_emg_register_netdev(struct net_device *arg0) {
399 : /* LDV {"comment": "Control function 'register_netdev'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_register_netdev"} */
400 10 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
401 10 : struct net_device *ldv_12_netdev_net_device;
402 10 : int ldv_12_ret_default;
403 10 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
404 10 : /* Initialize automaton variables */
405 20 : ldv_12_ret_default = 1;
406 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
407 :
408 40 : if (ldv_undef_int()) {
409 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get network device structure."} */
410 10 : ldv_12_netdev_net_device = arg0;
411 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
412 :
413 : /* LDV {"action": "OPEN", "type": "CALL_BEGIN", "callback": true, "comment": "Switch network device to the up state. Invoke callback ndo_open from net_device_ops."} */
414 : /* LDV {"type": "CALLBACK", "call": "ldv_12_ret_default = ((& vortex_open))(ldv_12_netdev_net_device);", "comment": "open"} */
415 20 : ldv_12_ret_default = ldv_register_netdev_open_12_6(ldv_12_netdev_net_device->netdev_ops->ndo_open, ldv_12_netdev_net_device);
416 : /* LDV {"action": "OPEN", "type": "CALL_END"} */
417 :
418 40 : if (ldv_undef_int()) {
419 : /* LDV {"action": "OPEN_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Network device is in the up state."} */
420 20 : ldv_assume(ldv_12_ret_default == 0);
421 : /* LDV {"action": "OPEN_SUCCESS", "type": "CONDITION_END"} */
422 :
423 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register network device callbacks."} */
424 20 : ldv_dispatch_register_12_4(ldv_12_netdev_net_device);
425 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
426 :
427 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of the network device has successfully finished."} */
428 10 : return 0;
429 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
430 :
431 : /* Exit function at a terminal state */
432 : }
433 : else {
434 : /* LDV {"action": "OPEN_FAIL", "type": "CONDITION_BEGIN", "comment": "Registration of the network device has failed."} */
435 20 : ldv_assume(ldv_12_ret_default == 0);
436 10 : ldv_failed_register_netdev();
437 30 : return ldv_undef_int_negative();
438 : /* LDV {"action": "OPEN_FAIL", "type": "CONDITION_END"} */
439 :
440 : /* Exit function at a terminal state */
441 : }
442 : }
443 : else {
444 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Registration of the network device has failed."} */
445 10 : ldv_failed_register_netdev();
446 30 : return ldv_undef_int_negative();
447 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
448 :
449 : /* Exit function at a terminal state */
450 : }
451 : /* End of the process */
452 : /* LDV {"comment": "End of control function based on process 'register_netdev'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_register_netdev"} */
453 : }
454 :
455 : /* AUX_FUNC ldv_emg_request_irq */
456 : int ldv_emg_request_irq(unsigned int arg0, irqreturn_t (*arg1)(int, void *), long unsigned int arg2, char *arg3, void *arg4) {
457 : /* LDV {"comment": "Control function 'request_irq'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_request_irq"} */
458 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
459 20 : irqreturn_t (*ldv_13_callback_handler)(int, void *);
460 20 : void *ldv_13_data_data;
461 20 : int ldv_13_line_line;
462 20 : irqreturn_t (*ldv_13_thread_thread)(int, void *);
463 20 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
464 20 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
465 :
466 80 : if (ldv_undef_int()) {
467 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get line, callbacks and data arguments."} */
468 20 : ldv_13_line_line = arg0;
469 20 : ldv_13_callback_handler = arg1;
470 20 : ldv_13_thread_thread = 0;
471 20 : ldv_13_data_data = arg4;
472 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
473 :
474 : /* LDV {"action": "IRQ_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register interrupt callback (callbacks)."} */
475 40 : ldv_dispatch_irq_register_13_3(ldv_13_line_line, ldv_13_callback_handler, ldv_13_thread_thread, ldv_13_data_data);
476 : /* LDV {"action": "IRQ_REGISTER", "type": "DISPATCH_END"} */
477 :
478 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Successfully allocated an interrupt line for a managed device."} */
479 20 : return 0;
480 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
481 :
482 : /* Exit function at a terminal state */
483 : }
484 : else {
485 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to allocate an interrupt line for a managed device."} */
486 60 : return ldv_undef_int_negative();
487 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
488 :
489 : /* Exit function at a terminal state */
490 : }
491 : /* End of the process */
492 : /* LDV {"comment": "End of control function based on process 'request_irq'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_request_irq"} */
493 : }
494 :
495 : /* AUX_FUNC ldv_emg_unregister_netdev */
496 : void ldv_emg_unregister_netdev(struct net_device *arg0) {
497 : /* LDV {"comment": "Control function 'unregister_netdev'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_unregister_netdev"} */
498 4 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
499 : struct net_device *ldv_14_netdev_net_device;
500 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
501 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get network device structure."} */
502 4 : ldv_14_netdev_net_device = arg0;
503 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
504 :
505 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "Switch network device to the down state. Invoke callback ndo_stop from net_device_ops."} */
506 : /* LDV {"type": "CALLBACK", "call": "((& vortex_close))(ldv_14_netdev_net_device);", "comment": "stop"} */
507 8 : ldv_unregister_netdev_stop_14_2(ldv_14_netdev_net_device->netdev_ops->ndo_stop, ldv_14_netdev_net_device);
508 : /* LDV {"action": "STOP", "type": "CALL_END"} */
509 :
510 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregiste of the network device has finished."} */
511 8 : ldv_dispatch_deregister_14_1(ldv_14_netdev_net_device);
512 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
513 :
514 : /* Exit function at a terminal state */
515 4 : return;
516 : /* End of the process */
517 : return;
518 : /* LDV {"comment": "End of control function based on process 'unregister_netdev'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_unregister_netdev"} */
519 : }
520 :
521 : /* AUX_FUNC ldv_insmod_7 */
522 : void ldv_insmod_7(void *arg0) {
523 : /* LDV {"thread": 7, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'insmod(artificial)'", "function": "ldv_insmod_7"} */
524 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
525 1 : int ldv_7_ret_default;
526 1 : void (*ldv_7_vortex_cleanup_default)(void);
527 1 : int (*ldv_7_vortex_init_default)(void);
528 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
529 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module initialization."} */
530 2 : ldv_free(arg0);
531 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_END"} */
532 :
533 : /* LDV {"action": "VORTEX_INIT", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize the module after insmod with 'vortex_init' function. Invoke callback vortex_init from ARTIFICIAL."} */
534 : /* LDV {"type": "CALLBACK", "call": "ldv_7_ret_default = (vortex_init)();", "comment": "vortex_init"} */
535 2 : ldv_7_ret_default = ldv_insmod_vortex_init_7_9(ldv_7_vortex_init_default);
536 : /* Callback post-call */
537 2 : ldv_7_ret_default = ldv_post_init(ldv_7_ret_default);
538 : /* LDV {"action": "VORTEX_INIT", "type": "CALL_END"} */
539 :
540 4 : if (ldv_undef_int()) {
541 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize the module."} */
542 2 : ldv_assume(ldv_7_ret_default != 0);
543 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_END"} */
544 :
545 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
546 : /* Skip a non-replicative signal receiving */
547 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
548 :
549 : /* Exit function at a terminal state */
550 1 : return;
551 : }
552 : else {
553 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Module has been initialized."} */
554 2 : ldv_assume(ldv_7_ret_default == 0);
555 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_END"} */
556 :
557 4 : if (ldv_undef_int()) {
558 : /* LDV {"action": "DEFAULT_REGISTER_13", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_KPARAM_ARRAY' callbacks with unknown registration function."} */
559 2 : ldv_dispatch_default_register_13_7_5();
560 : /* LDV {"action": "DEFAULT_REGISTER_13", "type": "DISPATCH_END"} */
561 :
562 : /* LDV {"action": "DEFAULT_DEREGISTER_13", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_KPARAM_ARRAY' callbacks with unknown deregistration function."} */
563 2 : ldv_dispatch_default_deregister_13_7_4();
564 : /* LDV {"action": "DEFAULT_DEREGISTER_13", "type": "DISPATCH_END"} */
565 :
566 : }
567 : else {
568 : /* LDV {"action": "NONE", "type": "CONDITION_BEGIN", "comment": "Skip default callbacks registrations and deregistrations."} */
569 : /* LDV {"action": "NONE", "type": "CONDITION_END"} */
570 :
571 : }
572 : /* LDV {"action": "VORTEX_CLEANUP", "type": "CALL_BEGIN", "callback": true, "comment": "Exit the module before its unloading with 'vortex_cleanup' function. Invoke callback vortex_cleanup from ARTIFICIAL."} */
573 : /* LDV {"type": "CALLBACK", "call": "(vortex_cleanup)();", "comment": "vortex_cleanup"} */
574 4 : ldv_insmod_vortex_cleanup_7_2(ldv_7_vortex_cleanup_default);
575 : /* LDV {"action": "VORTEX_CLEANUP", "type": "CALL_END"} */
576 :
577 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
578 : /* Skip a non-replicative signal receiving */
579 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
580 :
581 : /* Exit function at a terminal state */
582 1 : return;
583 : }
584 : /* End of the process */
585 : return;
586 : /* LDV {"comment": "End of control function based on process 'insmod(artificial)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_insmod_7"} */
587 : }
588 :
589 : /* AUX_FUNC_CALLBACK ldv_insmod_vortex_cleanup_7_2 */
590 : void ldv_insmod_vortex_cleanup_7_2(void (*arg0)(void)) {
591 8 : (vortex_cleanup)();
592 2 : }
593 :
594 : /* AUX_FUNC_CALLBACK ldv_insmod_vortex_init_7_9 */
595 : int ldv_insmod_vortex_init_7_9(int (*arg0)(void)) {
596 3 : return (vortex_init)();
597 1 : }
598 :
599 : /* AUX_FUNC ldv_interrupt_scenario_1 */
600 : void ldv_interrupt_scenario_1(void *arg0) {
601 : /* LDV {"thread": 1, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'interrupt_scenario(interrupt)'", "function": "ldv_interrupt_scenario_1"} */
602 20 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
603 20 : irqreturn_t (*ldv_1_callback_handler)(int, void *);
604 20 : void *ldv_1_data_data;
605 20 : int ldv_1_line_line;
606 20 : enum irqreturn ldv_1_ret_val_default;
607 20 : irqreturn_t (*ldv_1_thread_thread)(int, void *);
608 20 : /* Received labels */
609 20 : struct ldv_struct_interrupt_scenario_1 *data = (struct ldv_struct_interrupt_scenario_1*) arg0;
610 :
611 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
612 : /* LDV {"action": "IRQ_REGISTER", "type": "RECEIVE_BEGIN", "comment": "An interrupt is registered."} */
613 : /* Assign recieved labels */
614 40 : if (data) {
615 20 : ldv_1_line_line = data->arg0;
616 20 : ldv_1_callback_handler = data->arg1;
617 20 : ldv_1_thread_thread = data->arg2;
618 20 : ldv_1_data_data = data->arg3;
619 40 : ldv_free(data);
620 : }
621 : /* LDV {"action": "IRQ_REGISTER", "type": "RECEIVE_END"} */
622 :
623 : /* LDV {"action": "HANDLER", "type": "CALL_BEGIN", "callback": true, "comment": "An interrupt happens, execute the bottom half function to handle it. Invoke callback handler from INTERRUPT."} */
624 : /* Callback pre-call */
625 40 : ldv_switch_to_interrupt_context();
626 80 : if (ldv_1_callback_handler) {
627 : /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_val_default = (ldv_1_callback_handler)(ldv_1_line_line, ldv_1_data_data);", "comment": "handler"} */
628 80 : ldv_1_ret_val_default = ldv_interrupt_scenario_handler_1_5(ldv_1_callback_handler, ldv_1_line_line, ldv_1_data_data);
629 : }
630 : /* Callback post-call */
631 60 : ldv_switch_to_process_context();
632 : /* LDV {"action": "HANDLER", "type": "CALL_END"} */
633 :
634 160 : if (ldv_undef_int()) {
635 : /* LDV {"action": "NEED_THREAD", "type": "CONDITION_BEGIN", "comment": "Wake a thread to continue an interrupt handling."} */
636 40 : ldv_assume(ldv_1_ret_val_default == IRQ_WAKE_THREAD);
637 : /* LDV {"action": "NEED_THREAD", "type": "CONDITION_END"} */
638 :
639 : /* LDV {"action": "THREAD", "type": "CALL_BEGIN", "callback": true, "comment": "Proceed with the interrupt handling, execute the top half function. Invoke callback thread from INTERRUPT."} */
640 40 : if (ldv_1_thread_thread) {
641 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_thread_thread)(ldv_1_line_line, ldv_1_data_data);", "comment": "thread"} */
642 40 : ldv_interrupt_scenario_thread_1_3(ldv_1_thread_thread, ldv_1_line_line, ldv_1_data_data);
643 : }
644 : /* LDV {"action": "THREAD", "type": "CALL_END"} */
645 :
646 : }
647 : else {
648 : /* LDV {"action": "HANDLED", "type": "CONDITION_BEGIN", "comment": "An interrupt has been handled."} */
649 40 : ldv_assume(ldv_1_ret_val_default != IRQ_WAKE_THREAD);
650 : /* LDV {"action": "HANDLED", "type": "CONDITION_END"} */
651 :
652 : }
653 : /* LDV {"action": "IRQ_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "An interrupt is deregistered."} */
654 : /* Skip a non-replicative signal receiving */
655 : /* LDV {"action": "IRQ_DEREGISTER", "type": "RECEIVE_END"} */
656 :
657 : /* Exit function at a terminal state */
658 60 : return;
659 : /* End of the process */
660 : return;
661 : /* LDV {"comment": "End of control function based on process 'interrupt_scenario(interrupt)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_interrupt_scenario_1"} */
662 : }
663 :
664 : /* AUX_FUNC_CALLBACK ldv_interrupt_scenario_handler_1_5 */
665 : enum irqreturn ldv_interrupt_scenario_handler_1_5(irqreturn_t (*arg0)(int, void *), int arg1, void *arg2) {
666 160 : return (*arg0)(arg1, arg2);
667 : }
668 40 :
669 : /* AUX_FUNC_CALLBACK ldv_interrupt_scenario_thread_1_3 */
670 : void ldv_interrupt_scenario_thread_1_3(irqreturn_t (*arg0)(int, void *), int arg1, void *arg2) {
671 60 : (*arg0)(arg1, arg2);
672 20 : }
673 :
674 : /* AUX_FUNC ldv_main_17 */
675 : void ldv_main_17(void *arg0) {
676 : /* LDV {"thread": 17, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'main(main)'", "function": "ldv_main_17"} */
677 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
678 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
679 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Initialize rule models."} */
680 1 : ldv_initialize();
681 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
682 :
683 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Start environment model scenarios."} */
684 2 : ldv_dispatch_insmod_register_17_3();
685 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_END"} */
686 :
687 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Stop environment model scenarios."} */
688 2 : ldv_dispatch_insmod_deregister_17_2();
689 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_END"} */
690 :
691 : /* LDV {"action": "FINAL", "type": "CONDITION_BEGIN", "comment": "Check rule model state at the exit."} */
692 1 : ldv_check_final_state();
693 1 : ldv_stop();
694 : /* LDV {"action": "FINAL", "type": "CONDITION_END"} */
695 :
696 : /* Exit function at a terminal state */
697 0 : return;
698 : /* End of the process */
699 : return;
700 : /* LDV {"comment": "End of control function based on process 'main(main)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_main_17"} */
701 : }
702 :
703 : /* AUX_FUNC ldv_pci_scenario_3 */
704 : void ldv_pci_scenario_3(void *arg0) {
705 : /* LDV {"thread": 3, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'pci_scenario(pci)'", "function": "ldv_pci_scenario_3"} */
706 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
707 1 : struct pci_driver *ldv_3_container_pci_driver;
708 1 : struct pci_dev *ldv_3_resource_dev;
709 1 : struct pm_message ldv_3_resource_pm_message;
710 1 : struct pci_device_id *ldv_3_resource_struct_pci_device_id_ptr;
711 1 : int ldv_3_ret_default;
712 1 : /* Received labels */
713 2 : struct ldv_struct_pci_scenario_3 *data = (struct ldv_struct_pci_scenario_3*) arg0;
714 1 :
715 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
716 1 : /* Initialize automaton variables */
717 1 : ldv_3_ret_default = 1;
718 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin PCI callbacks invocating."} */
719 : /* Assign recieved labels */
720 2 : if (data) {
721 1 : ldv_3_container_pci_driver = data->arg0;
722 2 : ldv_free(data);
723 : }
724 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
725 :
726 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for pci_dev structure."} */
727 5 : ldv_3_resource_dev = ldv_xmalloc(sizeof(struct pci_dev));
728 3 : ldv_3_resource_struct_pci_device_id_ptr = ldv_xmalloc_unknown_size(0);
729 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
730 :
731 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
732 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
733 :
734 : /* Jump to a subprocess 'main' initial state */
735 1 : goto ldv_main_3;
736 : /* End of the process */
737 : return;
738 1 :
739 : /* Sbprocess main */
740 : ldv_main_3:
741 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
742 :
743 4 : if (ldv_undef_int()) {
744 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Probe new PCI driver. Invoke callback probe from pci_driver."} */
745 : /* Callback pre-call */
746 1 : ldv_pre_probe();
747 : /* LDV {"type": "CALLBACK", "call": "ldv_3_ret_default = ((& vortex_init_one))(ldv_3_resource_dev, ldv_3_resource_struct_pci_device_id_ptr);", "comment": "probe"} */
748 3 : ldv_3_ret_default = ldv_pci_scenario_probe_3_17(ldv_3_container_pci_driver->probe, ldv_3_resource_dev, ldv_3_resource_struct_pci_device_id_ptr);
749 : /* Callback post-call */
750 2 : ldv_3_ret_default = ldv_post_probe(ldv_3_ret_default);
751 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
752 :
753 4 : if (ldv_undef_int()) {
754 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Probing of PCI driver has been successfull."} */
755 2 : ldv_assume(ldv_3_ret_default == 0);
756 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
757 :
758 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
759 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
760 :
761 : /* Jump to a subprocess 'call' initial state */
762 1 : goto ldv_call_3;
763 : }
764 : else {
765 : /* LDV {"action": "PROBE_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to probe PCI driver."} */
766 2 : ldv_assume(ldv_3_ret_default != 0);
767 : /* LDV {"action": "PROBE_FAILED", "type": "CONDITION_END"} */
768 :
769 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
770 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
771 :
772 : /* Jump to a subprocess 'main' initial state */
773 1 : goto ldv_main_3;
774 : }
775 : }
776 : else {
777 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of pci_dev structure."} */
778 2 : ldv_free(ldv_3_resource_dev);
779 2 : ldv_free(ldv_3_resource_struct_pci_device_id_ptr);
780 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
781 :
782 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Stop PCI callbacks invocating."} */
783 : /* Skip a non-replicative signal receiving */
784 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
785 :
786 : /* Exit function at a terminal state */
787 1 : return;
788 : }
789 : /* End of the subprocess 'main' */
790 : return;
791 1 :
792 : /* Sbprocess call */
793 : ldv_call_3:
794 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
795 :
796 2 : switch (ldv_undef_int()) {
797 3 : case 1: {
798 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "comment": "Call callback 'callback' of a process 'pci_scenario' of an interface category 'pci'"} */
799 : /* Skip callback without implementations */
800 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
801 :
802 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
803 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
804 :
805 : /* Jump to a subprocess 'call' initial state */
806 1 : goto ldv_call_3;
807 1 : break;
808 : }
809 3 : case 2: {
810 : /* LDV {"action": "SUSPEND", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback suspend from PCI."} */
811 3 : if (ldv_3_container_pci_driver->suspend) {
812 : /* LDV {"type": "CALLBACK", "call": "ldv_3_ret_default = (ldv_3_container_pci_driver->suspend)(ldv_3_resource_dev, ldv_3_resource_pm_message);", "comment": "suspend"} */
813 2 : ldv_3_ret_default = ldv_pci_scenario_suspend_3_8(ldv_3_container_pci_driver->suspend, ldv_3_resource_dev, ldv_3_resource_pm_message);
814 : }
815 : /* Callback post-call */
816 4 : ldv_3_ret_default = ldv_filter_err_code(ldv_3_ret_default);
817 : /* LDV {"action": "SUSPEND", "type": "CALL_END"} */
818 :
819 : /* LDV {"action": "SUSPEND_LATE", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback suspend_late from PCI."} */
820 3 : if (ldv_3_container_pci_driver->suspend_late) {
821 : /* LDV {"type": "CALLBACK", "call": "ldv_3_ret_default = (ldv_3_container_pci_driver->suspend_late)(ldv_3_resource_dev, ldv_3_resource_pm_message);", "comment": "suspend_late"} */
822 2 : ldv_3_ret_default = ldv_pci_scenario_suspend_late_3_7(ldv_3_container_pci_driver->suspend_late, ldv_3_resource_dev, ldv_3_resource_pm_message);
823 : }
824 : /* Callback post-call */
825 4 : ldv_3_ret_default = ldv_filter_err_code(ldv_3_ret_default);
826 : /* LDV {"action": "SUSPEND_LATE", "type": "CALL_END"} */
827 :
828 : /* LDV {"action": "RESUME_EARLY", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback resume_early from PCI."} */
829 3 : if (ldv_3_container_pci_driver->resume_early) {
830 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_container_pci_driver->resume_early)(ldv_3_resource_dev);", "comment": "resume_early"} */
831 2 : ldv_pci_scenario_resume_early_3_6(ldv_3_container_pci_driver->resume_early, ldv_3_resource_dev);
832 : }
833 : /* LDV {"action": "RESUME_EARLY", "type": "CALL_END"} */
834 :
835 : /* LDV {"action": "RESUME", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback resume from PCI."} */
836 6 : if (ldv_3_container_pci_driver->resume) {
837 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_container_pci_driver->resume)(ldv_3_resource_dev);", "comment": "resume"} */
838 4 : ldv_pci_scenario_resume_3_5(ldv_3_container_pci_driver->resume, ldv_3_resource_dev);
839 : }
840 : /* LDV {"action": "RESUME", "type": "CALL_END"} */
841 :
842 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
843 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
844 :
845 : /* Jump to a subprocess 'call' initial state */
846 3 : goto ldv_call_3;
847 1 : break;
848 : }
849 3 : case 3: {
850 : /* LDV {"action": "SHUTDOWN", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback shutdown from PCI."} */
851 3 : if (ldv_3_container_pci_driver->shutdown) {
852 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_container_pci_driver->shutdown)(ldv_3_resource_dev);", "comment": "shutdown"} */
853 2 : ldv_pci_scenario_shutdown_3_3(ldv_3_container_pci_driver->shutdown, ldv_3_resource_dev);
854 : }
855 : /* LDV {"action": "SHUTDOWN", "type": "CALL_END"} */
856 :
857 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback release from PCI."} */
858 6 : if (ldv_3_container_pci_driver->remove) {
859 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_container_pci_driver->remove)(ldv_3_resource_dev);", "comment": "release"} */
860 4 : ldv_pci_scenario_release_3_2(ldv_3_container_pci_driver->remove, ldv_3_resource_dev);
861 : }
862 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
863 :
864 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
865 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
866 :
867 : /* Jump to a subprocess 'main' initial state */
868 3 : goto ldv_main_3;
869 1 : break;
870 : }
871 2 : default: ldv_stop();
872 1 : }
873 0 : /* End of the subprocess 'call' */
874 0 : return;
875 : /* LDV {"comment": "End of control function based on process 'pci_scenario(pci)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_pci_scenario_3"} */
876 : }
877 :
878 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_probe_3_17 */
879 : int ldv_pci_scenario_probe_3_17(int (*arg0)(struct pci_dev *, struct pci_device_id *), struct pci_dev *arg1, struct pci_device_id *arg2) {
880 4 : return ((& vortex_init_one))(arg1, arg2);
881 : }
882 1 :
883 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_release_3_2 */
884 : void ldv_pci_scenario_release_3_2(void (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
885 2 : (*arg0)(arg1);
886 2 : }
887 :
888 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_resume_3_5 */
889 : void ldv_pci_scenario_resume_3_5(int (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
890 2 : (*arg0)(arg1);
891 2 : }
892 :
893 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_resume_early_3_6 */
894 : void ldv_pci_scenario_resume_early_3_6(int (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
895 1 : (*arg0)(arg1);
896 1 : }
897 :
898 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_shutdown_3_3 */
899 : void ldv_pci_scenario_shutdown_3_3(void (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
900 1 : (*arg0)(arg1);
901 1 : }
902 :
903 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_suspend_3_8 */
904 : int ldv_pci_scenario_suspend_3_8(int (*arg0)(struct pci_dev *, struct pm_message), struct pci_dev *arg1, struct pm_message arg2) {
905 2 : return (*arg0)(arg1, arg2);
906 : }
907 1 :
908 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_suspend_late_3_7 */
909 : int ldv_pci_scenario_suspend_late_3_7(int (*arg0)(struct pci_dev *, struct pm_message), struct pci_dev *arg1, struct pm_message arg2) {
910 2 : return (*arg0)(arg1, arg2);
911 : }
912 1 :
913 : /* AUX_FUNC ldv_random_containerless_scenario_2 */
914 : void ldv_random_containerless_scenario_2(void *arg0) {
915 : /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(net)'", "function": "ldv_random_containerless_scenario_2"} */
916 10 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
917 10 : void (*ldv_2_callback_get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
918 : void (*ldv_2_callback_get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
919 10 : u32 (*ldv_2_callback_get_link)(struct net_device *);
920 10 : u32 (*ldv_2_callback_get_msglevel)(struct net_device *);
921 10 : int (*ldv_2_callback_get_settings)(struct net_device *, struct ethtool_cmd *);
922 10 : int (*ldv_2_callback_get_sset_count)(struct net_device *, int);
923 10 : void (*ldv_2_callback_get_strings)(struct net_device *, u32 , u8 *);
924 10 : int (*ldv_2_callback_ndo_change_mtu)(struct net_device *, int);
925 10 : int (*ldv_2_callback_ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
926 10 : struct net_device_stats *(*ldv_2_callback_ndo_get_stats)(struct net_device *);
927 10 : int (*ldv_2_callback_ndo_set_mac_address)(struct net_device *, void *);
928 10 : void (*ldv_2_callback_ndo_set_multicast_list)(struct net_device *);
929 10 : netdev_tx_t (*ldv_2_callback_ndo_start_xmit)(struct sk_buff *, struct net_device *);
930 10 : void (*ldv_2_callback_ndo_tx_timeout)(struct net_device *);
931 10 : int (*ldv_2_callback_ndo_validate_addr)(struct net_device *);
932 10 : int (*ldv_2_callback_nway_reset)(struct net_device *);
933 10 : void (*ldv_2_callback_set_msglevel)(struct net_device *, u32 );
934 10 : int (*ldv_2_callback_set_settings)(struct net_device *, struct ethtool_cmd *);
935 10 : struct net_device *ldv_2_container_net_device;
936 10 : struct ethtool_cmd *ldv_2_container_struct_ethtool_cmd_ptr;
937 10 : struct ethtool_drvinfo *ldv_2_container_struct_ethtool_drvinfo_ptr;
938 10 : struct ethtool_stats *ldv_2_container_struct_ethtool_stats_ptr;
939 10 : struct ifreq *ldv_2_container_struct_ifreq_ptr;
940 10 : struct sk_buff *ldv_2_container_struct_sk_buff_ptr;
941 10 : int ldv_2_ldv_param_12_1_default;
942 10 : unsigned int ldv_2_ldv_param_15_1_default;
943 10 : unsigned char *ldv_2_ldv_param_15_2_default;
944 10 : int ldv_2_ldv_param_18_1_default;
945 10 : int ldv_2_ldv_param_21_2_default;
946 10 : unsigned int ldv_2_ldv_param_31_1_default;
947 10 : long long unsigned int *ldv_2_ldv_param_6_2_default;
948 10 : /* Received labels */
949 20 : struct ldv_struct_random_containerless_scenario_2 *data = (struct ldv_struct_random_containerless_scenario_2*) arg0;
950 10 :
951 10 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
952 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin NET callbacks invocations scenario."} */
953 : /* Assign recieved labels */
954 20 : if (data) {
955 10 : ldv_2_container_net_device = data->arg0;
956 20 : ldv_free(data);
957 : }
958 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
959 :
960 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
961 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
962 :
963 : /* Jump to a subprocess 'call' initial state */
964 20 : goto ldv_call_2;
965 : /* End of the process */
966 : return;
967 10 :
968 : /* Sbprocess call */
969 : ldv_call_2:
970 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
971 :
972 20 : switch (ldv_undef_int()) {
973 30 : case 1: {
974 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback set_settings from ethtool_ops."} */
975 : /* LDV {"type": "CALLBACK", "call": "((& vortex_set_settings))(ldv_2_container_net_device, ldv_2_container_struct_ethtool_cmd_ptr);", "comment": "callback"} */
976 20 : ldv_random_containerless_scenario_callback_2_34(ldv_2_callback_set_settings, ldv_2_container_net_device, ldv_2_container_struct_ethtool_cmd_ptr);
977 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
978 :
979 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
980 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
981 :
982 : /* Jump to a subprocess 'call' initial state */
983 10 : goto ldv_call_2;
984 10 : break;
985 : }
986 30 : case 2: {
987 : /* LDV {"action": "PRE_CALL_31", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
988 : /* LDV {"action": "PRE_CALL_31", "type": "CONDITION_END"} */
989 :
990 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback set_msglevel from ethtool_ops."} */
991 : /* LDV {"type": "CALLBACK", "call": "((& vortex_set_msglevel))(ldv_2_container_net_device, ldv_2_ldv_param_31_1_default);", "comment": "callback"} */
992 20 : ldv_random_containerless_scenario_callback_2_31(ldv_2_callback_set_msglevel, ldv_2_container_net_device, ldv_2_ldv_param_31_1_default);
993 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
994 :
995 : /* LDV {"action": "POST_CALL_31", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
996 : /* LDV {"action": "POST_CALL_31", "type": "CONDITION_END"} */
997 :
998 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
999 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1000 :
1001 : /* Jump to a subprocess 'call' initial state */
1002 10 : goto ldv_call_2;
1003 : /* Jump to a subprocess 'call' initial state */
1004 : goto ldv_call_2;
1005 10 : break;
1006 : }
1007 30 : case 3: {
1008 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback nway_reset from ethtool_ops."} */
1009 : /* LDV {"type": "CALLBACK", "call": "((& vortex_nway_reset))(ldv_2_container_net_device);", "comment": "callback"} */
1010 20 : ldv_random_containerless_scenario_callback_2_30(ldv_2_callback_nway_reset, ldv_2_container_net_device);
1011 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1012 :
1013 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1014 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1015 :
1016 : /* Jump to a subprocess 'call' initial state */
1017 10 : goto ldv_call_2;
1018 : /* Jump to a subprocess 'call' initial state */
1019 : goto ldv_call_2;
1020 : /* Jump to a subprocess 'call' initial state */
1021 : goto ldv_call_2;
1022 10 : break;
1023 : }
1024 30 : case 4: {
1025 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_validate_addr from net_device_ops."} */
1026 : /* LDV {"type": "CALLBACK", "call": "((& eth_validate_addr))(ldv_2_container_net_device);", "comment": "callback"} */
1027 20 : ldv_random_containerless_scenario_callback_2_29(ldv_2_callback_ndo_validate_addr, ldv_2_container_net_device);
1028 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1029 :
1030 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1031 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1032 :
1033 : /* Jump to a subprocess 'call' initial state */
1034 10 : goto ldv_call_2;
1035 : /* Jump to a subprocess 'call' initial state */
1036 : goto ldv_call_2;
1037 : /* Jump to a subprocess 'call' initial state */
1038 : goto ldv_call_2;
1039 : /* Jump to a subprocess 'call' initial state */
1040 : goto ldv_call_2;
1041 10 : break;
1042 : }
1043 30 : case 5: {
1044 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_tx_timeout from net_device_ops."} */
1045 : /* LDV {"type": "CALLBACK", "call": "((& vortex_tx_timeout))(ldv_2_container_net_device);", "comment": "callback"} */
1046 20 : ldv_random_containerless_scenario_callback_2_28(ldv_2_callback_ndo_tx_timeout, ldv_2_container_net_device);
1047 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1048 :
1049 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1050 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1051 :
1052 : /* Jump to a subprocess 'call' initial state */
1053 10 : goto ldv_call_2;
1054 : /* Jump to a subprocess 'call' initial state */
1055 : goto ldv_call_2;
1056 : /* Jump to a subprocess 'call' initial state */
1057 : goto ldv_call_2;
1058 : /* Jump to a subprocess 'call' initial state */
1059 : goto ldv_call_2;
1060 : /* Jump to a subprocess 'call' initial state */
1061 : goto ldv_call_2;
1062 10 : break;
1063 : }
1064 30 : case 6: {
1065 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_start_xmit from net_device_ops."} */
1066 : /* LDV {"type": "CALLBACK", "call": "((& vortex_start_xmit))(ldv_2_container_struct_sk_buff_ptr, ldv_2_container_net_device);", "comment": "callback"} */
1067 20 : ldv_random_containerless_scenario_callback_2_27(ldv_2_callback_ndo_start_xmit, ldv_2_container_struct_sk_buff_ptr, ldv_2_container_net_device);
1068 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1069 :
1070 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1071 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1072 :
1073 : /* Jump to a subprocess 'call' initial state */
1074 10 : goto ldv_call_2;
1075 : /* Jump to a subprocess 'call' initial state */
1076 : goto ldv_call_2;
1077 : /* Jump to a subprocess 'call' initial state */
1078 : goto ldv_call_2;
1079 : /* Jump to a subprocess 'call' initial state */
1080 : goto ldv_call_2;
1081 : /* Jump to a subprocess 'call' initial state */
1082 : goto ldv_call_2;
1083 : /* Jump to a subprocess 'call' initial state */
1084 : goto ldv_call_2;
1085 10 : break;
1086 : }
1087 30 : case 7: {
1088 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_set_multicast_list from net_device_ops."} */
1089 : /* LDV {"type": "CALLBACK", "call": "((& set_rx_mode))(ldv_2_container_net_device);", "comment": "callback"} */
1090 20 : ldv_random_containerless_scenario_callback_2_26(ldv_2_callback_ndo_set_multicast_list, ldv_2_container_net_device);
1091 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1092 :
1093 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1094 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1095 :
1096 : /* Jump to a subprocess 'call' initial state */
1097 10 : goto ldv_call_2;
1098 : /* Jump to a subprocess 'call' initial state */
1099 : goto ldv_call_2;
1100 : /* Jump to a subprocess 'call' initial state */
1101 : goto ldv_call_2;
1102 : /* Jump to a subprocess 'call' initial state */
1103 : goto ldv_call_2;
1104 : /* Jump to a subprocess 'call' initial state */
1105 : goto ldv_call_2;
1106 : /* Jump to a subprocess 'call' initial state */
1107 : goto ldv_call_2;
1108 : /* Jump to a subprocess 'call' initial state */
1109 : goto ldv_call_2;
1110 10 : break;
1111 : }
1112 30 : case 8: {
1113 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_set_mac_address from net_device_ops."} */
1114 : /* LDV {"type": "CALLBACK", "call": "((& eth_mac_addr))(ldv_2_container_net_device, ldv_2_container_struct_ethtool_cmd_ptr);", "comment": "callback"} */
1115 20 : ldv_random_containerless_scenario_callback_2_25(ldv_2_callback_ndo_set_mac_address, ldv_2_container_net_device, ldv_2_container_struct_ethtool_cmd_ptr);
1116 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1117 :
1118 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1119 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1120 :
1121 : /* Jump to a subprocess 'call' initial state */
1122 10 : goto ldv_call_2;
1123 : /* Jump to a subprocess 'call' initial state */
1124 : goto ldv_call_2;
1125 : /* Jump to a subprocess 'call' initial state */
1126 : goto ldv_call_2;
1127 : /* Jump to a subprocess 'call' initial state */
1128 : goto ldv_call_2;
1129 : /* Jump to a subprocess 'call' initial state */
1130 : goto ldv_call_2;
1131 : /* Jump to a subprocess 'call' initial state */
1132 : goto ldv_call_2;
1133 : /* Jump to a subprocess 'call' initial state */
1134 : goto ldv_call_2;
1135 : /* Jump to a subprocess 'call' initial state */
1136 : goto ldv_call_2;
1137 10 : break;
1138 : }
1139 30 : case 9: {
1140 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_get_stats from net_device_ops."} */
1141 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_stats))(ldv_2_container_net_device);", "comment": "callback"} */
1142 20 : ldv_random_containerless_scenario_callback_2_24(ldv_2_callback_ndo_get_stats, ldv_2_container_net_device);
1143 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1144 :
1145 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1146 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1147 :
1148 : /* Jump to a subprocess 'call' initial state */
1149 10 : goto ldv_call_2;
1150 : /* Jump to a subprocess 'call' initial state */
1151 : goto ldv_call_2;
1152 : /* Jump to a subprocess 'call' initial state */
1153 : goto ldv_call_2;
1154 : /* Jump to a subprocess 'call' initial state */
1155 : goto ldv_call_2;
1156 : /* Jump to a subprocess 'call' initial state */
1157 : goto ldv_call_2;
1158 : /* Jump to a subprocess 'call' initial state */
1159 : goto ldv_call_2;
1160 : /* Jump to a subprocess 'call' initial state */
1161 : goto ldv_call_2;
1162 : /* Jump to a subprocess 'call' initial state */
1163 : goto ldv_call_2;
1164 : /* Jump to a subprocess 'call' initial state */
1165 : goto ldv_call_2;
1166 10 : break;
1167 : }
1168 30 : case 10: {
1169 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1170 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
1171 :
1172 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_do_ioctl from net_device_ops."} */
1173 : /* LDV {"type": "CALLBACK", "call": "((& vortex_ioctl))(ldv_2_container_net_device, ldv_2_container_struct_ifreq_ptr, ldv_2_ldv_param_21_2_default);", "comment": "callback"} */
1174 20 : ldv_random_containerless_scenario_callback_2_21(ldv_2_callback_ndo_do_ioctl, ldv_2_container_net_device, ldv_2_container_struct_ifreq_ptr, ldv_2_ldv_param_21_2_default);
1175 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1176 :
1177 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1178 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
1179 :
1180 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1181 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1182 :
1183 : /* Jump to a subprocess 'call' initial state */
1184 10 : goto ldv_call_2;
1185 : /* Jump to a subprocess 'call' initial state */
1186 : goto ldv_call_2;
1187 : /* Jump to a subprocess 'call' initial state */
1188 : goto ldv_call_2;
1189 : /* Jump to a subprocess 'call' initial state */
1190 : goto ldv_call_2;
1191 : /* Jump to a subprocess 'call' initial state */
1192 : goto ldv_call_2;
1193 : /* Jump to a subprocess 'call' initial state */
1194 : goto ldv_call_2;
1195 : /* Jump to a subprocess 'call' initial state */
1196 : goto ldv_call_2;
1197 : /* Jump to a subprocess 'call' initial state */
1198 : goto ldv_call_2;
1199 : /* Jump to a subprocess 'call' initial state */
1200 : goto ldv_call_2;
1201 : /* Jump to a subprocess 'call' initial state */
1202 : goto ldv_call_2;
1203 10 : break;
1204 : }
1205 30 : case 11: {
1206 : /* LDV {"action": "PRE_CALL_18", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1207 : /* LDV {"action": "PRE_CALL_18", "type": "CONDITION_END"} */
1208 :
1209 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback ndo_change_mtu from net_device_ops."} */
1210 : /* LDV {"type": "CALLBACK", "call": "((& eth_change_mtu))(ldv_2_container_net_device, ldv_2_ldv_param_18_1_default);", "comment": "callback"} */
1211 20 : ldv_random_containerless_scenario_callback_2_18(ldv_2_callback_ndo_change_mtu, ldv_2_container_net_device, ldv_2_ldv_param_18_1_default);
1212 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1213 :
1214 : /* LDV {"action": "POST_CALL_18", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1215 : /* LDV {"action": "POST_CALL_18", "type": "CONDITION_END"} */
1216 :
1217 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1218 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1219 :
1220 : /* Jump to a subprocess 'call' initial state */
1221 10 : goto ldv_call_2;
1222 : /* Jump to a subprocess 'call' initial state */
1223 : goto ldv_call_2;
1224 : /* Jump to a subprocess 'call' initial state */
1225 : goto ldv_call_2;
1226 : /* Jump to a subprocess 'call' initial state */
1227 : goto ldv_call_2;
1228 : /* Jump to a subprocess 'call' initial state */
1229 : goto ldv_call_2;
1230 : /* Jump to a subprocess 'call' initial state */
1231 : goto ldv_call_2;
1232 : /* Jump to a subprocess 'call' initial state */
1233 : goto ldv_call_2;
1234 : /* Jump to a subprocess 'call' initial state */
1235 : goto ldv_call_2;
1236 : /* Jump to a subprocess 'call' initial state */
1237 : goto ldv_call_2;
1238 : /* Jump to a subprocess 'call' initial state */
1239 : goto ldv_call_2;
1240 : /* Jump to a subprocess 'call' initial state */
1241 : goto ldv_call_2;
1242 10 : break;
1243 : }
1244 30 : case 12: {
1245 : /* LDV {"action": "PRE_CALL_15", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1246 30 : ldv_2_ldv_param_15_2_default = ldv_xmalloc_unknown_size(0);
1247 : /* LDV {"action": "PRE_CALL_15", "type": "CONDITION_END"} */
1248 :
1249 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_strings from ethtool_ops."} */
1250 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_strings))(ldv_2_container_net_device, ldv_2_ldv_param_15_1_default, ldv_2_ldv_param_15_2_default);", "comment": "callback"} */
1251 20 : ldv_random_containerless_scenario_callback_2_15(ldv_2_callback_get_strings, ldv_2_container_net_device, ldv_2_ldv_param_15_1_default, ldv_2_ldv_param_15_2_default);
1252 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1253 :
1254 : /* LDV {"action": "POST_CALL_15", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1255 20 : ldv_free(ldv_2_ldv_param_15_2_default);
1256 : /* LDV {"action": "POST_CALL_15", "type": "CONDITION_END"} */
1257 :
1258 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1259 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1260 :
1261 : /* Jump to a subprocess 'call' initial state */
1262 10 : goto ldv_call_2;
1263 : /* Jump to a subprocess 'call' initial state */
1264 : goto ldv_call_2;
1265 : /* Jump to a subprocess 'call' initial state */
1266 : goto ldv_call_2;
1267 : /* Jump to a subprocess 'call' initial state */
1268 : goto ldv_call_2;
1269 : /* Jump to a subprocess 'call' initial state */
1270 : goto ldv_call_2;
1271 : /* Jump to a subprocess 'call' initial state */
1272 : goto ldv_call_2;
1273 : /* Jump to a subprocess 'call' initial state */
1274 : goto ldv_call_2;
1275 : /* Jump to a subprocess 'call' initial state */
1276 : goto ldv_call_2;
1277 : /* Jump to a subprocess 'call' initial state */
1278 : goto ldv_call_2;
1279 : /* Jump to a subprocess 'call' initial state */
1280 : goto ldv_call_2;
1281 : /* Jump to a subprocess 'call' initial state */
1282 : goto ldv_call_2;
1283 : /* Jump to a subprocess 'call' initial state */
1284 : goto ldv_call_2;
1285 10 : break;
1286 : }
1287 30 : case 13: {
1288 : /* LDV {"action": "PRE_CALL_12", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1289 : /* LDV {"action": "PRE_CALL_12", "type": "CONDITION_END"} */
1290 :
1291 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_sset_count from ethtool_ops."} */
1292 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_sset_count))(ldv_2_container_net_device, ldv_2_ldv_param_12_1_default);", "comment": "callback"} */
1293 20 : ldv_random_containerless_scenario_callback_2_12(ldv_2_callback_get_sset_count, ldv_2_container_net_device, ldv_2_ldv_param_12_1_default);
1294 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1295 :
1296 : /* LDV {"action": "POST_CALL_12", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1297 : /* LDV {"action": "POST_CALL_12", "type": "CONDITION_END"} */
1298 :
1299 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1300 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1301 :
1302 : /* Jump to a subprocess 'call' initial state */
1303 10 : goto ldv_call_2;
1304 : /* Jump to a subprocess 'call' initial state */
1305 : goto ldv_call_2;
1306 : /* Jump to a subprocess 'call' initial state */
1307 : goto ldv_call_2;
1308 : /* Jump to a subprocess 'call' initial state */
1309 : goto ldv_call_2;
1310 : /* Jump to a subprocess 'call' initial state */
1311 : goto ldv_call_2;
1312 : /* Jump to a subprocess 'call' initial state */
1313 : goto ldv_call_2;
1314 : /* Jump to a subprocess 'call' initial state */
1315 : goto ldv_call_2;
1316 : /* Jump to a subprocess 'call' initial state */
1317 : goto ldv_call_2;
1318 : /* Jump to a subprocess 'call' initial state */
1319 : goto ldv_call_2;
1320 : /* Jump to a subprocess 'call' initial state */
1321 : goto ldv_call_2;
1322 : /* Jump to a subprocess 'call' initial state */
1323 : goto ldv_call_2;
1324 : /* Jump to a subprocess 'call' initial state */
1325 : goto ldv_call_2;
1326 : /* Jump to a subprocess 'call' initial state */
1327 : goto ldv_call_2;
1328 10 : break;
1329 : }
1330 30 : case 14: {
1331 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_settings from ethtool_ops."} */
1332 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_settings))(ldv_2_container_net_device, ldv_2_container_struct_ethtool_cmd_ptr);", "comment": "callback"} */
1333 20 : ldv_random_containerless_scenario_callback_2_11(ldv_2_callback_get_settings, ldv_2_container_net_device, ldv_2_container_struct_ethtool_cmd_ptr);
1334 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1335 :
1336 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1337 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1338 :
1339 : /* Jump to a subprocess 'call' initial state */
1340 10 : goto ldv_call_2;
1341 : /* Jump to a subprocess 'call' initial state */
1342 : goto ldv_call_2;
1343 : /* Jump to a subprocess 'call' initial state */
1344 : goto ldv_call_2;
1345 : /* Jump to a subprocess 'call' initial state */
1346 : goto ldv_call_2;
1347 : /* Jump to a subprocess 'call' initial state */
1348 : goto ldv_call_2;
1349 : /* Jump to a subprocess 'call' initial state */
1350 : goto ldv_call_2;
1351 : /* Jump to a subprocess 'call' initial state */
1352 : goto ldv_call_2;
1353 : /* Jump to a subprocess 'call' initial state */
1354 : goto ldv_call_2;
1355 : /* Jump to a subprocess 'call' initial state */
1356 : goto ldv_call_2;
1357 : /* Jump to a subprocess 'call' initial state */
1358 : goto ldv_call_2;
1359 : /* Jump to a subprocess 'call' initial state */
1360 : goto ldv_call_2;
1361 : /* Jump to a subprocess 'call' initial state */
1362 : goto ldv_call_2;
1363 : /* Jump to a subprocess 'call' initial state */
1364 : goto ldv_call_2;
1365 : /* Jump to a subprocess 'call' initial state */
1366 : goto ldv_call_2;
1367 10 : break;
1368 : }
1369 30 : case 15: {
1370 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_msglevel from ethtool_ops."} */
1371 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_msglevel))(ldv_2_container_net_device);", "comment": "callback"} */
1372 20 : ldv_random_containerless_scenario_callback_2_10(ldv_2_callback_get_msglevel, ldv_2_container_net_device);
1373 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1374 :
1375 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1376 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1377 :
1378 : /* Jump to a subprocess 'call' initial state */
1379 10 : goto ldv_call_2;
1380 : /* Jump to a subprocess 'call' initial state */
1381 : goto ldv_call_2;
1382 : /* Jump to a subprocess 'call' initial state */
1383 : goto ldv_call_2;
1384 : /* Jump to a subprocess 'call' initial state */
1385 : goto ldv_call_2;
1386 : /* Jump to a subprocess 'call' initial state */
1387 : goto ldv_call_2;
1388 : /* Jump to a subprocess 'call' initial state */
1389 : goto ldv_call_2;
1390 : /* Jump to a subprocess 'call' initial state */
1391 : goto ldv_call_2;
1392 : /* Jump to a subprocess 'call' initial state */
1393 : goto ldv_call_2;
1394 : /* Jump to a subprocess 'call' initial state */
1395 : goto ldv_call_2;
1396 : /* Jump to a subprocess 'call' initial state */
1397 : goto ldv_call_2;
1398 : /* Jump to a subprocess 'call' initial state */
1399 : goto ldv_call_2;
1400 : /* Jump to a subprocess 'call' initial state */
1401 : goto ldv_call_2;
1402 : /* Jump to a subprocess 'call' initial state */
1403 : goto ldv_call_2;
1404 : /* Jump to a subprocess 'call' initial state */
1405 : goto ldv_call_2;
1406 : /* Jump to a subprocess 'call' initial state */
1407 : goto ldv_call_2;
1408 10 : break;
1409 : }
1410 30 : case 16: {
1411 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_link from ethtool_ops."} */
1412 : /* LDV {"type": "CALLBACK", "call": "((& ethtool_op_get_link))(ldv_2_container_net_device);", "comment": "callback"} */
1413 20 : ldv_random_containerless_scenario_callback_2_9(ldv_2_callback_get_link, ldv_2_container_net_device);
1414 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1415 :
1416 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1417 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1418 :
1419 : /* Jump to a subprocess 'call' initial state */
1420 10 : goto ldv_call_2;
1421 : /* Jump to a subprocess 'call' initial state */
1422 : goto ldv_call_2;
1423 : /* Jump to a subprocess 'call' initial state */
1424 : goto ldv_call_2;
1425 : /* Jump to a subprocess 'call' initial state */
1426 : goto ldv_call_2;
1427 : /* Jump to a subprocess 'call' initial state */
1428 : goto ldv_call_2;
1429 : /* Jump to a subprocess 'call' initial state */
1430 : goto ldv_call_2;
1431 : /* Jump to a subprocess 'call' initial state */
1432 : goto ldv_call_2;
1433 : /* Jump to a subprocess 'call' initial state */
1434 : goto ldv_call_2;
1435 : /* Jump to a subprocess 'call' initial state */
1436 : goto ldv_call_2;
1437 : /* Jump to a subprocess 'call' initial state */
1438 : goto ldv_call_2;
1439 : /* Jump to a subprocess 'call' initial state */
1440 : goto ldv_call_2;
1441 : /* Jump to a subprocess 'call' initial state */
1442 : goto ldv_call_2;
1443 : /* Jump to a subprocess 'call' initial state */
1444 : goto ldv_call_2;
1445 : /* Jump to a subprocess 'call' initial state */
1446 : goto ldv_call_2;
1447 : /* Jump to a subprocess 'call' initial state */
1448 : goto ldv_call_2;
1449 : /* Jump to a subprocess 'call' initial state */
1450 : goto ldv_call_2;
1451 10 : break;
1452 : }
1453 30 : case 17: {
1454 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1455 30 : ldv_2_ldv_param_6_2_default = ldv_xmalloc_unknown_size(0);
1456 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
1457 :
1458 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_ethtool_stats from ethtool_ops."} */
1459 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_ethtool_stats))(ldv_2_container_net_device, ldv_2_container_struct_ethtool_stats_ptr, ldv_2_ldv_param_6_2_default);", "comment": "callback"} */
1460 20 : ldv_random_containerless_scenario_callback_2_6(ldv_2_callback_get_ethtool_stats, ldv_2_container_net_device, ldv_2_container_struct_ethtool_stats_ptr, ldv_2_ldv_param_6_2_default);
1461 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1462 :
1463 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1464 20 : ldv_free(ldv_2_ldv_param_6_2_default);
1465 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
1466 :
1467 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1468 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1469 :
1470 : /* Jump to a subprocess 'call' initial state */
1471 10 : goto ldv_call_2;
1472 : /* Jump to a subprocess 'call' initial state */
1473 : goto ldv_call_2;
1474 : /* Jump to a subprocess 'call' initial state */
1475 : goto ldv_call_2;
1476 : /* Jump to a subprocess 'call' initial state */
1477 : goto ldv_call_2;
1478 : /* Jump to a subprocess 'call' initial state */
1479 : goto ldv_call_2;
1480 : /* Jump to a subprocess 'call' initial state */
1481 : goto ldv_call_2;
1482 : /* Jump to a subprocess 'call' initial state */
1483 : goto ldv_call_2;
1484 : /* Jump to a subprocess 'call' initial state */
1485 : goto ldv_call_2;
1486 : /* Jump to a subprocess 'call' initial state */
1487 : goto ldv_call_2;
1488 : /* Jump to a subprocess 'call' initial state */
1489 : goto ldv_call_2;
1490 : /* Jump to a subprocess 'call' initial state */
1491 : goto ldv_call_2;
1492 : /* Jump to a subprocess 'call' initial state */
1493 : goto ldv_call_2;
1494 : /* Jump to a subprocess 'call' initial state */
1495 : goto ldv_call_2;
1496 : /* Jump to a subprocess 'call' initial state */
1497 : goto ldv_call_2;
1498 : /* Jump to a subprocess 'call' initial state */
1499 : goto ldv_call_2;
1500 : /* Jump to a subprocess 'call' initial state */
1501 : goto ldv_call_2;
1502 : /* Jump to a subprocess 'call' initial state */
1503 : goto ldv_call_2;
1504 10 : break;
1505 : }
1506 30 : case 18: {
1507 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_drvinfo from ethtool_ops."} */
1508 : /* LDV {"type": "CALLBACK", "call": "((& vortex_get_drvinfo))(ldv_2_container_net_device, ldv_2_container_struct_ethtool_drvinfo_ptr);", "comment": "callback"} */
1509 20 : ldv_random_containerless_scenario_callback_2_3(ldv_2_callback_get_drvinfo, ldv_2_container_net_device, ldv_2_container_struct_ethtool_drvinfo_ptr);
1510 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1511 :
1512 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1513 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1514 :
1515 : /* Jump to a subprocess 'call' initial state */
1516 10 : goto ldv_call_2;
1517 : /* Jump to a subprocess 'call' initial state */
1518 : goto ldv_call_2;
1519 : /* Jump to a subprocess 'call' initial state */
1520 : goto ldv_call_2;
1521 : /* Jump to a subprocess 'call' initial state */
1522 : goto ldv_call_2;
1523 : /* Jump to a subprocess 'call' initial state */
1524 : goto ldv_call_2;
1525 : /* Jump to a subprocess 'call' initial state */
1526 : goto ldv_call_2;
1527 : /* Jump to a subprocess 'call' initial state */
1528 : goto ldv_call_2;
1529 : /* Jump to a subprocess 'call' initial state */
1530 : goto ldv_call_2;
1531 : /* Jump to a subprocess 'call' initial state */
1532 : goto ldv_call_2;
1533 : /* Jump to a subprocess 'call' initial state */
1534 : goto ldv_call_2;
1535 : /* Jump to a subprocess 'call' initial state */
1536 : goto ldv_call_2;
1537 : /* Jump to a subprocess 'call' initial state */
1538 : goto ldv_call_2;
1539 : /* Jump to a subprocess 'call' initial state */
1540 : goto ldv_call_2;
1541 : /* Jump to a subprocess 'call' initial state */
1542 : goto ldv_call_2;
1543 : /* Jump to a subprocess 'call' initial state */
1544 : goto ldv_call_2;
1545 : /* Jump to a subprocess 'call' initial state */
1546 : goto ldv_call_2;
1547 : /* Jump to a subprocess 'call' initial state */
1548 : goto ldv_call_2;
1549 : /* Jump to a subprocess 'call' initial state */
1550 : goto ldv_call_2;
1551 10 : break;
1552 : }
1553 30 : case 19: {
1554 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish NET callbacks invocations scenario."} */
1555 : /* Skip a non-replicative signal receiving */
1556 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1557 :
1558 : /* Exit function at a terminal state */
1559 10 : return;
1560 10 : break;
1561 : }
1562 20 : default: ldv_stop();
1563 10 : }
1564 0 : /* End of the subprocess 'call' */
1565 0 : return;
1566 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(net)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_2"} */
1567 : }
1568 :
1569 : /* AUX_FUNC ldv_random_containerless_scenario_4 */
1570 : void ldv_random_containerless_scenario_4(void *arg0) {
1571 : /* LDV {"thread": 4, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_kparam_array)'", "function": "ldv_random_containerless_scenario_4"} */
1572 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1573 1 : int (*ldv_4_callback_get)(char *, struct kernel_param *);
1574 1 : int (*ldv_4_callback_set)(char *, struct kernel_param *);
1575 1 : struct kernel_param *ldv_4_container_struct_kernel_param_ptr;
1576 1 : char *ldv_4_ldv_param_10_0_default;
1577 1 : char *ldv_4_ldv_param_4_0_default;
1578 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1579 1 : /* LDV {"action": "DEFAULT_REGISTER_13", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_KPARAM_ARRAY callbacks invocations scenario."} */
1580 3 : ldv_free(arg0);
1581 1 : /* LDV {"action": "DEFAULT_REGISTER_13", "type": "RECEIVE_END"} */
1582 :
1583 : /* LDV {"action": "DEFAULT_ALLOC_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1584 3 : ldv_4_container_struct_kernel_param_ptr = ldv_xmalloc_unknown_size(0);
1585 : /* LDV {"action": "DEFAULT_ALLOC_13", "type": "CONDITION_END"} */
1586 :
1587 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1588 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1589 :
1590 : /* Jump to a subprocess 'call' initial state */
1591 1 : goto ldv_call_4;
1592 : /* End of the process */
1593 : return;
1594 1 :
1595 : /* Sbprocess call */
1596 : ldv_call_4:
1597 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1598 :
1599 4 : if (ldv_undef_int()) {
1600 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1601 3 : ldv_4_ldv_param_4_0_default = ldv_xmalloc_unknown_size(0);
1602 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1603 :
1604 4 : if (ldv_undef_int()) {
1605 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1606 3 : ldv_4_ldv_param_10_0_default = ldv_xmalloc_unknown_size(0);
1607 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_END"} */
1608 :
1609 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback set from kernel_param."} */
1610 : /* LDV {"type": "CALLBACK", "call": "((& param_set_int))(ldv_4_ldv_param_10_0_default, ldv_4_container_struct_kernel_param_ptr);", "comment": "callback"} */
1611 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_ptr);
1612 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1613 :
1614 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1615 2 : ldv_free(ldv_4_ldv_param_10_0_default);
1616 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_END"} */
1617 :
1618 : }
1619 : else {
1620 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get from kernel_param."} */
1621 : /* LDV {"type": "CALLBACK", "call": "((& param_get_int))(ldv_4_ldv_param_4_0_default, ldv_4_container_struct_kernel_param_ptr);", "comment": "callback"} */
1622 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_ptr);
1623 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1624 :
1625 : }
1626 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1627 4 : ldv_free(ldv_4_ldv_param_4_0_default);
1628 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1629 :
1630 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1631 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1632 :
1633 : /* Jump to a subprocess 'call' initial state */
1634 1 : goto ldv_call_4;
1635 : }
1636 : else {
1637 : /* LDV {"action": "DEFAULT_FREE_13", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1638 2 : ldv_free(ldv_4_container_struct_kernel_param_ptr);
1639 : /* LDV {"action": "DEFAULT_FREE_13", "type": "CONDITION_END"} */
1640 :
1641 : /* LDV {"action": "DEFAULT_DEREGISTER_13", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_KPARAM_ARRAY callbacks invocations scenario."} */
1642 : /* Skip a non-replicative signal receiving */
1643 : /* LDV {"action": "DEFAULT_DEREGISTER_13", "type": "RECEIVE_END"} */
1644 :
1645 : /* Exit function at a terminal state */
1646 1 : return;
1647 : }
1648 : /* End of the subprocess 'call' */
1649 : return;
1650 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_kparam_array)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_4"} */
1651 : }
1652 :
1653 : /* AUX_FUNC ldv_random_containerless_scenario_5 */
1654 : void ldv_random_containerless_scenario_5(void *arg0) {
1655 : /* LDV {"thread": 5, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_kparam_array)'", "function": "ldv_random_containerless_scenario_5"} */
1656 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1657 1 : int (*ldv_5_callback_get)(char *, struct kernel_param *);
1658 1 : int (*ldv_5_callback_set)(char *, struct kernel_param *);
1659 1 : struct kernel_param *ldv_5_container_struct_kernel_param_ptr;
1660 1 : char *ldv_5_ldv_param_10_0_default;
1661 1 : char *ldv_5_ldv_param_4_0_default;
1662 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1663 1 : /* LDV {"action": "DEFAULT_REGISTER_13", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_KPARAM_ARRAY callbacks invocations scenario."} */
1664 3 : ldv_free(arg0);
1665 1 : /* LDV {"action": "DEFAULT_REGISTER_13", "type": "RECEIVE_END"} */
1666 :
1667 : /* LDV {"action": "DEFAULT_ALLOC_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1668 3 : ldv_5_container_struct_kernel_param_ptr = ldv_xmalloc_unknown_size(0);
1669 : /* LDV {"action": "DEFAULT_ALLOC_13", "type": "CONDITION_END"} */
1670 :
1671 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1672 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1673 :
1674 : /* Jump to a subprocess 'call' initial state */
1675 1 : goto ldv_call_5;
1676 : /* End of the process */
1677 : return;
1678 1 :
1679 : /* Sbprocess call */
1680 : ldv_call_5:
1681 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1682 :
1683 4 : if (ldv_undef_int()) {
1684 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1685 3 : ldv_5_ldv_param_4_0_default = ldv_xmalloc_unknown_size(0);
1686 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1687 :
1688 4 : if (ldv_undef_int()) {
1689 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1690 3 : ldv_5_ldv_param_10_0_default = ldv_xmalloc_unknown_size(0);
1691 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_END"} */
1692 :
1693 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback set from kernel_param."} */
1694 : /* LDV {"type": "CALLBACK", "call": "((& param_array_set))(ldv_5_ldv_param_10_0_default, ldv_5_container_struct_kernel_param_ptr);", "comment": "callback"} */
1695 2 : ldv_random_containerless_scenario_callback_5_10(ldv_5_callback_set, ldv_5_ldv_param_10_0_default, ldv_5_container_struct_kernel_param_ptr);
1696 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1697 :
1698 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1699 2 : ldv_free(ldv_5_ldv_param_10_0_default);
1700 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_END"} */
1701 :
1702 : }
1703 : else {
1704 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get from kernel_param."} */
1705 : /* LDV {"type": "CALLBACK", "call": "((& param_array_get))(ldv_5_ldv_param_4_0_default, ldv_5_container_struct_kernel_param_ptr);", "comment": "callback"} */
1706 2 : ldv_random_containerless_scenario_callback_5_4(ldv_5_callback_get, ldv_5_ldv_param_4_0_default, ldv_5_container_struct_kernel_param_ptr);
1707 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1708 :
1709 : }
1710 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1711 4 : ldv_free(ldv_5_ldv_param_4_0_default);
1712 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1713 :
1714 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1715 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1716 :
1717 : /* Jump to a subprocess 'call' initial state */
1718 1 : goto ldv_call_5;
1719 : }
1720 : else {
1721 : /* LDV {"action": "DEFAULT_FREE_13", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1722 2 : ldv_free(ldv_5_container_struct_kernel_param_ptr);
1723 : /* LDV {"action": "DEFAULT_FREE_13", "type": "CONDITION_END"} */
1724 :
1725 : /* LDV {"action": "DEFAULT_DEREGISTER_13", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_KPARAM_ARRAY callbacks invocations scenario."} */
1726 : /* Skip a non-replicative signal receiving */
1727 : /* LDV {"action": "DEFAULT_DEREGISTER_13", "type": "RECEIVE_END"} */
1728 :
1729 : /* Exit function at a terminal state */
1730 1 : return;
1731 : }
1732 : /* End of the subprocess 'call' */
1733 : return;
1734 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_kparam_array)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_5"} */
1735 : }
1736 :
1737 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_10 */
1738 : void ldv_random_containerless_scenario_callback_2_10(u32 (*arg0)(struct net_device *), struct net_device *arg1) {
1739 20 : ((& vortex_get_msglevel))(arg1);
1740 10 : }
1741 :
1742 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_11 */
1743 : void ldv_random_containerless_scenario_callback_2_11(int (*arg0)(struct net_device *, struct ethtool_cmd *), struct net_device *arg1, struct ethtool_cmd *arg2) {
1744 20 : ((& vortex_get_settings))(arg1, arg2);
1745 10 : }
1746 :
1747 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_12 */
1748 : void ldv_random_containerless_scenario_callback_2_12(int (*arg0)(struct net_device *, int), struct net_device *arg1, int arg2) {
1749 20 : ((& vortex_get_sset_count))(arg1, arg2);
1750 10 : }
1751 :
1752 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_15 */
1753 : void ldv_random_containerless_scenario_callback_2_15(void (*arg0)(struct net_device *, u32 , u8 *), struct net_device *arg1, unsigned int arg2, unsigned char *arg3) {
1754 30 : ((& vortex_get_strings))(arg1, arg2, arg3);
1755 10 : }
1756 :
1757 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_18 */
1758 : void ldv_random_containerless_scenario_callback_2_18(int (*arg0)(struct net_device *, int), struct net_device *arg1, int arg2) {
1759 10 : ((& eth_change_mtu))(arg1, arg2);
1760 10 : }
1761 :
1762 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_21 */
1763 : void ldv_random_containerless_scenario_callback_2_21(int (*arg0)(struct net_device *, struct ifreq *, int), struct net_device *arg1, struct ifreq *arg2, int arg3) {
1764 20 : ((& vortex_ioctl))(arg1, arg2, arg3);
1765 10 : }
1766 :
1767 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_24 */
1768 : void ldv_random_containerless_scenario_callback_2_24(struct net_device_stats *(*arg0)(struct net_device *), struct net_device *arg1) {
1769 30 : ((& vortex_get_stats))(arg1);
1770 10 : }
1771 :
1772 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_25 */
1773 : void ldv_random_containerless_scenario_callback_2_25(int (*arg0)(struct net_device *, void *), struct net_device *arg1, void *arg2) {
1774 10 : ((& eth_mac_addr))(arg1, arg2);
1775 10 : }
1776 :
1777 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_26 */
1778 : void ldv_random_containerless_scenario_callback_2_26(void (*arg0)(struct net_device *), struct net_device *arg1) {
1779 20 : ((& set_rx_mode))(arg1);
1780 10 : }
1781 :
1782 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_27 */
1783 : void ldv_random_containerless_scenario_callback_2_27(netdev_tx_t (*arg0)(struct sk_buff *, struct net_device *), struct sk_buff *arg1, struct net_device *arg2) {
1784 20 : ((& vortex_start_xmit))(arg1, arg2);
1785 10 : }
1786 :
1787 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_28 */
1788 : void ldv_random_containerless_scenario_callback_2_28(void (*arg0)(struct net_device *), struct net_device *arg1) {
1789 40 : ((& vortex_tx_timeout))(arg1);
1790 10 : }
1791 :
1792 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_29 */
1793 : void ldv_random_containerless_scenario_callback_2_29(int (*arg0)(struct net_device *), struct net_device *arg1) {
1794 10 : ((& eth_validate_addr))(arg1);
1795 10 : }
1796 :
1797 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_3 */
1798 : void ldv_random_containerless_scenario_callback_2_3(void (*arg0)(struct net_device *, struct ethtool_drvinfo *), struct net_device *arg1, struct ethtool_drvinfo *arg2) {
1799 30 : ((& vortex_get_drvinfo))(arg1, arg2);
1800 10 : }
1801 :
1802 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_30 */
1803 : void ldv_random_containerless_scenario_callback_2_30(int (*arg0)(struct net_device *), struct net_device *arg1) {
1804 20 : ((& vortex_nway_reset))(arg1);
1805 10 : }
1806 :
1807 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_31 */
1808 : void ldv_random_containerless_scenario_callback_2_31(void (*arg0)(struct net_device *, u32 ), struct net_device *arg1, unsigned int arg2) {
1809 20 : ((& vortex_set_msglevel))(arg1, arg2);
1810 10 : }
1811 :
1812 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_34 */
1813 : void ldv_random_containerless_scenario_callback_2_34(int (*arg0)(struct net_device *, struct ethtool_cmd *), struct net_device *arg1, struct ethtool_cmd *arg2) {
1814 20 : ((& vortex_set_settings))(arg1, arg2);
1815 10 : }
1816 :
1817 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_6 */
1818 : void ldv_random_containerless_scenario_callback_2_6(void (*arg0)(struct net_device *, struct ethtool_stats *, u64 *), struct net_device *arg1, struct ethtool_stats *arg2, long long unsigned int *arg3) {
1819 20 : ((& vortex_get_ethtool_stats))(arg1, arg2, arg3);
1820 10 : }
1821 :
1822 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_9 */
1823 : void ldv_random_containerless_scenario_callback_2_9(u32 (*arg0)(struct net_device *), struct net_device *arg1) {
1824 10 : ((& ethtool_op_get_link))(arg1);
1825 10 : }
1826 :
1827 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_10 */
1828 : void ldv_random_containerless_scenario_callback_4_10(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
1829 1 : ((& param_set_int))(arg1, arg2);
1830 1 : }
1831 :
1832 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_4 */
1833 : void ldv_random_containerless_scenario_callback_4_4(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
1834 1 : ((& param_get_int))(arg1, arg2);
1835 1 : }
1836 :
1837 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_5_10 */
1838 : void ldv_random_containerless_scenario_callback_5_10(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
1839 1 : ((& param_array_set))(arg1, arg2);
1840 1 : }
1841 :
1842 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_5_4 */
1843 : void ldv_random_containerless_scenario_callback_5_4(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
1844 1 : ((& param_array_get))(arg1, arg2);
1845 1 : }
1846 :
1847 : /* AUX_FUNC_CALLBACK ldv_register_netdev_open_12_6 */
1848 : int ldv_register_netdev_open_12_6(int (*arg0)(struct net_device *), struct net_device *arg1) {
1849 80 : return ((& vortex_open))(arg1);
1850 10 : }
1851 :
1852 : /* AUX_FUNC ldv_timer_scenario_6 */
1853 : void ldv_timer_scenario_6(void *arg0) {
1854 : /* LDV {"thread": 6, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'timer_scenario(timer)'", "function": "ldv_timer_scenario_6"} */
1855 30 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1856 30 : struct timer_list *ldv_6_container_timer_list;
1857 : /* Received labels */
1858 30 : struct ldv_struct_timer_scenario_6 *data = (struct ldv_struct_timer_scenario_6*) arg0;
1859 :
1860 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1861 : /* LDV {"action": "INSTANCE_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin TIMER callbacks invocations scenario."} */
1862 : /* Assign recieved labels */
1863 60 : if (data) {
1864 30 : ldv_6_container_timer_list = data->arg0;
1865 60 : ldv_free(data);
1866 : }
1867 : /* LDV {"action": "INSTANCE_REGISTER", "type": "RECEIVE_END"} */
1868 :
1869 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Time has come: call the timer callback. Invoke callback callback from TIMER."} */
1870 : /* Callback pre-call */
1871 60 : ldv_switch_to_interrupt_context();
1872 180 : if (ldv_6_container_timer_list->function) {
1873 : /* LDV {"type": "CALLBACK", "call": "(ldv_6_container_timer_list->function)(ldv_6_container_timer_list->data);", "comment": "callback"} */
1874 120 : ldv_timer_scenario_callback_6_2(ldv_6_container_timer_list->function, ldv_6_container_timer_list->data);
1875 : }
1876 : /* Callback post-call */
1877 90 : ldv_switch_to_process_context();
1878 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1879 :
1880 : /* LDV {"action": "INSTANCE_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish TIMER callbacks invocations scenario."} */
1881 : /* Skip a non-replicative signal receiving */
1882 : /* LDV {"action": "INSTANCE_DEREGISTER", "type": "RECEIVE_END"} */
1883 :
1884 : /* Exit function at a terminal state */
1885 90 : return;
1886 : /* End of the process */
1887 : return;
1888 : /* LDV {"comment": "End of control function based on process 'timer_scenario(timer)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_timer_scenario_6"} */
1889 : }
1890 :
1891 : /* AUX_FUNC_CALLBACK ldv_timer_scenario_callback_6_2 */
1892 : void ldv_timer_scenario_callback_6_2(void (*arg0)(unsigned long), unsigned long arg1) {
1893 180 : (*arg0)(arg1);
1894 60 : }
1895 :
1896 : /* AUX_FUNC_CALLBACK ldv_unregister_netdev_stop_14_2 */
1897 : void ldv_unregister_netdev_stop_14_2(int (*arg0)(struct net_device *), struct net_device *arg1) {
1898 16 : ((& vortex_close))(arg1);
1899 4 : }
1900 :
1901 : /* AUX_FUNC main */
1902 : int main() {
1903 1 : ldv_main_17(0);
1904 0 : return 0;
1905 : }
1906 :
1907 :
1908 : /* AUX_FUNC ERR_PTR */
1909 : static inline void *ERR_PTR (long int error)
1910 : {
1911 :
1912 : return ldv_err_ptr(error);
1913 : }
1914 :
1915 : /* AUX_FUNC PTR_ERR */
1916 : static inline long int PTR_ERR (void const *ptr)
1917 : {
1918 :
1919 : return ldv_ptr_err(ptr);
1920 : }
1921 :
1922 : /* AUX_FUNC IS_ERR */
1923 : static inline long int IS_ERR (void const *ptr)
1924 : {
1925 :
1926 : return ldv_is_err(ptr);
1927 : }
1928 :
1929 : /* AUX_FUNC IS_ERR_OR_NULL */
1930 : static inline long int IS_ERR_OR_NULL (void const *ptr)
1931 : {
1932 :
1933 : return ldv_is_err_or_null(ptr);
1934 : }
1935 :
1936 : /* AUX_FUNC ldv_del_timer_sync_5 */
1937 : int ldv_del_timer_sync_5 (struct timer_list *ldv_func_arg1)
1938 : {
1939 :
1940 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer_sync'"} */
1941 : return ldv_emg_del_timer_sync(ldv_func_arg1);
1942 : }
1943 :
1944 : /* AUX_FUNC kzalloc */
1945 : static inline void *kzalloc (size_t size, gfp_t flags)
1946 : {
1947 :
1948 : return ldv_kzalloc(size, flags);
1949 : }
1950 :
1951 : /* AUX_FUNC ldv_dev_get_drvdata_7 */
1952 : void *ldv_dev_get_drvdata_7 (struct device const *dev)
1953 : {
1954 :
1955 : return ldv_dev_get_drvdata(dev);
1956 : }
1957 :
1958 : /* AUX_FUNC ldv_dev_get_drvdata_8 */
1959 : void *ldv_dev_get_drvdata_8 (struct device const *dev)
1960 : {
1961 :
1962 : return ldv_dev_get_drvdata(dev);
1963 : }
1964 :
1965 : /* AUX_FUNC ldv_register_netdev_9 */
1966 : int ldv_register_netdev_9 (struct net_device *ldv_func_arg1)
1967 : {
1968 10 :
1969 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'register_netdev'"} */
1970 50 : return ldv_emg_register_netdev(ldv_func_arg1);
1971 : }
1972 :
1973 : /* AUX_FUNC ldv_free_netdev_10 */
1974 : void ldv_free_netdev_10 (struct net_device *ldv_func_arg1)
1975 : {
1976 :
1977 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'free_netdev'"} */
1978 8 : ldv_emg_free_netdev(ldv_func_arg1);
1979 4 : }
1980 :
1981 : /* AUX_FUNC ldv_request_irq_11 */
1982 : static inline int ldv_request_irq_11 (unsigned int irq, irqreturn_t (*handler)(int, void *), long unsigned int flags, char const *name, void *dev)
1983 : {
1984 :
1985 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'request_irq'"} */
1986 80 : return ldv_emg_request_irq(irq, handler, flags, name, dev);
1987 20 : }
1988 :
1989 : /* AUX_FUNC ldv_free_irq_12 */
1990 : void ldv_free_irq_12 (unsigned int ldv_func_arg1, void *ldv_func_arg2)
1991 : {
1992 :
1993 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'free_irq'"} */
1994 80 : ldv_emg_free_irq(ldv_func_arg1, ldv_func_arg2);
1995 40 : }
1996 :
1997 : /* AUX_FUNC ldv_mod_timer_13 */
1998 : int ldv_mod_timer_13 (struct timer_list *ldv_func_arg1, long unsigned int ldv_func_arg2)
1999 : {
2000 0 :
2001 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'mod_timer'"} */
2002 0 : return ldv_emg_mod_timer(ldv_func_arg1, ldv_func_arg2);
2003 : }
2004 :
2005 : /* AUX_FUNC ldv_mod_timer_14 */
2006 : int ldv_mod_timer_14 (struct timer_list *ldv_func_arg1, long unsigned int ldv_func_arg2)
2007 : {
2008 10 :
2009 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'mod_timer'"} */
2010 40 : return ldv_emg_mod_timer(ldv_func_arg1, ldv_func_arg2);
2011 : }
2012 :
2013 : /* AUX_FUNC ldv_mod_timer_15 */
2014 : int ldv_mod_timer_15 (struct timer_list *ldv_func_arg1, long unsigned int ldv_func_arg2)
2015 : {
2016 10 :
2017 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'mod_timer'"} */
2018 40 : return ldv_emg_mod_timer(ldv_func_arg1, ldv_func_arg2);
2019 : }
2020 :
2021 : /* AUX_FUNC ldv_mod_timer_16 */
2022 : int ldv_mod_timer_16 (struct timer_list *ldv_func_arg1, long unsigned int ldv_func_arg2)
2023 : {
2024 10 :
2025 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'mod_timer'"} */
2026 40 : return ldv_emg_mod_timer(ldv_func_arg1, ldv_func_arg2);
2027 : }
2028 :
2029 : /* AUX_FUNC ldv_del_timer_sync_17 */
2030 : int ldv_del_timer_sync_17 (struct timer_list *ldv_func_arg1)
2031 : {
2032 364 :
2033 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer_sync'"} */
2034 1092 : return ldv_emg_del_timer_sync(ldv_func_arg1);
2035 : }
2036 :
2037 : /* AUX_FUNC ldv_del_timer_sync_18 */
2038 : int ldv_del_timer_sync_18 (struct timer_list *ldv_func_arg1)
2039 : {
2040 364 :
2041 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer_sync'"} */
2042 1092 : return ldv_emg_del_timer_sync(ldv_func_arg1);
2043 : }
2044 :
2045 : /* AUX_FUNC ldv_free_irq_19 */
2046 : void ldv_free_irq_19 (unsigned int ldv_func_arg1, void *ldv_func_arg2)
2047 : {
2048 :
2049 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'free_irq'"} */
2050 16 : ldv_emg_free_irq(ldv_func_arg1, ldv_func_arg2);
2051 8 : }
2052 :
2053 : /* AUX_FUNC ldv_unregister_netdev_20 */
2054 : void ldv_unregister_netdev_20 (struct net_device *ldv_func_arg1)
2055 : {
2056 :
2057 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'unregister_netdev'"} */
2058 : ldv_emg_unregister_netdev(ldv_func_arg1);
2059 : }
2060 :
2061 : /* AUX_FUNC ldv_free_netdev_21 */
2062 : void ldv_free_netdev_21 (struct net_device *ldv_func_arg1)
2063 : {
2064 :
2065 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'free_netdev'"} */
2066 : ldv_emg_free_netdev(ldv_func_arg1);
2067 : }
2068 :
2069 : /* AUX_FUNC ldv___pci_register_driver_22 */
2070 : int ldv___pci_register_driver_22 (struct pci_driver *ldv_func_arg1, struct module *ldv_func_arg2, char const *ldv_func_arg3)
2071 : {
2072 :
2073 1 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function '__pci_register_driver'"} */
2074 4 : return ldv_emg___pci_register_driver(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3);
2075 : }
2076 :
2077 : /* AUX_FUNC ldv_unregister_netdev_23 */
2078 : void ldv_unregister_netdev_23 (struct net_device *ldv_func_arg1)
2079 : {
2080 :
2081 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'unregister_netdev'"} */
2082 8 : ldv_emg_unregister_netdev(ldv_func_arg1);
2083 4 : }
2084 :
2085 : /* AUX_FUNC ldv_free_netdev_24 */
2086 : void ldv_free_netdev_24 (struct net_device *ldv_func_arg1)
2087 : {
2088 :
2089 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'free_netdev'"} */
2090 8 : ldv_emg_free_netdev(ldv_func_arg1);
2091 4 : }
2092 :
2093 : /* AUX_FUNC ldv_pci_unregister_driver_25 */
2094 : void ldv_pci_unregister_driver_25 (struct pci_driver *ldv_func_arg1)
2095 : {
2096 :
2097 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'pci_unregister_driver'"} */
2098 4 : ldv_emg_pci_unregister_driver(ldv_func_arg1);
2099 2 : }
|