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/pci.h>
29 : #include <linux/pm.h>
30 : #include <linux/timer.h>
31 :
32 :
33 : struct ldv_struct_insmod_6 {
34 : int signal_pending;
35 : };
36 1 :
37 : struct ldv_struct_pci_scenario_1 {
38 : struct pci_driver *arg0;
39 : int signal_pending;
40 : };
41 :
42 : struct ldv_struct_timer_scenario_4 {
43 : struct timer_list *arg0;
44 : int signal_pending;
45 : };
46 :
47 : /* EMG Function declarations */
48 : void ldv_dispatch_deregister_9_1(struct pci_driver *);
49 : extern void ldv_dispatch_instance_deregister_7_1(struct timer_list *);
50 : void ldv_dispatch_register_10_3(struct pci_driver *);
51 : int ldv_emg___pci_register_driver(struct pci_driver *, struct module *, char *);
52 : extern int ldv_emg_del_timer(struct timer_list *);
53 : extern int ldv_emg_del_timer_sync(struct timer_list *);
54 : void ldv_emg_pci_unregister_driver(struct pci_driver *);
55 : void ldv_partially_ordered_scenario_2(void *);
56 : void ldv_partially_ordered_scenario_callback_2_17(int (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
57 : void ldv_partially_ordered_scenario_callback_2_18(int (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
58 : void ldv_partially_ordered_scenario_callback_2_19(int (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
59 : void ldv_partially_ordered_scenario_callback_2_20(int (*)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
60 : void ldv_partially_ordered_scenario_callback_2_21(void (*)(struct usb_hcd *, struct usb_host_endpoint *), struct usb_hcd *, struct usb_host_endpoint *);
61 : void ldv_partially_ordered_scenario_callback_2_22(void (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
62 : void ldv_partially_ordered_scenario_callback_2_23(int (*)(struct usb_hcd *), struct usb_hcd *);
63 : void ldv_partially_ordered_scenario_callback_2_24(int (*)(struct usb_hcd *, u16 , u16 , u16 , char *, u16 ), struct usb_hcd *, short unsigned int, short unsigned int, short unsigned int, char *, short unsigned int);
64 : void ldv_partially_ordered_scenario_callback_2_27(int (*)(struct usb_hcd *, char *), struct usb_hcd *, char *);
65 : void ldv_partially_ordered_scenario_callback_2_30(irqreturn_t (*)(struct usb_hcd *), struct usb_hcd *);
66 : void ldv_partially_ordered_scenario_callback_2_31(int (*)(struct usb_hcd *), struct usb_hcd *);
67 : void ldv_partially_ordered_scenario_callback_2_32(void (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
68 : void ldv_partially_ordered_scenario_callback_2_33(void (*)(struct usb_hcd *), struct usb_hcd *);
69 : void ldv_partially_ordered_scenario_callback_2_34(int (*)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t ), struct usb_hcd *, struct usb_device *, struct usb_tt *, unsigned int);
70 : void ldv_partially_ordered_scenario_callback_2_37(int (*)(struct usb_hcd *, struct urb *, int), struct usb_hcd *, struct urb *, int);
71 : void ldv_partially_ordered_scenario_callback_2_4(int (*)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
72 : void ldv_partially_ordered_scenario_callback_2_40(int (*)(struct usb_hcd *, struct urb *, gfp_t ), struct usb_hcd *, struct urb *, unsigned int);
73 : int ldv_partially_ordered_scenario_probe_2_12(int (*)(struct usb_hcd *), struct usb_hcd *);
74 : void ldv_partially_ordered_scenario_release_2_2(void (*)(struct usb_hcd *), struct usb_hcd *);
75 : void ldv_pci_scenario_1(void *);
76 : int ldv_pci_scenario_probe_1_17(int (*)(struct pci_dev *, struct pci_device_id *), struct pci_dev *, struct pci_device_id *);
77 : void ldv_pci_scenario_release_1_2(void (*)(struct pci_dev *), struct pci_dev *);
78 : extern void ldv_pci_scenario_resume_1_5(int (*)(struct pci_dev *), struct pci_dev *);
79 : extern void ldv_pci_scenario_resume_early_1_6(int (*)(struct pci_dev *), struct pci_dev *);
80 : void ldv_pci_scenario_shutdown_1_3(void (*)(struct pci_dev *), struct pci_dev *);
81 : extern int ldv_pci_scenario_suspend_1_8(int (*)(struct pci_dev *, struct pm_message), struct pci_dev *, struct pm_message);
82 : extern int ldv_pci_scenario_suspend_late_1_7(int (*)(struct pci_dev *, struct pm_message), struct pci_dev *, struct pm_message);
83 :
84 : /* EMG variable declarations */
85 1 : struct ldv_thread ldv_thread_1;
86 1 : struct ldv_thread ldv_thread_2;
87 :
88 : /* EMG variable initialization */
89 :
90 : /* EMG function definitions */
91 : /* AUX_FUNC ldv_dispatch_deregister_9_1 */
92 : void ldv_dispatch_deregister_9_1(struct pci_driver *arg0) {
93 : struct ldv_struct_pci_scenario_1 *cf_arg_1;
94 : /* Skip thread join call */
95 2 : return;
96 : }
97 :
98 : /* AUX_FUNC ldv_dispatch_register_10_3 */
99 : void ldv_dispatch_register_10_3(struct pci_driver *arg0) {
100 : struct ldv_struct_pci_scenario_1 *cf_arg_1;
101 4 : cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_pci_scenario_1));
102 2 : cf_arg_1->arg0 = arg0;
103 2 : ldv_pci_scenario_1(cf_arg_1);
104 1 : return;
105 : }
106 :
107 : /* AUX_FUNC ldv_emg___pci_register_driver */
108 : int ldv_emg___pci_register_driver(struct pci_driver *arg0, struct module *arg1, char *arg2) {
109 : /* LDV {"comment": "Control function '__pci_register_driver'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg___pci_register_driver"} */
110 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
111 1 : struct pci_driver *ldv_10_pci_driver_pci_driver;
112 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
113 1 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
114 :
115 4 : if (ldv_undef_int()) {
116 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'pci' callbacks to register."} */
117 1 : ldv_10_pci_driver_pci_driver = arg0;
118 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
119 :
120 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register PCI callbacks."} */
121 2 : ldv_dispatch_register_10_3(ldv_10_pci_driver_pci_driver);
122 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
123 :
124 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'pci' callbacks."} */
125 3 : return ldv_undef_int_negative();
126 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
127 :
128 : /* Exit function at a terminal state */
129 : }
130 : else {
131 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'pci' callbacks has been successful."} */
132 1 : return 0;
133 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
134 :
135 : /* Exit function at a terminal state */
136 : }
137 : /* End of the process */
138 : /* LDV {"comment": "End of control function based on process '__pci_register_driver'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg___pci_register_driver"} */
139 : }
140 :
141 : /* AUX_FUNC ldv_emg_pci_unregister_driver */
142 : void ldv_emg_pci_unregister_driver(struct pci_driver *arg0) {
143 : /* LDV {"comment": "Control function 'pci_unregister_driver'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_pci_unregister_driver"} */
144 2 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
145 : struct pci_driver *ldv_9_pci_driver_pci_driver;
146 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
147 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'pci' callbacks to deregister."} */
148 2 : ldv_9_pci_driver_pci_driver = arg0;
149 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
150 :
151 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister PCI callbacks."} */
152 4 : ldv_dispatch_deregister_9_1(ldv_9_pci_driver_pci_driver);
153 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
154 :
155 : /* Exit function at a terminal state */
156 2 : return;
157 : /* End of the process */
158 : return;
159 : /* LDV {"comment": "End of control function based on process 'pci_unregister_driver'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_pci_unregister_driver"} */
160 : }
161 :
162 : /* AUX_FUNC ldv_partially_ordered_scenario_2 */
163 : void ldv_partially_ordered_scenario_2(void *arg0) {
164 : /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'partially_ordered_scenario(struct_hc_driver)'", "function": "ldv_partially_ordered_scenario_2"} */
165 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
166 1 : int (*ldv_2_callback_add_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
167 1 : int (*ldv_2_callback_address_device)(struct usb_hcd *, struct usb_device *);
168 1 : int (*ldv_2_callback_alloc_dev)(struct usb_hcd *, struct usb_device *);
169 1 : int (*ldv_2_callback_check_bandwidth)(struct usb_hcd *, struct usb_device *);
170 1 : int (*ldv_2_callback_drop_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
171 1 : void (*ldv_2_callback_endpoint_reset)(struct usb_hcd *, struct usb_host_endpoint *);
172 1 : void (*ldv_2_callback_free_dev)(struct usb_hcd *, struct usb_device *);
173 1 : int (*ldv_2_callback_get_frame_number)(struct usb_hcd *);
174 : int (*ldv_2_callback_hub_control)(struct usb_hcd *, u16 , u16 , u16 , char *, u16 );
175 1 : int (*ldv_2_callback_hub_status_data)(struct usb_hcd *, char *);
176 1 : irqreturn_t (*ldv_2_callback_irq)(struct usb_hcd *);
177 1 : int (*ldv_2_callback_reset)(struct usb_hcd *);
178 1 : void (*ldv_2_callback_reset_bandwidth)(struct usb_hcd *, struct usb_device *);
179 1 : void (*ldv_2_callback_shutdown)(struct usb_hcd *);
180 1 : int (*ldv_2_callback_update_hub_device)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t );
181 : int (*ldv_2_callback_urb_dequeue)(struct usb_hcd *, struct urb *, int);
182 1 : int (*ldv_2_callback_urb_enqueue)(struct usb_hcd *, struct urb *, gfp_t );
183 1 : struct hc_driver *ldv_2_container_struct_hc_driver;
184 1 : short unsigned int ldv_2_ldv_param_24_1_default;
185 1 : short unsigned int ldv_2_ldv_param_24_2_default;
186 1 : short unsigned int ldv_2_ldv_param_24_3_default;
187 1 : char *ldv_2_ldv_param_24_4_default;
188 1 : short unsigned int ldv_2_ldv_param_24_5_default;
189 1 : char *ldv_2_ldv_param_27_1_default;
190 1 : unsigned int ldv_2_ldv_param_34_3_default;
191 1 : int ldv_2_ldv_param_37_2_default;
192 1 : unsigned int ldv_2_ldv_param_40_2_default;
193 1 : struct urb *ldv_2_resource_struct_urb_ptr;
194 1 : struct usb_device *ldv_2_resource_struct_usb_device_ptr;
195 1 : struct usb_hcd *ldv_2_resource_struct_usb_hcd_ptr;
196 1 : struct usb_host_endpoint *ldv_2_resource_struct_usb_host_endpoint_ptr;
197 1 : struct usb_tt *ldv_2_resource_struct_usb_tt_ptr;
198 1 : int ldv_2_ret_default;
199 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
200 1 : /* Initialize automaton variables */
201 2 : ldv_2_ret_default = 1;
202 1 : /* LDV {"action": "DEFAULT_REGISTER_6", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_HC_DRIVER callbacks invocations scenario."} */
203 3 : ldv_free(arg0);
204 1 : /* LDV {"action": "DEFAULT_REGISTER_6", "type": "RECEIVE_END"} */
205 1 :
206 1 : /* LDV {"action": "DEFAULT_ALLOC_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
207 4 : ldv_2_container_struct_hc_driver = ldv_xmalloc_unknown_size(0);
208 1 : /* LDV {"action": "DEFAULT_ALLOC_6", "type": "CONDITION_END"} */
209 1 :
210 1 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Alloc memory for common callback arguments."} */
211 3 : ldv_2_resource_struct_urb_ptr = ldv_xmalloc_unknown_size(0);
212 3 : ldv_2_resource_struct_usb_device_ptr = ldv_xmalloc_unknown_size(0);
213 3 : ldv_2_resource_struct_usb_hcd_ptr = ldv_xmalloc_unknown_size(0);
214 3 : ldv_2_resource_struct_usb_host_endpoint_ptr = ldv_xmalloc_unknown_size(0);
215 3 : ldv_2_resource_struct_usb_tt_ptr = ldv_xmalloc_unknown_size(0);
216 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
217 :
218 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Start with an initialization callback."} */
219 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
220 :
221 : /* Jump to a subprocess 'main' initial state */
222 1 : goto ldv_main_2;
223 : /* End of the process */
224 : return;
225 1 :
226 : /* Sbprocess main */
227 : ldv_main_2:
228 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
229 :
230 4 : if (ldv_undef_int()) {
231 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Call an initialization callback. Invoke callback start from hc_driver."} */
232 : /* LDV {"type": "CALLBACK", "call": "ldv_2_ret_default = ((& xhci_run))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "probe"} */
233 2 : ldv_2_ret_default = ldv_partially_ordered_scenario_probe_2_12(ldv_2_container_struct_hc_driver->start, ldv_2_resource_struct_usb_hcd_ptr);
234 : /* Callback post-call */
235 2 : ldv_2_ret_default = ldv_filter_err_code(ldv_2_ret_default);
236 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
237 :
238 4 : if (ldv_undef_int()) {
239 : /* LDV {"action": "Y_RET", "type": "CONDITION_BEGIN", "comment": "Initialization has been successful."} */
240 2 : ldv_assume(ldv_2_ret_default == 0);
241 : /* LDV {"action": "Y_RET", "type": "CONDITION_END"} */
242 :
243 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
244 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
245 :
246 : /* Jump to a subprocess 'call' initial state */
247 1 : goto ldv_call_2;
248 : }
249 : else {
250 : /* LDV {"action": "N_RET", "type": "CONDITION_BEGIN", "comment": "Initialization has failed."} */
251 2 : ldv_assume(ldv_2_ret_default != 0);
252 : /* LDV {"action": "N_RET", "type": "CONDITION_END"} */
253 :
254 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Start with an initialization callback."} */
255 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
256 :
257 : /* Jump to a subprocess 'main' initial state */
258 1 : goto ldv_main_2;
259 : }
260 : }
261 : else {
262 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory for common callback arguments."} */
263 2 : ldv_free(ldv_2_resource_struct_urb_ptr);
264 2 : ldv_free(ldv_2_resource_struct_usb_device_ptr);
265 2 : ldv_free(ldv_2_resource_struct_usb_hcd_ptr);
266 2 : ldv_free(ldv_2_resource_struct_usb_host_endpoint_ptr);
267 2 : ldv_free(ldv_2_resource_struct_usb_tt_ptr);
268 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
269 :
270 : /* LDV {"action": "DEFAULT_FREE_6", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
271 2 : ldv_free(ldv_2_container_struct_hc_driver);
272 : /* LDV {"action": "DEFAULT_FREE_6", "type": "CONDITION_END"} */
273 :
274 : /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_HC_DRIVER callbacks invocations scenario."} */
275 : /* Skip a non-replicative signal receiving */
276 : /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "RECEIVE_END"} */
277 :
278 : /* Exit function at a terminal state */
279 1 : return;
280 : }
281 : /* End of the subprocess 'main' */
282 : return;
283 1 :
284 : /* Sbprocess call */
285 : ldv_call_2:
286 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
287 :
288 2 : switch (ldv_undef_int()) {
289 3 : case 1: {
290 : /* LDV {"action": "PRE_CALL_40", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
291 : /* LDV {"action": "PRE_CALL_40", "type": "CONDITION_END"} */
292 :
293 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback urb_enqueue from hc_driver."} */
294 : /* LDV {"type": "CALLBACK", "call": "((& xhci_urb_enqueue))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_40_2_default);", "comment": "callback"} */
295 2 : ldv_partially_ordered_scenario_callback_2_40(ldv_2_callback_urb_enqueue, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_40_2_default);
296 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
297 :
298 : /* LDV {"action": "POST_CALL_40", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
299 : /* LDV {"action": "POST_CALL_40", "type": "CONDITION_END"} */
300 :
301 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
302 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
303 :
304 : /* Jump to a subprocess 'call' initial state */
305 1 : goto ldv_call_2;
306 1 : break;
307 : }
308 3 : case 2: {
309 : /* LDV {"action": "PRE_CALL_37", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
310 : /* LDV {"action": "PRE_CALL_37", "type": "CONDITION_END"} */
311 :
312 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback urb_dequeue from hc_driver."} */
313 : /* LDV {"type": "CALLBACK", "call": "((& xhci_urb_dequeue))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_37_2_default);", "comment": "callback"} */
314 2 : ldv_partially_ordered_scenario_callback_2_37(ldv_2_callback_urb_dequeue, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_37_2_default);
315 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
316 :
317 : /* LDV {"action": "POST_CALL_37", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
318 : /* LDV {"action": "POST_CALL_37", "type": "CONDITION_END"} */
319 :
320 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
321 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
322 :
323 : /* Jump to a subprocess 'call' initial state */
324 1 : goto ldv_call_2;
325 : /* Jump to a subprocess 'call' initial state */
326 : goto ldv_call_2;
327 1 : break;
328 : }
329 3 : case 3: {
330 : /* LDV {"action": "PRE_CALL_34", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
331 : /* LDV {"action": "PRE_CALL_34", "type": "CONDITION_END"} */
332 :
333 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback update_hub_device from hc_driver."} */
334 : /* LDV {"type": "CALLBACK", "call": "((& xhci_update_hub_device))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_tt_ptr, ldv_2_ldv_param_34_3_default);", "comment": "callback"} */
335 2 : ldv_partially_ordered_scenario_callback_2_34(ldv_2_callback_update_hub_device, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_tt_ptr, ldv_2_ldv_param_34_3_default);
336 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
337 :
338 : /* LDV {"action": "POST_CALL_34", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
339 : /* LDV {"action": "POST_CALL_34", "type": "CONDITION_END"} */
340 :
341 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
342 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
343 :
344 : /* Jump to a subprocess 'call' initial state */
345 1 : goto ldv_call_2;
346 : /* Jump to a subprocess 'call' initial state */
347 : goto ldv_call_2;
348 : /* Jump to a subprocess 'call' initial state */
349 : goto ldv_call_2;
350 1 : break;
351 : }
352 3 : case 4: {
353 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback shutdown from hc_driver."} */
354 : /* LDV {"type": "CALLBACK", "call": "((& xhci_shutdown))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
355 2 : ldv_partially_ordered_scenario_callback_2_33(ldv_2_callback_shutdown, ldv_2_resource_struct_usb_hcd_ptr);
356 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
357 :
358 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
359 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
360 :
361 : /* Jump to a subprocess 'call' initial state */
362 1 : goto ldv_call_2;
363 : /* Jump to a subprocess 'call' initial state */
364 : goto ldv_call_2;
365 : /* Jump to a subprocess 'call' initial state */
366 : goto ldv_call_2;
367 : /* Jump to a subprocess 'call' initial state */
368 : goto ldv_call_2;
369 1 : break;
370 : }
371 3 : case 5: {
372 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback reset_bandwidth from hc_driver."} */
373 : /* LDV {"type": "CALLBACK", "call": "((& xhci_reset_bandwidth))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
374 2 : ldv_partially_ordered_scenario_callback_2_32(ldv_2_callback_reset_bandwidth, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
375 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
376 :
377 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
378 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
379 :
380 : /* Jump to a subprocess 'call' initial state */
381 1 : goto ldv_call_2;
382 : /* Jump to a subprocess 'call' initial state */
383 : goto ldv_call_2;
384 : /* Jump to a subprocess 'call' initial state */
385 : goto ldv_call_2;
386 : /* Jump to a subprocess 'call' initial state */
387 : goto ldv_call_2;
388 : /* Jump to a subprocess 'call' initial state */
389 : goto ldv_call_2;
390 1 : break;
391 : }
392 3 : case 6: {
393 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback reset from hc_driver."} */
394 : /* LDV {"type": "CALLBACK", "call": "((& xhci_pci_setup))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
395 2 : ldv_partially_ordered_scenario_callback_2_31(ldv_2_callback_reset, ldv_2_resource_struct_usb_hcd_ptr);
396 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
397 :
398 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
399 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
400 :
401 : /* Jump to a subprocess 'call' initial state */
402 1 : goto ldv_call_2;
403 : /* Jump to a subprocess 'call' initial state */
404 : goto ldv_call_2;
405 : /* Jump to a subprocess 'call' initial state */
406 : goto ldv_call_2;
407 : /* Jump to a subprocess 'call' initial state */
408 : goto ldv_call_2;
409 : /* Jump to a subprocess 'call' initial state */
410 : goto ldv_call_2;
411 : /* Jump to a subprocess 'call' initial state */
412 : goto ldv_call_2;
413 1 : break;
414 : }
415 3 : case 7: {
416 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback irq from hc_driver."} */
417 : /* LDV {"type": "CALLBACK", "call": "((& xhci_irq))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
418 2 : ldv_partially_ordered_scenario_callback_2_30(ldv_2_callback_irq, ldv_2_resource_struct_usb_hcd_ptr);
419 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
420 :
421 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
422 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
423 :
424 : /* Jump to a subprocess 'call' initial state */
425 1 : goto ldv_call_2;
426 : /* Jump to a subprocess 'call' initial state */
427 : goto ldv_call_2;
428 : /* Jump to a subprocess 'call' initial state */
429 : goto ldv_call_2;
430 : /* Jump to a subprocess 'call' initial state */
431 : goto ldv_call_2;
432 : /* Jump to a subprocess 'call' initial state */
433 : goto ldv_call_2;
434 : /* Jump to a subprocess 'call' initial state */
435 : goto ldv_call_2;
436 : /* Jump to a subprocess 'call' initial state */
437 : goto ldv_call_2;
438 1 : break;
439 : }
440 3 : case 8: {
441 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
442 3 : ldv_2_ldv_param_27_1_default = ldv_xmalloc_unknown_size(0);
443 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
444 :
445 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback hub_status_data from hc_driver."} */
446 : /* LDV {"type": "CALLBACK", "call": "((& xhci_hub_status_data))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_27_1_default);", "comment": "callback"} */
447 2 : ldv_partially_ordered_scenario_callback_2_27(ldv_2_callback_hub_status_data, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_27_1_default);
448 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
449 :
450 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
451 2 : ldv_free(ldv_2_ldv_param_27_1_default);
452 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
453 :
454 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
455 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
456 :
457 : /* Jump to a subprocess 'call' initial state */
458 1 : goto ldv_call_2;
459 : /* Jump to a subprocess 'call' initial state */
460 : goto ldv_call_2;
461 : /* Jump to a subprocess 'call' initial state */
462 : goto ldv_call_2;
463 : /* Jump to a subprocess 'call' initial state */
464 : goto ldv_call_2;
465 : /* Jump to a subprocess 'call' initial state */
466 : goto ldv_call_2;
467 : /* Jump to a subprocess 'call' initial state */
468 : goto ldv_call_2;
469 : /* Jump to a subprocess 'call' initial state */
470 : goto ldv_call_2;
471 : /* Jump to a subprocess 'call' initial state */
472 : goto ldv_call_2;
473 1 : break;
474 : }
475 3 : case 9: {
476 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
477 3 : ldv_2_ldv_param_24_4_default = ldv_xmalloc_unknown_size(0);
478 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
479 :
480 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback hub_control from hc_driver."} */
481 : /* LDV {"type": "CALLBACK", "call": "((& xhci_hub_control))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_24_1_default, ldv_2_ldv_param_24_2_default, ldv_2_ldv_param_24_3_default, ldv_2_ldv_param_24_4_default, ldv_2_ldv_param_24_5_default);", "comment": "callback"} */
482 2 : ldv_partially_ordered_scenario_callback_2_24(ldv_2_callback_hub_control, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_24_1_default, ldv_2_ldv_param_24_2_default, ldv_2_ldv_param_24_3_default, ldv_2_ldv_param_24_4_default, ldv_2_ldv_param_24_5_default);
483 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
484 :
485 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
486 2 : ldv_free(ldv_2_ldv_param_24_4_default);
487 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
488 :
489 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
490 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
491 :
492 : /* Jump to a subprocess 'call' initial state */
493 1 : goto ldv_call_2;
494 : /* Jump to a subprocess 'call' initial state */
495 : goto ldv_call_2;
496 : /* Jump to a subprocess 'call' initial state */
497 : goto ldv_call_2;
498 : /* Jump to a subprocess 'call' initial state */
499 : goto ldv_call_2;
500 : /* Jump to a subprocess 'call' initial state */
501 : goto ldv_call_2;
502 : /* Jump to a subprocess 'call' initial state */
503 : goto ldv_call_2;
504 : /* Jump to a subprocess 'call' initial state */
505 : goto ldv_call_2;
506 : /* Jump to a subprocess 'call' initial state */
507 : goto ldv_call_2;
508 : /* Jump to a subprocess 'call' initial state */
509 : goto ldv_call_2;
510 1 : break;
511 : }
512 3 : case 10: {
513 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_frame_number from hc_driver."} */
514 : /* LDV {"type": "CALLBACK", "call": "((& xhci_get_frame))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
515 2 : ldv_partially_ordered_scenario_callback_2_23(ldv_2_callback_get_frame_number, ldv_2_resource_struct_usb_hcd_ptr);
516 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
517 :
518 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
519 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
520 :
521 : /* Jump to a subprocess 'call' initial state */
522 1 : goto ldv_call_2;
523 : /* Jump to a subprocess 'call' initial state */
524 : goto ldv_call_2;
525 : /* Jump to a subprocess 'call' initial state */
526 : goto ldv_call_2;
527 : /* Jump to a subprocess 'call' initial state */
528 : goto ldv_call_2;
529 : /* Jump to a subprocess 'call' initial state */
530 : goto ldv_call_2;
531 : /* Jump to a subprocess 'call' initial state */
532 : goto ldv_call_2;
533 : /* Jump to a subprocess 'call' initial state */
534 : goto ldv_call_2;
535 : /* Jump to a subprocess 'call' initial state */
536 : goto ldv_call_2;
537 : /* Jump to a subprocess 'call' initial state */
538 : goto ldv_call_2;
539 : /* Jump to a subprocess 'call' initial state */
540 : goto ldv_call_2;
541 1 : break;
542 : }
543 3 : case 11: {
544 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback free_dev from hc_driver."} */
545 : /* LDV {"type": "CALLBACK", "call": "((& xhci_free_dev))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
546 2 : ldv_partially_ordered_scenario_callback_2_22(ldv_2_callback_free_dev, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
547 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
548 :
549 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
550 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
551 :
552 : /* Jump to a subprocess 'call' initial state */
553 1 : goto ldv_call_2;
554 : /* Jump to a subprocess 'call' initial state */
555 : goto ldv_call_2;
556 : /* Jump to a subprocess 'call' initial state */
557 : goto ldv_call_2;
558 : /* Jump to a subprocess 'call' initial state */
559 : goto ldv_call_2;
560 : /* Jump to a subprocess 'call' initial state */
561 : goto ldv_call_2;
562 : /* Jump to a subprocess 'call' initial state */
563 : goto ldv_call_2;
564 : /* Jump to a subprocess 'call' initial state */
565 : goto ldv_call_2;
566 : /* Jump to a subprocess 'call' initial state */
567 : goto ldv_call_2;
568 : /* Jump to a subprocess 'call' initial state */
569 : goto ldv_call_2;
570 : /* Jump to a subprocess 'call' initial state */
571 : goto ldv_call_2;
572 : /* Jump to a subprocess 'call' initial state */
573 : goto ldv_call_2;
574 1 : break;
575 : }
576 3 : case 12: {
577 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback endpoint_reset from hc_driver."} */
578 : /* LDV {"type": "CALLBACK", "call": "((& xhci_endpoint_reset))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);", "comment": "callback"} */
579 2 : ldv_partially_ordered_scenario_callback_2_21(ldv_2_callback_endpoint_reset, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);
580 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
581 :
582 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
583 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
584 :
585 : /* Jump to a subprocess 'call' initial state */
586 1 : goto ldv_call_2;
587 : /* Jump to a subprocess 'call' initial state */
588 : goto ldv_call_2;
589 : /* Jump to a subprocess 'call' initial state */
590 : goto ldv_call_2;
591 : /* Jump to a subprocess 'call' initial state */
592 : goto ldv_call_2;
593 : /* Jump to a subprocess 'call' initial state */
594 : goto ldv_call_2;
595 : /* Jump to a subprocess 'call' initial state */
596 : goto ldv_call_2;
597 : /* Jump to a subprocess 'call' initial state */
598 : goto ldv_call_2;
599 : /* Jump to a subprocess 'call' initial state */
600 : goto ldv_call_2;
601 : /* Jump to a subprocess 'call' initial state */
602 : goto ldv_call_2;
603 : /* Jump to a subprocess 'call' initial state */
604 : goto ldv_call_2;
605 : /* Jump to a subprocess 'call' initial state */
606 : goto ldv_call_2;
607 : /* Jump to a subprocess 'call' initial state */
608 : goto ldv_call_2;
609 1 : break;
610 : }
611 3 : case 13: {
612 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback drop_endpoint from hc_driver."} */
613 : /* LDV {"type": "CALLBACK", "call": "((& xhci_drop_endpoint))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);", "comment": "callback"} */
614 2 : ldv_partially_ordered_scenario_callback_2_20(ldv_2_callback_drop_endpoint, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);
615 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
616 :
617 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
618 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
619 :
620 : /* Jump to a subprocess 'call' initial state */
621 1 : goto ldv_call_2;
622 : /* Jump to a subprocess 'call' initial state */
623 : goto ldv_call_2;
624 : /* Jump to a subprocess 'call' initial state */
625 : goto ldv_call_2;
626 : /* Jump to a subprocess 'call' initial state */
627 : goto ldv_call_2;
628 : /* Jump to a subprocess 'call' initial state */
629 : goto ldv_call_2;
630 : /* Jump to a subprocess 'call' initial state */
631 : goto ldv_call_2;
632 : /* Jump to a subprocess 'call' initial state */
633 : goto ldv_call_2;
634 : /* Jump to a subprocess 'call' initial state */
635 : goto ldv_call_2;
636 : /* Jump to a subprocess 'call' initial state */
637 : goto ldv_call_2;
638 : /* Jump to a subprocess 'call' initial state */
639 : goto ldv_call_2;
640 : /* Jump to a subprocess 'call' initial state */
641 : goto ldv_call_2;
642 : /* Jump to a subprocess 'call' initial state */
643 : goto ldv_call_2;
644 : /* Jump to a subprocess 'call' initial state */
645 : goto ldv_call_2;
646 1 : break;
647 : }
648 3 : case 14: {
649 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback check_bandwidth from hc_driver."} */
650 : /* LDV {"type": "CALLBACK", "call": "((& xhci_check_bandwidth))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
651 2 : ldv_partially_ordered_scenario_callback_2_19(ldv_2_callback_check_bandwidth, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
652 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
653 :
654 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
655 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
656 :
657 : /* Jump to a subprocess 'call' initial state */
658 1 : goto ldv_call_2;
659 : /* Jump to a subprocess 'call' initial state */
660 : goto ldv_call_2;
661 : /* Jump to a subprocess 'call' initial state */
662 : goto ldv_call_2;
663 : /* Jump to a subprocess 'call' initial state */
664 : goto ldv_call_2;
665 : /* Jump to a subprocess 'call' initial state */
666 : goto ldv_call_2;
667 : /* Jump to a subprocess 'call' initial state */
668 : goto ldv_call_2;
669 : /* Jump to a subprocess 'call' initial state */
670 : goto ldv_call_2;
671 : /* Jump to a subprocess 'call' initial state */
672 : goto ldv_call_2;
673 : /* Jump to a subprocess 'call' initial state */
674 : goto ldv_call_2;
675 : /* Jump to a subprocess 'call' initial state */
676 : goto ldv_call_2;
677 : /* Jump to a subprocess 'call' initial state */
678 : goto ldv_call_2;
679 : /* Jump to a subprocess 'call' initial state */
680 : goto ldv_call_2;
681 : /* Jump to a subprocess 'call' initial state */
682 : goto ldv_call_2;
683 : /* Jump to a subprocess 'call' initial state */
684 : goto ldv_call_2;
685 1 : break;
686 : }
687 3 : case 15: {
688 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback alloc_dev from hc_driver."} */
689 : /* LDV {"type": "CALLBACK", "call": "((& xhci_alloc_dev))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
690 2 : ldv_partially_ordered_scenario_callback_2_18(ldv_2_callback_alloc_dev, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
691 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
692 :
693 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
694 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
695 :
696 : /* Jump to a subprocess 'call' initial state */
697 1 : goto ldv_call_2;
698 : /* Jump to a subprocess 'call' initial state */
699 : goto ldv_call_2;
700 : /* Jump to a subprocess 'call' initial state */
701 : goto ldv_call_2;
702 : /* Jump to a subprocess 'call' initial state */
703 : goto ldv_call_2;
704 : /* Jump to a subprocess 'call' initial state */
705 : goto ldv_call_2;
706 : /* Jump to a subprocess 'call' initial state */
707 : goto ldv_call_2;
708 : /* Jump to a subprocess 'call' initial state */
709 : goto ldv_call_2;
710 : /* Jump to a subprocess 'call' initial state */
711 : goto ldv_call_2;
712 : /* Jump to a subprocess 'call' initial state */
713 : goto ldv_call_2;
714 : /* Jump to a subprocess 'call' initial state */
715 : goto ldv_call_2;
716 : /* Jump to a subprocess 'call' initial state */
717 : goto ldv_call_2;
718 : /* Jump to a subprocess 'call' initial state */
719 : goto ldv_call_2;
720 : /* Jump to a subprocess 'call' initial state */
721 : goto ldv_call_2;
722 : /* Jump to a subprocess 'call' initial state */
723 : goto ldv_call_2;
724 : /* Jump to a subprocess 'call' initial state */
725 : goto ldv_call_2;
726 1 : break;
727 : }
728 3 : case 16: {
729 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback address_device from hc_driver."} */
730 : /* LDV {"type": "CALLBACK", "call": "((& xhci_address_device))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
731 2 : ldv_partially_ordered_scenario_callback_2_17(ldv_2_callback_address_device, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
732 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
733 :
734 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
735 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
736 :
737 : /* Jump to a subprocess 'call' initial state */
738 1 : goto ldv_call_2;
739 : /* Jump to a subprocess 'call' initial state */
740 : goto ldv_call_2;
741 : /* Jump to a subprocess 'call' initial state */
742 : goto ldv_call_2;
743 : /* Jump to a subprocess 'call' initial state */
744 : goto ldv_call_2;
745 : /* Jump to a subprocess 'call' initial state */
746 : goto ldv_call_2;
747 : /* Jump to a subprocess 'call' initial state */
748 : goto ldv_call_2;
749 : /* Jump to a subprocess 'call' initial state */
750 : goto ldv_call_2;
751 : /* Jump to a subprocess 'call' initial state */
752 : goto ldv_call_2;
753 : /* Jump to a subprocess 'call' initial state */
754 : goto ldv_call_2;
755 : /* Jump to a subprocess 'call' initial state */
756 : goto ldv_call_2;
757 : /* Jump to a subprocess 'call' initial state */
758 : goto ldv_call_2;
759 : /* Jump to a subprocess 'call' initial state */
760 : goto ldv_call_2;
761 : /* Jump to a subprocess 'call' initial state */
762 : goto ldv_call_2;
763 : /* Jump to a subprocess 'call' initial state */
764 : goto ldv_call_2;
765 : /* Jump to a subprocess 'call' initial state */
766 : goto ldv_call_2;
767 : /* Jump to a subprocess 'call' initial state */
768 : goto ldv_call_2;
769 1 : break;
770 : }
771 3 : case 17: {
772 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback add_endpoint from hc_driver."} */
773 : /* LDV {"type": "CALLBACK", "call": "((& xhci_add_endpoint))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);", "comment": "callback"} */
774 2 : ldv_partially_ordered_scenario_callback_2_4(ldv_2_callback_add_endpoint, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);
775 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
776 :
777 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
778 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
779 :
780 : /* Jump to a subprocess 'call' initial state */
781 1 : goto ldv_call_2;
782 : /* Jump to a subprocess 'call' initial state */
783 : goto ldv_call_2;
784 : /* Jump to a subprocess 'call' initial state */
785 : goto ldv_call_2;
786 : /* Jump to a subprocess 'call' initial state */
787 : goto ldv_call_2;
788 : /* Jump to a subprocess 'call' initial state */
789 : goto ldv_call_2;
790 : /* Jump to a subprocess 'call' initial state */
791 : goto ldv_call_2;
792 : /* Jump to a subprocess 'call' initial state */
793 : goto ldv_call_2;
794 : /* Jump to a subprocess 'call' initial state */
795 : goto ldv_call_2;
796 : /* Jump to a subprocess 'call' initial state */
797 : goto ldv_call_2;
798 : /* Jump to a subprocess 'call' initial state */
799 : goto ldv_call_2;
800 : /* Jump to a subprocess 'call' initial state */
801 : goto ldv_call_2;
802 : /* Jump to a subprocess 'call' initial state */
803 : goto ldv_call_2;
804 : /* Jump to a subprocess 'call' initial state */
805 : goto ldv_call_2;
806 : /* Jump to a subprocess 'call' initial state */
807 : goto ldv_call_2;
808 : /* Jump to a subprocess 'call' initial state */
809 : goto ldv_call_2;
810 : /* Jump to a subprocess 'call' initial state */
811 : goto ldv_call_2;
812 : /* Jump to a subprocess 'call' initial state */
813 : goto ldv_call_2;
814 1 : break;
815 : }
816 3 : case 18: {
817 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "Do uninitializations before deregistration. Invoke callback stop from hc_driver."} */
818 : /* LDV {"type": "CALLBACK", "call": "((& xhci_stop))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "release"} */
819 2 : ldv_partially_ordered_scenario_release_2_2(ldv_2_container_struct_hc_driver->stop, ldv_2_resource_struct_usb_hcd_ptr);
820 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
821 :
822 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Start with an initialization callback."} */
823 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
824 :
825 : /* Jump to a subprocess 'main' initial state */
826 1 : goto ldv_main_2;
827 1 : break;
828 : }
829 2 : default: ldv_stop();
830 1 : }
831 0 : /* End of the subprocess 'call' */
832 0 : return;
833 : /* LDV {"comment": "End of control function based on process 'partially_ordered_scenario(struct_hc_driver)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_partially_ordered_scenario_2"} */
834 : }
835 :
836 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_17 */
837 : void ldv_partially_ordered_scenario_callback_2_17(int (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
838 9 : ((& xhci_address_device))(arg1, arg2);
839 1 : }
840 :
841 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_18 */
842 : void ldv_partially_ordered_scenario_callback_2_18(int (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
843 6 : ((& xhci_alloc_dev))(arg1, arg2);
844 1 : }
845 :
846 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_19 */
847 : void ldv_partially_ordered_scenario_callback_2_19(int (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
848 5 : ((& xhci_check_bandwidth))(arg1, arg2);
849 1 : }
850 :
851 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_20 */
852 : void ldv_partially_ordered_scenario_callback_2_20(int (*arg0)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *arg1, struct usb_device *arg2, struct usb_host_endpoint *arg3) {
853 6 : ((& xhci_drop_endpoint))(arg1, arg2, arg3);
854 1 : }
855 :
856 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_21 */
857 : void ldv_partially_ordered_scenario_callback_2_21(void (*arg0)(struct usb_hcd *, struct usb_host_endpoint *), struct usb_hcd *arg1, struct usb_host_endpoint *arg2) {
858 6 : ((& xhci_endpoint_reset))(arg1, arg2);
859 1 : }
860 :
861 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_22 */
862 : void ldv_partially_ordered_scenario_callback_2_22(void (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
863 5 : ((& xhci_free_dev))(arg1, arg2);
864 1 : }
865 :
866 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_23 */
867 : void ldv_partially_ordered_scenario_callback_2_23(int (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
868 2 : ((& xhci_get_frame))(arg1);
869 1 : }
870 :
871 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_24 */
872 : void ldv_partially_ordered_scenario_callback_2_24(int (*arg0)(struct usb_hcd *, u16 , u16 , u16 , char *, u16 ), struct usb_hcd *arg1, short unsigned int arg2, short unsigned int arg3, short unsigned int arg4, char *arg5, short unsigned int arg6) {
873 2 : ((& xhci_hub_control))(arg1, arg2, arg3, arg4, arg5, arg6);
874 1 : }
875 :
876 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_27 */
877 : void ldv_partially_ordered_scenario_callback_2_27(int (*arg0)(struct usb_hcd *, char *), struct usb_hcd *arg1, char *arg2) {
878 2 : ((& xhci_hub_status_data))(arg1, arg2);
879 1 : }
880 :
881 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_30 */
882 : void ldv_partially_ordered_scenario_callback_2_30(irqreturn_t (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
883 4 : ((& xhci_irq))(arg1);
884 1 : }
885 :
886 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_31 */
887 : void ldv_partially_ordered_scenario_callback_2_31(int (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
888 5 : ((& xhci_pci_setup))(arg1);
889 1 : }
890 :
891 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_32 */
892 : void ldv_partially_ordered_scenario_callback_2_32(void (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
893 4 : ((& xhci_reset_bandwidth))(arg1, arg2);
894 1 : }
895 :
896 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_33 */
897 : void ldv_partially_ordered_scenario_callback_2_33(void (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
898 2 : ((& xhci_shutdown))(arg1);
899 1 : }
900 :
901 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_34 */
902 : void ldv_partially_ordered_scenario_callback_2_34(int (*arg0)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t ), struct usb_hcd *arg1, struct usb_device *arg2, struct usb_tt *arg3, unsigned int arg4) {
903 5 : ((& xhci_update_hub_device))(arg1, arg2, arg3, arg4);
904 1 : }
905 :
906 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_37 */
907 : void ldv_partially_ordered_scenario_callback_2_37(int (*arg0)(struct usb_hcd *, struct urb *, int), struct usb_hcd *arg1, struct urb *arg2, int arg3) {
908 3 : ((& xhci_urb_dequeue))(arg1, arg2, arg3);
909 1 : }
910 :
911 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_4 */
912 : void ldv_partially_ordered_scenario_callback_2_4(int (*arg0)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *arg1, struct usb_device *arg2, struct usb_host_endpoint *arg3) {
913 8 : ((& xhci_add_endpoint))(arg1, arg2, arg3);
914 1 : }
915 :
916 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_40 */
917 : void ldv_partially_ordered_scenario_callback_2_40(int (*arg0)(struct usb_hcd *, struct urb *, gfp_t ), struct usb_hcd *arg1, struct urb *arg2, unsigned int arg3) {
918 12 : ((& xhci_urb_enqueue))(arg1, arg2, arg3);
919 1 : }
920 :
921 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_probe_2_12 */
922 : int ldv_partially_ordered_scenario_probe_2_12(int (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
923 4 : return ((& xhci_run))(arg1);
924 1 : }
925 :
926 : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_release_2_2 */
927 : void ldv_partially_ordered_scenario_release_2_2(void (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
928 2 : ((& xhci_stop))(arg1);
929 1 : }
930 :
931 : /* AUX_FUNC ldv_pci_scenario_1 */
932 : void ldv_pci_scenario_1(void *arg0) {
933 : /* LDV {"thread": 1, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'pci_scenario(pci)'", "function": "ldv_pci_scenario_1"} */
934 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
935 1 : struct pci_driver *ldv_1_container_pci_driver;
936 1 : struct pci_dev *ldv_1_resource_dev;
937 1 : struct pm_message ldv_1_resource_pm_message;
938 1 : struct pci_device_id *ldv_1_resource_struct_pci_device_id_ptr;
939 1 : int ldv_1_ret_default;
940 1 : /* Received labels */
941 2 : struct ldv_struct_pci_scenario_1 *data = (struct ldv_struct_pci_scenario_1*) arg0;
942 1 :
943 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
944 1 : /* Initialize automaton variables */
945 1 : ldv_1_ret_default = 1;
946 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin PCI callbacks invocating."} */
947 : /* Assign recieved labels */
948 2 : if (data) {
949 1 : ldv_1_container_pci_driver = data->arg0;
950 2 : ldv_free(data);
951 : }
952 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
953 :
954 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for pci_dev structure."} */
955 5 : ldv_1_resource_dev = ldv_xmalloc(sizeof(struct pci_dev));
956 3 : ldv_1_resource_struct_pci_device_id_ptr = ldv_xmalloc_unknown_size(0);
957 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
958 :
959 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
960 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
961 :
962 : /* Jump to a subprocess 'main' initial state */
963 1 : goto ldv_main_1;
964 : /* End of the process */
965 : return;
966 1 :
967 : /* Sbprocess main */
968 : ldv_main_1:
969 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
970 :
971 4 : if (ldv_undef_int()) {
972 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Probe new PCI driver. Invoke callback probe from pci_driver."} */
973 : /* Callback pre-call */
974 1 : ldv_pre_probe();
975 : /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = ((& usb_hcd_pci_probe))(ldv_1_resource_dev, ldv_1_resource_struct_pci_device_id_ptr);", "comment": "probe"} */
976 3 : ldv_1_ret_default = ldv_pci_scenario_probe_1_17(ldv_1_container_pci_driver->probe, ldv_1_resource_dev, ldv_1_resource_struct_pci_device_id_ptr);
977 : /* Callback post-call */
978 2 : ldv_1_ret_default = ldv_post_probe(ldv_1_ret_default);
979 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
980 :
981 4 : if (ldv_undef_int()) {
982 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Probing of PCI driver has been successfull."} */
983 2 : ldv_assume(ldv_1_ret_default == 0);
984 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
985 :
986 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
987 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
988 :
989 : /* Jump to a subprocess 'call' initial state */
990 1 : goto ldv_call_1;
991 : }
992 : else {
993 : /* LDV {"action": "PROBE_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to probe PCI driver."} */
994 2 : ldv_assume(ldv_1_ret_default != 0);
995 : /* LDV {"action": "PROBE_FAILED", "type": "CONDITION_END"} */
996 :
997 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
998 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
999 :
1000 : /* Jump to a subprocess 'main' initial state */
1001 1 : goto ldv_main_1;
1002 : }
1003 : }
1004 : else {
1005 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of pci_dev structure."} */
1006 2 : ldv_free(ldv_1_resource_dev);
1007 2 : ldv_free(ldv_1_resource_struct_pci_device_id_ptr);
1008 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
1009 :
1010 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Stop PCI callbacks invocating."} */
1011 : /* Skip a non-replicative signal receiving */
1012 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1013 :
1014 : /* Exit function at a terminal state */
1015 1 : return;
1016 : }
1017 : /* End of the subprocess 'main' */
1018 : return;
1019 1 :
1020 : /* Sbprocess call */
1021 : ldv_call_1:
1022 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1023 :
1024 2 : switch (ldv_undef_int()) {
1025 3 : case 1: {
1026 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "comment": "Call callback 'callback' of a process 'pci_scenario' of an interface category 'pci'"} */
1027 : /* Skip callback without implementations */
1028 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1029 :
1030 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
1031 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1032 :
1033 : /* Jump to a subprocess 'call' initial state */
1034 1 : goto ldv_call_1;
1035 1 : break;
1036 : }
1037 3 : case 2: {
1038 : /* LDV {"action": "SUSPEND", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback suspend from PCI."} */
1039 3 : if (ldv_1_container_pci_driver->suspend) {
1040 : /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = (ldv_1_container_pci_driver->suspend)(ldv_1_resource_dev, ldv_1_resource_pm_message);", "comment": "suspend"} */
1041 2 : ldv_1_ret_default = ldv_pci_scenario_suspend_1_8(ldv_1_container_pci_driver->suspend, ldv_1_resource_dev, ldv_1_resource_pm_message);
1042 : }
1043 : /* Callback post-call */
1044 4 : ldv_1_ret_default = ldv_filter_err_code(ldv_1_ret_default);
1045 : /* LDV {"action": "SUSPEND", "type": "CALL_END"} */
1046 :
1047 : /* LDV {"action": "SUSPEND_LATE", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback suspend_late from PCI."} */
1048 3 : if (ldv_1_container_pci_driver->suspend_late) {
1049 : /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = (ldv_1_container_pci_driver->suspend_late)(ldv_1_resource_dev, ldv_1_resource_pm_message);", "comment": "suspend_late"} */
1050 2 : ldv_1_ret_default = ldv_pci_scenario_suspend_late_1_7(ldv_1_container_pci_driver->suspend_late, ldv_1_resource_dev, ldv_1_resource_pm_message);
1051 : }
1052 : /* Callback post-call */
1053 4 : ldv_1_ret_default = ldv_filter_err_code(ldv_1_ret_default);
1054 : /* LDV {"action": "SUSPEND_LATE", "type": "CALL_END"} */
1055 :
1056 : /* LDV {"action": "RESUME_EARLY", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback resume_early from PCI."} */
1057 3 : if (ldv_1_container_pci_driver->resume_early) {
1058 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_container_pci_driver->resume_early)(ldv_1_resource_dev);", "comment": "resume_early"} */
1059 2 : ldv_pci_scenario_resume_early_1_6(ldv_1_container_pci_driver->resume_early, ldv_1_resource_dev);
1060 : }
1061 : /* LDV {"action": "RESUME_EARLY", "type": "CALL_END"} */
1062 :
1063 : /* LDV {"action": "RESUME", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback resume from PCI."} */
1064 6 : if (ldv_1_container_pci_driver->resume) {
1065 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_container_pci_driver->resume)(ldv_1_resource_dev);", "comment": "resume"} */
1066 4 : ldv_pci_scenario_resume_1_5(ldv_1_container_pci_driver->resume, ldv_1_resource_dev);
1067 : }
1068 : /* LDV {"action": "RESUME", "type": "CALL_END"} */
1069 :
1070 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
1071 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1072 :
1073 : /* Jump to a subprocess 'call' initial state */
1074 3 : goto ldv_call_1;
1075 1 : break;
1076 : }
1077 3 : case 3: {
1078 : /* LDV {"action": "SHUTDOWN", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback shutdown from pci_driver."} */
1079 : /* LDV {"type": "CALLBACK", "call": "((& usb_hcd_pci_shutdown))(ldv_1_resource_dev);", "comment": "shutdown"} */
1080 2 : ldv_pci_scenario_shutdown_1_3(ldv_1_container_pci_driver->shutdown, ldv_1_resource_dev);
1081 : /* LDV {"action": "SHUTDOWN", "type": "CALL_END"} */
1082 :
1083 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback remove from pci_driver."} */
1084 : /* LDV {"type": "CALLBACK", "call": "((& usb_hcd_pci_remove))(ldv_1_resource_dev);", "comment": "release"} */
1085 2 : ldv_pci_scenario_release_1_2(ldv_1_container_pci_driver->remove, ldv_1_resource_dev);
1086 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
1087 :
1088 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
1089 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1090 :
1091 : /* Jump to a subprocess 'main' initial state */
1092 1 : goto ldv_main_1;
1093 1 : break;
1094 : }
1095 2 : default: ldv_stop();
1096 1 : }
1097 0 : /* End of the subprocess 'call' */
1098 0 : return;
1099 : /* LDV {"comment": "End of control function based on process 'pci_scenario(pci)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_pci_scenario_1"} */
1100 : }
1101 :
1102 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_probe_1_17 */
1103 : int ldv_pci_scenario_probe_1_17(int (*arg0)(struct pci_dev *, struct pci_device_id *), struct pci_dev *arg1, struct pci_device_id *arg2) {
1104 2 : return ((& usb_hcd_pci_probe))(arg1, arg2);
1105 : }
1106 1 :
1107 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_release_1_2 */
1108 : void ldv_pci_scenario_release_1_2(void (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
1109 1 : ((& usb_hcd_pci_remove))(arg1);
1110 1 : }
1111 :
1112 : /* AUX_FUNC_CALLBACK ldv_pci_scenario_shutdown_1_3 */
1113 : void ldv_pci_scenario_shutdown_1_3(void (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
1114 1 : ((& usb_hcd_pci_shutdown))(arg1);
1115 1 : }
1116 :
1117 :
1118 : /* AUX_FUNC ERR_PTR */
1119 : static inline void *ERR_PTR (long int error)
1120 : {
1121 :
1122 : return ldv_err_ptr(error);
1123 : }
1124 :
1125 : /* AUX_FUNC PTR_ERR */
1126 : static inline long int PTR_ERR (void const *ptr)
1127 : {
1128 :
1129 : return ldv_ptr_err(ptr);
1130 : }
1131 :
1132 : /* AUX_FUNC IS_ERR */
1133 : static inline long int IS_ERR (void const *ptr)
1134 : {
1135 :
1136 : return ldv_is_err(ptr);
1137 : }
1138 :
1139 : /* AUX_FUNC IS_ERR_OR_NULL */
1140 : static inline long int IS_ERR_OR_NULL (void const *ptr)
1141 : {
1142 :
1143 : return ldv_is_err_or_null(ptr);
1144 : }
1145 :
1146 : /* AUX_FUNC ldv_del_timer_sync_5 */
1147 : int ldv_del_timer_sync_5 (struct timer_list *ldv_func_arg1)
1148 : {
1149 :
1150 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer_sync'"} */
1151 : return ldv_emg_del_timer_sync(ldv_func_arg1);
1152 : }
1153 :
1154 : /* AUX_FUNC ldv_del_timer_6 */
1155 : int ldv_del_timer_6 (struct timer_list *ldv_func_arg1)
1156 : {
1157 :
1158 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer'"} */
1159 : return ldv_emg_del_timer(ldv_func_arg1);
1160 : }
1161 :
1162 : /* AUX_FUNC kzalloc */
1163 : static inline void *kzalloc (size_t size, gfp_t flags)
1164 : {
1165 :
1166 : return ldv_kzalloc(size, flags);
1167 : }
1168 :
1169 : /* AUX_FUNC ldv_dev_get_drvdata_8 */
1170 : void *ldv_dev_get_drvdata_8 (struct device const *dev)
1171 : {
1172 :
1173 : return ldv_dev_get_drvdata(dev);
1174 : }
1175 :
1176 : /* AUX_FUNC ldv_dev_get_drvdata_9 */
1177 : void *ldv_dev_get_drvdata_9 (struct device const *dev)
1178 : {
1179 :
1180 : return ldv_dev_get_drvdata(dev);
1181 : }
1182 :
1183 : /* AUX_FUNC ldv___pci_register_driver_10 */
1184 : int ldv___pci_register_driver_10 (struct pci_driver *ldv_func_arg1, struct module *ldv_func_arg2, char const *ldv_func_arg3)
1185 : {
1186 :
1187 1 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function '__pci_register_driver'"} */
1188 4 : return ldv_emg___pci_register_driver(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3);
1189 : }
1190 :
1191 : /* AUX_FUNC ldv_pci_unregister_driver_11 */
1192 : void ldv_pci_unregister_driver_11 (struct pci_driver *ldv_func_arg1)
1193 : {
1194 :
1195 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'pci_unregister_driver'"} */
1196 4 : ldv_emg_pci_unregister_driver(ldv_func_arg1);
1197 2 : }
|