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/cdev.h>
29 : #include <linux/miscdevice.h>
30 : #include <scsi/scsi_host.h>
31 : #include <linux/fs.h>
32 : #include <linux/seq_file.h>
33 : #include <linux/pagemap.h>
34 :
35 :
36 : struct ldv_struct_cdev_del_19 {
37 : struct file_operations *arg0;
38 : int signal_pending;
39 : };
40 1 :
41 : struct ldv_struct_insmod_18 {
42 : int signal_pending;
43 : };
44 1 :
45 : struct ldv_struct_random_containerless_scenario_15 {
46 : struct class_interface *arg0;
47 : int signal_pending;
48 : };
49 1 :
50 : struct ldv_struct_traverse_kernel_items_scenario_9 {
51 : struct seq_file *arg0;
52 : struct seq_operations *arg1;
53 : int signal_pending;
54 : };
55 :
56 : /* EMG Function declarations */
57 : void ldv_character_driver_scenario_1(void *);
58 : void ldv_character_driver_scenario_2(void *);
59 : void ldv_character_driver_scenario_3(void *);
60 : void ldv_character_driver_scenario_4(void *);
61 : void ldv_character_driver_scenario_5(void *);
62 : void ldv_character_driver_scenario_6(void *);
63 : void ldv_character_driver_scenario_7(void *);
64 : void ldv_character_driver_scenario_8(void *);
65 : void ldv_character_driver_scenario_callback_1_21(int (*)(int, struct file *, int), int, struct file *, int);
66 : void ldv_character_driver_scenario_callback_1_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
67 : void ldv_character_driver_scenario_callback_1_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
68 : void ldv_character_driver_scenario_callback_1_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
69 : void ldv_character_driver_scenario_callback_1_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
70 : void ldv_character_driver_scenario_callback_1_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
71 : void ldv_character_driver_scenario_callback_1_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
72 : void ldv_character_driver_scenario_callback_2_21(int (*)(int, struct file *, int), int, struct file *, int);
73 : void ldv_character_driver_scenario_callback_2_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
74 : void ldv_character_driver_scenario_callback_2_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
75 : void ldv_character_driver_scenario_callback_2_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
76 : void ldv_character_driver_scenario_callback_2_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
77 : void ldv_character_driver_scenario_callback_2_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
78 : void ldv_character_driver_scenario_callback_2_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
79 : void ldv_character_driver_scenario_callback_3_21(int (*)(int, struct file *, int), int, struct file *, int);
80 : void ldv_character_driver_scenario_callback_3_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
81 : void ldv_character_driver_scenario_callback_3_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
82 : void ldv_character_driver_scenario_callback_3_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
83 : void ldv_character_driver_scenario_callback_3_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
84 : void ldv_character_driver_scenario_callback_3_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
85 : void ldv_character_driver_scenario_callback_3_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
86 : void ldv_character_driver_scenario_callback_4_21(int (*)(int, struct file *, int), int, struct file *, int);
87 : void ldv_character_driver_scenario_callback_4_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
88 : void ldv_character_driver_scenario_callback_4_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
89 : void ldv_character_driver_scenario_callback_4_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
90 : void ldv_character_driver_scenario_callback_4_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
91 : void ldv_character_driver_scenario_callback_4_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
92 : void ldv_character_driver_scenario_callback_4_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
93 : void ldv_character_driver_scenario_callback_5_21(int (*)(int, struct file *, int), int, struct file *, int);
94 : void ldv_character_driver_scenario_callback_5_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
95 : void ldv_character_driver_scenario_callback_5_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
96 : void ldv_character_driver_scenario_callback_5_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
97 : void ldv_character_driver_scenario_callback_5_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
98 : void ldv_character_driver_scenario_callback_5_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
99 : void ldv_character_driver_scenario_callback_5_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
100 : void ldv_character_driver_scenario_callback_6_21(int (*)(int, struct file *, int), int, struct file *, int);
101 : void ldv_character_driver_scenario_callback_6_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
102 : void ldv_character_driver_scenario_callback_6_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
103 : void ldv_character_driver_scenario_callback_6_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
104 : void ldv_character_driver_scenario_callback_6_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
105 : void ldv_character_driver_scenario_callback_6_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
106 : void ldv_character_driver_scenario_callback_6_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
107 : void ldv_character_driver_scenario_callback_7_21(int (*)(int, struct file *, int), int, struct file *, int);
108 : void ldv_character_driver_scenario_callback_7_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
109 : void ldv_character_driver_scenario_callback_7_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
110 : void ldv_character_driver_scenario_callback_7_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
111 : void ldv_character_driver_scenario_callback_7_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
112 : void ldv_character_driver_scenario_callback_7_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
113 : void ldv_character_driver_scenario_callback_7_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
114 : void ldv_character_driver_scenario_callback_8_21(int (*)(int, struct file *, int), int, struct file *, int);
115 : void ldv_character_driver_scenario_callback_8_24(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
116 : void ldv_character_driver_scenario_callback_8_27(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
117 : void ldv_character_driver_scenario_callback_8_30(int (*)(struct file *, struct vm_area_struct *), struct file *, struct vm_area_struct *);
118 : void ldv_character_driver_scenario_callback_8_31(unsigned int (*)(struct file *, poll_table *), struct file *, poll_table *);
119 : void ldv_character_driver_scenario_callback_8_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
120 : void ldv_character_driver_scenario_callback_8_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
121 : int ldv_character_driver_scenario_probe_1_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
122 : int ldv_character_driver_scenario_probe_2_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
123 : int ldv_character_driver_scenario_probe_3_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
124 : int ldv_character_driver_scenario_probe_4_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
125 : int ldv_character_driver_scenario_probe_5_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
126 : int ldv_character_driver_scenario_probe_6_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
127 : int ldv_character_driver_scenario_probe_7_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
128 : int ldv_character_driver_scenario_probe_8_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
129 : void ldv_character_driver_scenario_release_1_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
130 : void ldv_character_driver_scenario_release_2_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
131 : void ldv_character_driver_scenario_release_3_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
132 : void ldv_character_driver_scenario_release_4_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
133 : void ldv_character_driver_scenario_release_5_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
134 : void ldv_character_driver_scenario_release_6_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
135 : void ldv_character_driver_scenario_release_7_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
136 : void ldv_character_driver_scenario_release_8_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
137 : void ldv_character_driver_scenario_write_1_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
138 : void ldv_character_driver_scenario_write_2_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
139 : void ldv_character_driver_scenario_write_3_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
140 : void ldv_character_driver_scenario_write_4_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
141 : void ldv_character_driver_scenario_write_5_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
142 : void ldv_character_driver_scenario_write_6_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
143 : void ldv_character_driver_scenario_write_7_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
144 : void ldv_character_driver_scenario_write_8_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
145 : void ldv_dispatch_default_deregister_4_18_6(void);
146 : void ldv_dispatch_default_deregister_8_18_4(void);
147 : void ldv_dispatch_default_deregister_9_18_5(void);
148 : void ldv_dispatch_default_register_3_18_7(void);
149 : void ldv_dispatch_default_register_8_18_9(void);
150 : void ldv_dispatch_default_register_9_18_8(void);
151 : void ldv_dispatch_deregister_19_1(struct file_operations *);
152 : void ldv_dispatch_deregister_21_1(struct class_interface *);
153 : void ldv_dispatch_insmod_deregister_23_2(void);
154 : void ldv_dispatch_insmod_register_23_3(void);
155 : void ldv_dispatch_register_20_1(struct seq_file *, struct seq_operations *);
156 : void ldv_dispatch_register_22_3(struct class_interface *);
157 : void ldv_emg_cdev_del(struct cdev *);
158 : void ldv_emg_class_interface_unregister(struct class_interface *);
159 : int ldv_emg_scsi_register_interface(struct class_interface *);
160 : int ldv_emg_seq_open(struct file *, struct seq_operations *);
161 : void ldv_insmod_18(void *);
162 : void ldv_insmod_exit_sg_18_2(void (*)(void));
163 : int ldv_insmod_init_sg_18_13(int (*)(void));
164 : void ldv_main_23(void *);
165 : void ldv_random_containerless_scenario_15(void *);
166 : void ldv_random_containerless_scenario_16(void *);
167 : void ldv_random_containerless_scenario_17(void *);
168 : void ldv_random_containerless_scenario_callback_15_3(int (*)(struct device *, struct class_interface *), struct device *, struct class_interface *);
169 : void ldv_random_containerless_scenario_callback_15_6(void (*)(struct device *, struct class_interface *), struct device *, struct class_interface *);
170 : void ldv_random_containerless_scenario_callback_16_10(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
171 : void ldv_random_containerless_scenario_callback_16_4(int (*)(char *, struct kernel_param *), char *, struct kernel_param *);
172 : void ldv_random_containerless_scenario_callback_17_4(int (*)(struct vm_area_struct *, struct vm_fault *), struct vm_area_struct *, struct vm_fault *);
173 : void ldv_traverse_kernel_items_scenario_10(void *);
174 : void ldv_traverse_kernel_items_scenario_11(void *);
175 : void ldv_traverse_kernel_items_scenario_12(void *);
176 : void ldv_traverse_kernel_items_scenario_13(void *);
177 : void ldv_traverse_kernel_items_scenario_14(void *);
178 : void ldv_traverse_kernel_items_scenario_9(void *);
179 : void *ldv_traverse_kernel_items_scenario_next_10_7(void *(*)(struct seq_file *, void *, loff_t *), struct seq_file *, void *, loff_t *);
180 : void *ldv_traverse_kernel_items_scenario_next_11_7(void *(*)(struct seq_file *, void *, loff_t *), struct seq_file *, void *, loff_t *);
181 : void *ldv_traverse_kernel_items_scenario_next_12_7(void *(*)(struct seq_file *, void *, loff_t *), struct seq_file *, void *, loff_t *);
182 : void *ldv_traverse_kernel_items_scenario_next_13_7(void *(*)(struct seq_file *, void *, loff_t *), struct seq_file *, void *, loff_t *);
183 : void *ldv_traverse_kernel_items_scenario_next_14_7(void *(*)(struct seq_file *, void *, loff_t *), struct seq_file *, void *, loff_t *);
184 : void *ldv_traverse_kernel_items_scenario_next_9_7(void *(*)(struct seq_file *, void *, loff_t *), struct seq_file *, void *, loff_t *);
185 : void ldv_traverse_kernel_items_scenario_show_10_6(int (*)(struct seq_file *, void *), struct seq_file *, void *);
186 : void ldv_traverse_kernel_items_scenario_show_11_6(int (*)(struct seq_file *, void *), struct seq_file *, void *);
187 : void ldv_traverse_kernel_items_scenario_show_12_6(int (*)(struct seq_file *, void *), struct seq_file *, void *);
188 : void ldv_traverse_kernel_items_scenario_show_13_6(int (*)(struct seq_file *, void *), struct seq_file *, void *);
189 : void ldv_traverse_kernel_items_scenario_show_14_6(int (*)(struct seq_file *, void *), struct seq_file *, void *);
190 : void ldv_traverse_kernel_items_scenario_show_9_6(int (*)(struct seq_file *, void *), struct seq_file *, void *);
191 : void *ldv_traverse_kernel_items_scenario_start_10_13(void *(*)(struct seq_file *, loff_t *), struct seq_file *, loff_t *);
192 : void *ldv_traverse_kernel_items_scenario_start_11_13(void *(*)(struct seq_file *, loff_t *), struct seq_file *, loff_t *);
193 : void *ldv_traverse_kernel_items_scenario_start_12_13(void *(*)(struct seq_file *, loff_t *), struct seq_file *, loff_t *);
194 : void *ldv_traverse_kernel_items_scenario_start_13_13(void *(*)(struct seq_file *, loff_t *), struct seq_file *, loff_t *);
195 : void *ldv_traverse_kernel_items_scenario_start_14_13(void *(*)(struct seq_file *, loff_t *), struct seq_file *, loff_t *);
196 : void *ldv_traverse_kernel_items_scenario_start_9_13(void *(*)(struct seq_file *, loff_t *), struct seq_file *, loff_t *);
197 : void ldv_traverse_kernel_items_scenario_stop_10_2(void (*)(struct seq_file *, void *), struct seq_file *, void *);
198 : void ldv_traverse_kernel_items_scenario_stop_11_2(void (*)(struct seq_file *, void *), struct seq_file *, void *);
199 : void ldv_traverse_kernel_items_scenario_stop_12_2(void (*)(struct seq_file *, void *), struct seq_file *, void *);
200 : void ldv_traverse_kernel_items_scenario_stop_13_2(void (*)(struct seq_file *, void *), struct seq_file *, void *);
201 : void ldv_traverse_kernel_items_scenario_stop_14_2(void (*)(struct seq_file *, void *), struct seq_file *, void *);
202 : void ldv_traverse_kernel_items_scenario_stop_9_2(void (*)(struct seq_file *, void *), struct seq_file *, void *);
203 : int main(void);
204 :
205 : /* EMG variable declarations */
206 1 : struct ldv_thread ldv_thread_1;
207 1 : struct ldv_thread ldv_thread_10;
208 1 : struct ldv_thread ldv_thread_11;
209 1 : struct ldv_thread ldv_thread_12;
210 1 : struct ldv_thread ldv_thread_13;
211 1 : struct ldv_thread ldv_thread_14;
212 1 : struct ldv_thread ldv_thread_15;
213 1 : struct ldv_thread ldv_thread_16;
214 1 : struct ldv_thread ldv_thread_17;
215 1 : struct ldv_thread ldv_thread_18;
216 1 : struct ldv_thread ldv_thread_2;
217 1 : struct ldv_thread ldv_thread_23;
218 1 : struct ldv_thread ldv_thread_3;
219 1 : struct ldv_thread ldv_thread_4;
220 1 : struct ldv_thread ldv_thread_5;
221 1 : struct ldv_thread ldv_thread_6;
222 1 : struct ldv_thread ldv_thread_7;
223 1 : struct ldv_thread ldv_thread_8;
224 1 : struct ldv_thread ldv_thread_9;
225 :
226 : /* EMG variable initialization */
227 :
228 : /* EMG function definitions */
229 : /* AUX_FUNC ldv_character_driver_scenario_1 */
230 : void ldv_character_driver_scenario_1(void *arg0) {
231 : /* LDV {"thread": 1, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_1"} */
232 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
233 1 : long int (*ldv_1_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
234 1 : int (*ldv_1_callback_fasync)(int, struct file *, int);
235 1 : int (*ldv_1_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
236 1 : loff_t (*ldv_1_callback_llseek)(struct file *, loff_t , int);
237 1 : int (*ldv_1_callback_mmap)(struct file *, struct vm_area_struct *);
238 1 : unsigned int (*ldv_1_callback_poll)(struct file *, poll_table *);
239 1 : ssize_t (*ldv_1_callback_read)(struct file *, char *, size_t , loff_t *);
240 1 : struct file_operations *ldv_1_container_file_operations;
241 1 : int ldv_1_ldv_param_21_0_default;
242 1 : int ldv_1_ldv_param_21_2_default;
243 1 : unsigned int ldv_1_ldv_param_24_2_default;
244 1 : long long int ldv_1_ldv_param_27_1_default;
245 1 : int ldv_1_ldv_param_27_2_default;
246 1 : char *ldv_1_ldv_param_32_1_default;
247 1 : long long int *ldv_1_ldv_param_32_3_default;
248 1 : char *ldv_1_ldv_param_4_1_default;
249 1 : long long int *ldv_1_ldv_param_4_3_default;
250 1 : unsigned int ldv_1_ldv_param_5_1_default;
251 1 : struct file *ldv_1_resource_file;
252 1 : struct inode *ldv_1_resource_inode;
253 1 : int ldv_1_ret_default;
254 1 : struct poll_table_struct *ldv_1_size_cnt_struct_poll_table_struct_ptr;
255 1 : struct vm_area_struct *ldv_1_size_cnt_struct_vm_area_struct_ptr;
256 1 : long unsigned int ldv_1_size_cnt_write_size;
257 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
258 1 : /* Initialize automaton variables */
259 2 : ldv_1_ret_default = 1;
260 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
261 3 : ldv_free(arg0);
262 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
263 1 :
264 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
265 4 : ldv_1_container_file_operations = ldv_xmalloc_unknown_size(0);
266 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
267 1 :
268 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
269 3 : ldv_1_resource_file = ldv_xmalloc(sizeof(struct file));
270 3 : ldv_1_resource_inode = ldv_xmalloc(sizeof(struct inode));
271 3 : ldv_1_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
272 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
273 :
274 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
275 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
276 :
277 : /* Jump to a subprocess 'main' initial state */
278 1 : goto ldv_main_1;
279 : /* End of the process */
280 : return;
281 1 :
282 : /* Sbprocess main */
283 : ldv_main_1:
284 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
285 :
286 4 : if (ldv_undef_int()) {
287 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
288 : /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = ((& sg_proc_single_open_adio))(ldv_1_resource_inode, ldv_1_resource_file);", "comment": "probe"} */
289 2 : ldv_1_ret_default = ldv_character_driver_scenario_probe_1_12(ldv_1_container_file_operations->open, ldv_1_resource_inode, ldv_1_resource_file);
290 : /* Callback post-call */
291 2 : ldv_1_ret_default = ldv_filter_err_code(ldv_1_ret_default);
292 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
293 :
294 4 : if (ldv_undef_int()) {
295 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
296 2 : ldv_assume(ldv_1_ret_default == 0);
297 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
298 :
299 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
300 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
301 :
302 : /* Jump to a subprocess 'call' initial state */
303 1 : goto ldv_call_1;
304 : }
305 : else {
306 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
307 2 : ldv_assume(ldv_1_ret_default != 0);
308 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
309 :
310 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
311 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
312 :
313 : /* Jump to a subprocess 'main' initial state */
314 1 : goto ldv_main_1;
315 : }
316 : }
317 : else {
318 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
319 2 : ldv_free(ldv_1_resource_file);
320 2 : ldv_free(ldv_1_resource_inode);
321 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
322 :
323 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
324 : /* Skip a non-replicative signal receiving */
325 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
326 :
327 : /* Exit function at a terminal state */
328 1 : return;
329 : }
330 : /* End of the subprocess 'main' */
331 : return;
332 1 :
333 : /* Sbprocess call */
334 : ldv_call_1:
335 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
336 :
337 2 : switch (ldv_undef_int()) {
338 3 : case 1: {
339 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
340 3 : ldv_1_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
341 3 : ldv_1_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
342 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
343 :
344 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from file_operations."} */
345 : /* Callback pre-call */
346 2 : ldv_assume(ldv_1_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
347 : /* LDV {"type": "CALLBACK", "call": "((& sg_proc_write_adio))(ldv_1_resource_file, ldv_1_ldv_param_4_1_default, ldv_1_size_cnt_write_size, ldv_1_ldv_param_4_3_default);", "comment": "write"} */
348 3 : ldv_character_driver_scenario_write_1_4(ldv_1_container_file_operations->write, ldv_1_resource_file, ldv_1_ldv_param_4_1_default, ldv_1_size_cnt_write_size, ldv_1_ldv_param_4_3_default);
349 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
350 :
351 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
352 2 : ldv_free(ldv_1_ldv_param_4_1_default);
353 2 : ldv_free(ldv_1_ldv_param_4_3_default);
354 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
355 :
356 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
357 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
358 :
359 : /* Jump to a subprocess 'call' initial state */
360 1 : goto ldv_call_1;
361 1 : break;
362 : }
363 3 : case 2: {
364 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
365 : /* LDV {"type": "CALLBACK", "call": "((& single_release))(ldv_1_resource_inode, ldv_1_resource_file);", "comment": "release"} */
366 2 : ldv_character_driver_scenario_release_1_2(ldv_1_container_file_operations->release, ldv_1_resource_inode, ldv_1_resource_file);
367 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
368 :
369 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
370 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
371 :
372 : /* Jump to a subprocess 'main' initial state */
373 1 : goto ldv_main_1;
374 1 : break;
375 : }
376 3 : case 3: {
377 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
378 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
379 :
380 2 : switch (ldv_undef_int()) {
381 3 : case 1: {
382 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
383 3 : ldv_1_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
384 3 : ldv_1_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
385 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
386 :
387 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
388 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_1_resource_file, ldv_1_ldv_param_32_1_default, ldv_1_size_cnt_write_size, ldv_1_ldv_param_32_3_default);", "comment": "callback"} */
389 2 : ldv_character_driver_scenario_callback_1_32(ldv_1_callback_read, ldv_1_resource_file, ldv_1_ldv_param_32_1_default, ldv_1_size_cnt_write_size, ldv_1_ldv_param_32_3_default);
390 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
391 :
392 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
393 2 : ldv_free(ldv_1_ldv_param_32_1_default);
394 2 : ldv_free(ldv_1_ldv_param_32_3_default);
395 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
396 :
397 1 : break;
398 1 : }
399 3 : case 2: {
400 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
401 2 : if (ldv_1_callback_poll) {
402 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_callback_poll)(ldv_1_resource_file, ldv_1_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
403 2 : ldv_character_driver_scenario_callback_1_31(ldv_1_callback_poll, ldv_1_resource_file, ldv_1_size_cnt_struct_poll_table_struct_ptr);
404 : }
405 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
406 :
407 2 : break;
408 1 : }
409 3 : case 3: {
410 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
411 2 : if (ldv_1_callback_mmap) {
412 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_callback_mmap)(ldv_1_resource_file, ldv_1_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
413 2 : ldv_character_driver_scenario_callback_1_30(ldv_1_callback_mmap, ldv_1_resource_file, ldv_1_size_cnt_struct_vm_area_struct_ptr);
414 : }
415 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
416 :
417 2 : break;
418 1 : }
419 3 : case 4: {
420 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
421 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
422 :
423 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
424 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_1_resource_file, ldv_1_ldv_param_27_1_default, ldv_1_ldv_param_27_2_default);", "comment": "callback"} */
425 2 : ldv_character_driver_scenario_callback_1_27(ldv_1_callback_llseek, ldv_1_resource_file, ldv_1_ldv_param_27_1_default, ldv_1_ldv_param_27_2_default);
426 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
427 :
428 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
429 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
430 :
431 1 : break;
432 1 : }
433 3 : case 5: {
434 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
435 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
436 :
437 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
438 2 : if (ldv_1_callback_ioctl) {
439 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_callback_ioctl)(ldv_1_resource_inode, ldv_1_resource_file, ldv_1_ldv_param_24_2_default, ldv_1_size_cnt_write_size);", "comment": "callback"} */
440 2 : ldv_character_driver_scenario_callback_1_24(ldv_1_callback_ioctl, ldv_1_resource_inode, ldv_1_resource_file, ldv_1_ldv_param_24_2_default, ldv_1_size_cnt_write_size);
441 : }
442 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
443 :
444 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
445 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
446 :
447 2 : break;
448 1 : }
449 3 : case 6: {
450 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
451 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
452 :
453 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
454 2 : if (ldv_1_callback_fasync) {
455 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_callback_fasync)(ldv_1_ldv_param_21_0_default, ldv_1_resource_file, ldv_1_ldv_param_21_2_default);", "comment": "callback"} */
456 2 : ldv_character_driver_scenario_callback_1_21(ldv_1_callback_fasync, ldv_1_ldv_param_21_0_default, ldv_1_resource_file, ldv_1_ldv_param_21_2_default);
457 : }
458 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
459 :
460 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
461 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
462 :
463 2 : break;
464 1 : }
465 3 : case 7: {
466 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
467 2 : if (ldv_1_callback_compat_ioctl) {
468 : /* LDV {"type": "CALLBACK", "call": "(ldv_1_callback_compat_ioctl)(ldv_1_resource_file, ldv_1_ldv_param_5_1_default, ldv_1_size_cnt_write_size);", "comment": "callback"} */
469 2 : ldv_character_driver_scenario_callback_1_5(ldv_1_callback_compat_ioctl, ldv_1_resource_file, ldv_1_ldv_param_5_1_default, ldv_1_size_cnt_write_size);
470 : }
471 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
472 :
473 2 : break;
474 1 : }
475 2 : default: ldv_stop();
476 1 : }
477 8 : break;
478 1 : }
479 2 : default: ldv_stop();
480 1 : }
481 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
482 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
483 0 :
484 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
485 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
486 :
487 : /* Jump to a subprocess 'call' initial state */
488 8 : goto ldv_call_1;
489 : /* Jump to a subprocess 'call' initial state */
490 : goto ldv_call_1;
491 : /* End of the subprocess 'call' */
492 : return;
493 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_1"} */
494 : }
495 :
496 : /* AUX_FUNC ldv_character_driver_scenario_2 */
497 : void ldv_character_driver_scenario_2(void *arg0) {
498 : /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_2"} */
499 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
500 1 : long int (*ldv_2_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
501 1 : int (*ldv_2_callback_fasync)(int, struct file *, int);
502 1 : int (*ldv_2_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
503 1 : loff_t (*ldv_2_callback_llseek)(struct file *, loff_t , int);
504 1 : int (*ldv_2_callback_mmap)(struct file *, struct vm_area_struct *);
505 1 : unsigned int (*ldv_2_callback_poll)(struct file *, poll_table *);
506 1 : ssize_t (*ldv_2_callback_read)(struct file *, char *, size_t , loff_t *);
507 1 : struct file_operations *ldv_2_container_file_operations;
508 1 : int ldv_2_ldv_param_21_0_default;
509 1 : int ldv_2_ldv_param_21_2_default;
510 1 : unsigned int ldv_2_ldv_param_24_2_default;
511 1 : long long int ldv_2_ldv_param_27_1_default;
512 1 : int ldv_2_ldv_param_27_2_default;
513 1 : char *ldv_2_ldv_param_32_1_default;
514 1 : long long int *ldv_2_ldv_param_32_3_default;
515 1 : char *ldv_2_ldv_param_4_1_default;
516 1 : long long int *ldv_2_ldv_param_4_3_default;
517 1 : unsigned int ldv_2_ldv_param_5_1_default;
518 1 : struct file *ldv_2_resource_file;
519 1 : struct inode *ldv_2_resource_inode;
520 1 : int ldv_2_ret_default;
521 1 : struct poll_table_struct *ldv_2_size_cnt_struct_poll_table_struct_ptr;
522 1 : struct vm_area_struct *ldv_2_size_cnt_struct_vm_area_struct_ptr;
523 1 : long unsigned int ldv_2_size_cnt_write_size;
524 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
525 1 : /* Initialize automaton variables */
526 2 : ldv_2_ret_default = 1;
527 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
528 3 : ldv_free(arg0);
529 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
530 1 :
531 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
532 4 : ldv_2_container_file_operations = ldv_xmalloc_unknown_size(0);
533 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
534 1 :
535 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
536 3 : ldv_2_resource_file = ldv_xmalloc(sizeof(struct file));
537 3 : ldv_2_resource_inode = ldv_xmalloc(sizeof(struct inode));
538 3 : ldv_2_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
539 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
540 :
541 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
542 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
543 :
544 : /* Jump to a subprocess 'main' initial state */
545 1 : goto ldv_main_2;
546 : /* End of the process */
547 : return;
548 1 :
549 : /* Sbprocess main */
550 : ldv_main_2:
551 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
552 :
553 4 : if (ldv_undef_int()) {
554 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
555 : /* LDV {"type": "CALLBACK", "call": "ldv_2_ret_default = ((& sg_proc_open_debug))(ldv_2_resource_inode, ldv_2_resource_file);", "comment": "probe"} */
556 2 : ldv_2_ret_default = ldv_character_driver_scenario_probe_2_12(ldv_2_container_file_operations->open, ldv_2_resource_inode, ldv_2_resource_file);
557 : /* Callback post-call */
558 2 : ldv_2_ret_default = ldv_filter_err_code(ldv_2_ret_default);
559 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
560 :
561 4 : if (ldv_undef_int()) {
562 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
563 2 : ldv_assume(ldv_2_ret_default == 0);
564 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
565 :
566 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
567 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
568 :
569 : /* Jump to a subprocess 'call' initial state */
570 1 : goto ldv_call_2;
571 : }
572 : else {
573 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
574 2 : ldv_assume(ldv_2_ret_default != 0);
575 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
576 :
577 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
578 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
579 :
580 : /* Jump to a subprocess 'main' initial state */
581 1 : goto ldv_main_2;
582 : }
583 : }
584 : else {
585 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
586 2 : ldv_free(ldv_2_resource_file);
587 2 : ldv_free(ldv_2_resource_inode);
588 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
589 :
590 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
591 : /* Skip a non-replicative signal receiving */
592 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
593 :
594 : /* Exit function at a terminal state */
595 1 : return;
596 : }
597 : /* End of the subprocess 'main' */
598 : return;
599 1 :
600 : /* Sbprocess call */
601 : ldv_call_2:
602 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
603 :
604 2 : switch (ldv_undef_int()) {
605 3 : case 1: {
606 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
607 3 : ldv_2_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
608 3 : ldv_2_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
609 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
610 :
611 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
612 : /* Callback pre-call */
613 2 : ldv_assume(ldv_2_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
614 3 : if (ldv_2_container_file_operations->write) {
615 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_container_file_operations->write)(ldv_2_resource_file, ldv_2_ldv_param_4_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_4_3_default);", "comment": "write"} */
616 3 : ldv_character_driver_scenario_write_2_4(ldv_2_container_file_operations->write, ldv_2_resource_file, ldv_2_ldv_param_4_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_4_3_default);
617 : }
618 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
619 :
620 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
621 4 : ldv_free(ldv_2_ldv_param_4_1_default);
622 2 : ldv_free(ldv_2_ldv_param_4_3_default);
623 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
624 :
625 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
626 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
627 :
628 : /* Jump to a subprocess 'call' initial state */
629 1 : goto ldv_call_2;
630 1 : break;
631 : }
632 3 : case 2: {
633 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
634 : /* LDV {"type": "CALLBACK", "call": "((& seq_release))(ldv_2_resource_inode, ldv_2_resource_file);", "comment": "release"} */
635 2 : ldv_character_driver_scenario_release_2_2(ldv_2_container_file_operations->release, ldv_2_resource_inode, ldv_2_resource_file);
636 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
637 :
638 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
639 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
640 :
641 : /* Jump to a subprocess 'main' initial state */
642 1 : goto ldv_main_2;
643 1 : break;
644 : }
645 3 : case 3: {
646 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
647 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
648 :
649 2 : switch (ldv_undef_int()) {
650 3 : case 1: {
651 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
652 3 : ldv_2_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
653 3 : ldv_2_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
654 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
655 :
656 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
657 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_2_resource_file, ldv_2_ldv_param_32_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_32_3_default);", "comment": "callback"} */
658 2 : ldv_character_driver_scenario_callback_2_32(ldv_2_callback_read, ldv_2_resource_file, ldv_2_ldv_param_32_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_32_3_default);
659 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
660 :
661 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
662 2 : ldv_free(ldv_2_ldv_param_32_1_default);
663 2 : ldv_free(ldv_2_ldv_param_32_3_default);
664 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
665 :
666 1 : break;
667 1 : }
668 3 : case 2: {
669 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
670 2 : if (ldv_2_callback_poll) {
671 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_poll)(ldv_2_resource_file, ldv_2_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
672 2 : ldv_character_driver_scenario_callback_2_31(ldv_2_callback_poll, ldv_2_resource_file, ldv_2_size_cnt_struct_poll_table_struct_ptr);
673 : }
674 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
675 :
676 2 : break;
677 1 : }
678 3 : case 3: {
679 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
680 2 : if (ldv_2_callback_mmap) {
681 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_mmap)(ldv_2_resource_file, ldv_2_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
682 2 : ldv_character_driver_scenario_callback_2_30(ldv_2_callback_mmap, ldv_2_resource_file, ldv_2_size_cnt_struct_vm_area_struct_ptr);
683 : }
684 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
685 :
686 2 : break;
687 1 : }
688 3 : case 4: {
689 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
690 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
691 :
692 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
693 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_2_resource_file, ldv_2_ldv_param_27_1_default, ldv_2_ldv_param_27_2_default);", "comment": "callback"} */
694 2 : ldv_character_driver_scenario_callback_2_27(ldv_2_callback_llseek, ldv_2_resource_file, ldv_2_ldv_param_27_1_default, ldv_2_ldv_param_27_2_default);
695 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
696 :
697 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
698 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
699 :
700 1 : break;
701 1 : }
702 3 : case 5: {
703 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
704 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
705 :
706 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
707 2 : if (ldv_2_callback_ioctl) {
708 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_ioctl)(ldv_2_resource_inode, ldv_2_resource_file, ldv_2_ldv_param_24_2_default, ldv_2_size_cnt_write_size);", "comment": "callback"} */
709 2 : ldv_character_driver_scenario_callback_2_24(ldv_2_callback_ioctl, ldv_2_resource_inode, ldv_2_resource_file, ldv_2_ldv_param_24_2_default, ldv_2_size_cnt_write_size);
710 : }
711 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
712 :
713 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
714 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
715 :
716 2 : break;
717 1 : }
718 3 : case 6: {
719 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
720 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
721 :
722 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
723 2 : if (ldv_2_callback_fasync) {
724 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_fasync)(ldv_2_ldv_param_21_0_default, ldv_2_resource_file, ldv_2_ldv_param_21_2_default);", "comment": "callback"} */
725 2 : ldv_character_driver_scenario_callback_2_21(ldv_2_callback_fasync, ldv_2_ldv_param_21_0_default, ldv_2_resource_file, ldv_2_ldv_param_21_2_default);
726 : }
727 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
728 :
729 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
730 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
731 :
732 2 : break;
733 1 : }
734 3 : case 7: {
735 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
736 2 : if (ldv_2_callback_compat_ioctl) {
737 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_compat_ioctl)(ldv_2_resource_file, ldv_2_ldv_param_5_1_default, ldv_2_size_cnt_write_size);", "comment": "callback"} */
738 2 : ldv_character_driver_scenario_callback_2_5(ldv_2_callback_compat_ioctl, ldv_2_resource_file, ldv_2_ldv_param_5_1_default, ldv_2_size_cnt_write_size);
739 : }
740 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
741 :
742 2 : break;
743 1 : }
744 2 : default: ldv_stop();
745 1 : }
746 8 : break;
747 1 : }
748 2 : default: ldv_stop();
749 1 : }
750 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
751 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
752 0 :
753 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
754 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
755 :
756 : /* Jump to a subprocess 'call' initial state */
757 8 : goto ldv_call_2;
758 : /* Jump to a subprocess 'call' initial state */
759 : goto ldv_call_2;
760 : /* End of the subprocess 'call' */
761 : return;
762 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_2"} */
763 : }
764 :
765 : /* AUX_FUNC ldv_character_driver_scenario_3 */
766 : void ldv_character_driver_scenario_3(void *arg0) {
767 : /* LDV {"thread": 3, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_3"} */
768 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
769 1 : long int (*ldv_3_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
770 1 : int (*ldv_3_callback_fasync)(int, struct file *, int);
771 1 : int (*ldv_3_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
772 1 : loff_t (*ldv_3_callback_llseek)(struct file *, loff_t , int);
773 1 : int (*ldv_3_callback_mmap)(struct file *, struct vm_area_struct *);
774 1 : unsigned int (*ldv_3_callback_poll)(struct file *, poll_table *);
775 1 : ssize_t (*ldv_3_callback_read)(struct file *, char *, size_t , loff_t *);
776 1 : struct file_operations *ldv_3_container_file_operations;
777 1 : int ldv_3_ldv_param_21_0_default;
778 1 : int ldv_3_ldv_param_21_2_default;
779 1 : unsigned int ldv_3_ldv_param_24_2_default;
780 1 : long long int ldv_3_ldv_param_27_1_default;
781 1 : int ldv_3_ldv_param_27_2_default;
782 1 : char *ldv_3_ldv_param_32_1_default;
783 1 : long long int *ldv_3_ldv_param_32_3_default;
784 1 : char *ldv_3_ldv_param_4_1_default;
785 1 : long long int *ldv_3_ldv_param_4_3_default;
786 1 : unsigned int ldv_3_ldv_param_5_1_default;
787 1 : struct file *ldv_3_resource_file;
788 1 : struct inode *ldv_3_resource_inode;
789 1 : int ldv_3_ret_default;
790 1 : struct poll_table_struct *ldv_3_size_cnt_struct_poll_table_struct_ptr;
791 1 : struct vm_area_struct *ldv_3_size_cnt_struct_vm_area_struct_ptr;
792 1 : long unsigned int ldv_3_size_cnt_write_size;
793 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
794 1 : /* Initialize automaton variables */
795 2 : ldv_3_ret_default = 1;
796 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
797 3 : ldv_free(arg0);
798 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
799 1 :
800 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
801 4 : ldv_3_container_file_operations = ldv_xmalloc_unknown_size(0);
802 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
803 1 :
804 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
805 3 : ldv_3_resource_file = ldv_xmalloc(sizeof(struct file));
806 3 : ldv_3_resource_inode = ldv_xmalloc(sizeof(struct inode));
807 3 : ldv_3_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
808 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
809 :
810 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
811 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
812 :
813 : /* Jump to a subprocess 'main' initial state */
814 1 : goto ldv_main_3;
815 : /* End of the process */
816 : return;
817 1 :
818 : /* Sbprocess main */
819 : ldv_main_3:
820 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
821 :
822 4 : if (ldv_undef_int()) {
823 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
824 : /* LDV {"type": "CALLBACK", "call": "ldv_3_ret_default = ((& sg_proc_open_dev))(ldv_3_resource_inode, ldv_3_resource_file);", "comment": "probe"} */
825 2 : ldv_3_ret_default = ldv_character_driver_scenario_probe_3_12(ldv_3_container_file_operations->open, ldv_3_resource_inode, ldv_3_resource_file);
826 : /* Callback post-call */
827 2 : ldv_3_ret_default = ldv_filter_err_code(ldv_3_ret_default);
828 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
829 :
830 4 : if (ldv_undef_int()) {
831 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
832 2 : ldv_assume(ldv_3_ret_default == 0);
833 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
834 :
835 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
836 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
837 :
838 : /* Jump to a subprocess 'call' initial state */
839 1 : goto ldv_call_3;
840 : }
841 : else {
842 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
843 2 : ldv_assume(ldv_3_ret_default != 0);
844 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
845 :
846 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
847 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
848 :
849 : /* Jump to a subprocess 'main' initial state */
850 1 : goto ldv_main_3;
851 : }
852 : }
853 : else {
854 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
855 2 : ldv_free(ldv_3_resource_file);
856 2 : ldv_free(ldv_3_resource_inode);
857 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
858 :
859 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
860 : /* Skip a non-replicative signal receiving */
861 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
862 :
863 : /* Exit function at a terminal state */
864 1 : return;
865 : }
866 : /* End of the subprocess 'main' */
867 : return;
868 1 :
869 : /* Sbprocess call */
870 : ldv_call_3:
871 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
872 :
873 2 : switch (ldv_undef_int()) {
874 3 : case 1: {
875 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
876 3 : ldv_3_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
877 3 : ldv_3_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
878 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
879 :
880 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
881 : /* Callback pre-call */
882 2 : ldv_assume(ldv_3_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
883 3 : if (ldv_3_container_file_operations->write) {
884 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_container_file_operations->write)(ldv_3_resource_file, ldv_3_ldv_param_4_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_4_3_default);", "comment": "write"} */
885 3 : ldv_character_driver_scenario_write_3_4(ldv_3_container_file_operations->write, ldv_3_resource_file, ldv_3_ldv_param_4_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_4_3_default);
886 : }
887 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
888 :
889 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
890 4 : ldv_free(ldv_3_ldv_param_4_1_default);
891 2 : ldv_free(ldv_3_ldv_param_4_3_default);
892 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
893 :
894 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
895 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
896 :
897 : /* Jump to a subprocess 'call' initial state */
898 1 : goto ldv_call_3;
899 1 : break;
900 : }
901 3 : case 2: {
902 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
903 : /* LDV {"type": "CALLBACK", "call": "((& seq_release))(ldv_3_resource_inode, ldv_3_resource_file);", "comment": "release"} */
904 2 : ldv_character_driver_scenario_release_3_2(ldv_3_container_file_operations->release, ldv_3_resource_inode, ldv_3_resource_file);
905 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
906 :
907 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
908 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
909 :
910 : /* Jump to a subprocess 'main' initial state */
911 1 : goto ldv_main_3;
912 1 : break;
913 : }
914 3 : case 3: {
915 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
916 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
917 :
918 2 : switch (ldv_undef_int()) {
919 3 : case 1: {
920 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
921 3 : ldv_3_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
922 3 : ldv_3_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
923 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
924 :
925 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
926 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_3_resource_file, ldv_3_ldv_param_32_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_32_3_default);", "comment": "callback"} */
927 2 : ldv_character_driver_scenario_callback_3_32(ldv_3_callback_read, ldv_3_resource_file, ldv_3_ldv_param_32_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_32_3_default);
928 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
929 :
930 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
931 2 : ldv_free(ldv_3_ldv_param_32_1_default);
932 2 : ldv_free(ldv_3_ldv_param_32_3_default);
933 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
934 :
935 1 : break;
936 1 : }
937 3 : case 2: {
938 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
939 2 : if (ldv_3_callback_poll) {
940 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_poll)(ldv_3_resource_file, ldv_3_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
941 2 : ldv_character_driver_scenario_callback_3_31(ldv_3_callback_poll, ldv_3_resource_file, ldv_3_size_cnt_struct_poll_table_struct_ptr);
942 : }
943 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
944 :
945 2 : break;
946 1 : }
947 3 : case 3: {
948 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
949 2 : if (ldv_3_callback_mmap) {
950 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_mmap)(ldv_3_resource_file, ldv_3_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
951 2 : ldv_character_driver_scenario_callback_3_30(ldv_3_callback_mmap, ldv_3_resource_file, ldv_3_size_cnt_struct_vm_area_struct_ptr);
952 : }
953 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
954 :
955 2 : break;
956 1 : }
957 3 : case 4: {
958 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
959 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
960 :
961 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
962 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_3_resource_file, ldv_3_ldv_param_27_1_default, ldv_3_ldv_param_27_2_default);", "comment": "callback"} */
963 2 : ldv_character_driver_scenario_callback_3_27(ldv_3_callback_llseek, ldv_3_resource_file, ldv_3_ldv_param_27_1_default, ldv_3_ldv_param_27_2_default);
964 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
965 :
966 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
967 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
968 :
969 1 : break;
970 1 : }
971 3 : case 5: {
972 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
973 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
974 :
975 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
976 2 : if (ldv_3_callback_ioctl) {
977 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_ioctl)(ldv_3_resource_inode, ldv_3_resource_file, ldv_3_ldv_param_24_2_default, ldv_3_size_cnt_write_size);", "comment": "callback"} */
978 2 : ldv_character_driver_scenario_callback_3_24(ldv_3_callback_ioctl, ldv_3_resource_inode, ldv_3_resource_file, ldv_3_ldv_param_24_2_default, ldv_3_size_cnt_write_size);
979 : }
980 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
981 :
982 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
983 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
984 :
985 2 : break;
986 1 : }
987 3 : case 6: {
988 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
989 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
990 :
991 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
992 2 : if (ldv_3_callback_fasync) {
993 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_fasync)(ldv_3_ldv_param_21_0_default, ldv_3_resource_file, ldv_3_ldv_param_21_2_default);", "comment": "callback"} */
994 2 : ldv_character_driver_scenario_callback_3_21(ldv_3_callback_fasync, ldv_3_ldv_param_21_0_default, ldv_3_resource_file, ldv_3_ldv_param_21_2_default);
995 : }
996 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
997 :
998 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
999 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
1000 :
1001 2 : break;
1002 1 : }
1003 3 : case 7: {
1004 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1005 2 : if (ldv_3_callback_compat_ioctl) {
1006 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_compat_ioctl)(ldv_3_resource_file, ldv_3_ldv_param_5_1_default, ldv_3_size_cnt_write_size);", "comment": "callback"} */
1007 2 : ldv_character_driver_scenario_callback_3_5(ldv_3_callback_compat_ioctl, ldv_3_resource_file, ldv_3_ldv_param_5_1_default, ldv_3_size_cnt_write_size);
1008 : }
1009 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1010 :
1011 2 : break;
1012 1 : }
1013 2 : default: ldv_stop();
1014 1 : }
1015 8 : break;
1016 1 : }
1017 2 : default: ldv_stop();
1018 1 : }
1019 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1020 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
1021 0 :
1022 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1023 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1024 :
1025 : /* Jump to a subprocess 'call' initial state */
1026 8 : goto ldv_call_3;
1027 : /* Jump to a subprocess 'call' initial state */
1028 : goto ldv_call_3;
1029 : /* End of the subprocess 'call' */
1030 : return;
1031 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_3"} */
1032 : }
1033 :
1034 : /* AUX_FUNC ldv_character_driver_scenario_4 */
1035 : void ldv_character_driver_scenario_4(void *arg0) {
1036 : /* LDV {"thread": 4, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_4"} */
1037 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1038 1 : long int (*ldv_4_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
1039 1 : int (*ldv_4_callback_fasync)(int, struct file *, int);
1040 1 : int (*ldv_4_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
1041 1 : loff_t (*ldv_4_callback_llseek)(struct file *, loff_t , int);
1042 1 : int (*ldv_4_callback_mmap)(struct file *, struct vm_area_struct *);
1043 1 : unsigned int (*ldv_4_callback_poll)(struct file *, poll_table *);
1044 1 : ssize_t (*ldv_4_callback_read)(struct file *, char *, size_t , loff_t *);
1045 1 : struct file_operations *ldv_4_container_file_operations;
1046 1 : int ldv_4_ldv_param_21_0_default;
1047 1 : int ldv_4_ldv_param_21_2_default;
1048 1 : unsigned int ldv_4_ldv_param_24_2_default;
1049 1 : long long int ldv_4_ldv_param_27_1_default;
1050 1 : int ldv_4_ldv_param_27_2_default;
1051 1 : char *ldv_4_ldv_param_32_1_default;
1052 1 : long long int *ldv_4_ldv_param_32_3_default;
1053 1 : char *ldv_4_ldv_param_4_1_default;
1054 1 : long long int *ldv_4_ldv_param_4_3_default;
1055 1 : unsigned int ldv_4_ldv_param_5_1_default;
1056 1 : struct file *ldv_4_resource_file;
1057 1 : struct inode *ldv_4_resource_inode;
1058 1 : int ldv_4_ret_default;
1059 1 : struct poll_table_struct *ldv_4_size_cnt_struct_poll_table_struct_ptr;
1060 1 : struct vm_area_struct *ldv_4_size_cnt_struct_vm_area_struct_ptr;
1061 1 : long unsigned int ldv_4_size_cnt_write_size;
1062 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1063 1 : /* Initialize automaton variables */
1064 2 : ldv_4_ret_default = 1;
1065 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
1066 3 : ldv_free(arg0);
1067 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
1068 1 :
1069 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1070 4 : ldv_4_container_file_operations = ldv_xmalloc_unknown_size(0);
1071 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
1072 1 :
1073 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
1074 3 : ldv_4_resource_file = ldv_xmalloc(sizeof(struct file));
1075 3 : ldv_4_resource_inode = ldv_xmalloc(sizeof(struct inode));
1076 3 : ldv_4_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
1077 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
1078 :
1079 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1080 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1081 :
1082 : /* Jump to a subprocess 'main' initial state */
1083 1 : goto ldv_main_4;
1084 : /* End of the process */
1085 : return;
1086 1 :
1087 : /* Sbprocess main */
1088 : ldv_main_4:
1089 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1090 :
1091 4 : if (ldv_undef_int()) {
1092 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
1093 : /* LDV {"type": "CALLBACK", "call": "ldv_4_ret_default = ((& sg_proc_single_open_devhdr))(ldv_4_resource_inode, ldv_4_resource_file);", "comment": "probe"} */
1094 2 : ldv_4_ret_default = ldv_character_driver_scenario_probe_4_12(ldv_4_container_file_operations->open, ldv_4_resource_inode, ldv_4_resource_file);
1095 : /* Callback post-call */
1096 2 : ldv_4_ret_default = ldv_filter_err_code(ldv_4_ret_default);
1097 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
1098 :
1099 4 : if (ldv_undef_int()) {
1100 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
1101 2 : ldv_assume(ldv_4_ret_default == 0);
1102 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
1103 :
1104 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1105 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1106 :
1107 : /* Jump to a subprocess 'call' initial state */
1108 1 : goto ldv_call_4;
1109 : }
1110 : else {
1111 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
1112 2 : ldv_assume(ldv_4_ret_default != 0);
1113 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
1114 :
1115 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1116 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1117 :
1118 : /* Jump to a subprocess 'main' initial state */
1119 1 : goto ldv_main_4;
1120 : }
1121 : }
1122 : else {
1123 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
1124 2 : ldv_free(ldv_4_resource_file);
1125 2 : ldv_free(ldv_4_resource_inode);
1126 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
1127 :
1128 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
1129 : /* Skip a non-replicative signal receiving */
1130 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1131 :
1132 : /* Exit function at a terminal state */
1133 1 : return;
1134 : }
1135 : /* End of the subprocess 'main' */
1136 : return;
1137 1 :
1138 : /* Sbprocess call */
1139 : ldv_call_4:
1140 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1141 :
1142 2 : switch (ldv_undef_int()) {
1143 3 : case 1: {
1144 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1145 3 : ldv_4_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
1146 3 : ldv_4_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
1147 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1148 :
1149 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
1150 : /* Callback pre-call */
1151 2 : ldv_assume(ldv_4_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
1152 3 : if (ldv_4_container_file_operations->write) {
1153 : /* LDV {"type": "CALLBACK", "call": "(ldv_4_container_file_operations->write)(ldv_4_resource_file, ldv_4_ldv_param_4_1_default, ldv_4_size_cnt_write_size, ldv_4_ldv_param_4_3_default);", "comment": "write"} */
1154 3 : ldv_character_driver_scenario_write_4_4(ldv_4_container_file_operations->write, ldv_4_resource_file, ldv_4_ldv_param_4_1_default, ldv_4_size_cnt_write_size, ldv_4_ldv_param_4_3_default);
1155 : }
1156 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
1157 :
1158 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1159 4 : ldv_free(ldv_4_ldv_param_4_1_default);
1160 2 : ldv_free(ldv_4_ldv_param_4_3_default);
1161 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1162 :
1163 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1164 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1165 :
1166 : /* Jump to a subprocess 'call' initial state */
1167 1 : goto ldv_call_4;
1168 1 : break;
1169 : }
1170 3 : case 2: {
1171 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
1172 : /* LDV {"type": "CALLBACK", "call": "((& single_release))(ldv_4_resource_inode, ldv_4_resource_file);", "comment": "release"} */
1173 2 : ldv_character_driver_scenario_release_4_2(ldv_4_container_file_operations->release, ldv_4_resource_inode, ldv_4_resource_file);
1174 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
1175 :
1176 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1177 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1178 :
1179 : /* Jump to a subprocess 'main' initial state */
1180 1 : goto ldv_main_4;
1181 1 : break;
1182 : }
1183 3 : case 3: {
1184 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1185 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
1186 :
1187 2 : switch (ldv_undef_int()) {
1188 3 : case 1: {
1189 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1190 3 : ldv_4_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
1191 3 : ldv_4_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
1192 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
1193 :
1194 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
1195 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_4_resource_file, ldv_4_ldv_param_32_1_default, ldv_4_size_cnt_write_size, ldv_4_ldv_param_32_3_default);", "comment": "callback"} */
1196 2 : ldv_character_driver_scenario_callback_4_32(ldv_4_callback_read, ldv_4_resource_file, ldv_4_ldv_param_32_1_default, ldv_4_size_cnt_write_size, ldv_4_ldv_param_32_3_default);
1197 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1198 :
1199 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1200 2 : ldv_free(ldv_4_ldv_param_32_1_default);
1201 2 : ldv_free(ldv_4_ldv_param_32_3_default);
1202 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
1203 :
1204 1 : break;
1205 1 : }
1206 3 : case 2: {
1207 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1208 2 : if (ldv_4_callback_poll) {
1209 : /* LDV {"type": "CALLBACK", "call": "(ldv_4_callback_poll)(ldv_4_resource_file, ldv_4_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
1210 2 : ldv_character_driver_scenario_callback_4_31(ldv_4_callback_poll, ldv_4_resource_file, ldv_4_size_cnt_struct_poll_table_struct_ptr);
1211 : }
1212 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1213 :
1214 2 : break;
1215 1 : }
1216 3 : case 3: {
1217 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1218 2 : if (ldv_4_callback_mmap) {
1219 : /* LDV {"type": "CALLBACK", "call": "(ldv_4_callback_mmap)(ldv_4_resource_file, ldv_4_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
1220 2 : ldv_character_driver_scenario_callback_4_30(ldv_4_callback_mmap, ldv_4_resource_file, ldv_4_size_cnt_struct_vm_area_struct_ptr);
1221 : }
1222 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1223 :
1224 2 : break;
1225 1 : }
1226 3 : case 4: {
1227 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1228 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
1229 :
1230 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
1231 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_4_resource_file, ldv_4_ldv_param_27_1_default, ldv_4_ldv_param_27_2_default);", "comment": "callback"} */
1232 2 : ldv_character_driver_scenario_callback_4_27(ldv_4_callback_llseek, ldv_4_resource_file, ldv_4_ldv_param_27_1_default, ldv_4_ldv_param_27_2_default);
1233 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1234 :
1235 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1236 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
1237 :
1238 1 : break;
1239 1 : }
1240 3 : case 5: {
1241 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1242 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
1243 :
1244 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1245 2 : if (ldv_4_callback_ioctl) {
1246 : /* LDV {"type": "CALLBACK", "call": "(ldv_4_callback_ioctl)(ldv_4_resource_inode, ldv_4_resource_file, ldv_4_ldv_param_24_2_default, ldv_4_size_cnt_write_size);", "comment": "callback"} */
1247 2 : ldv_character_driver_scenario_callback_4_24(ldv_4_callback_ioctl, ldv_4_resource_inode, ldv_4_resource_file, ldv_4_ldv_param_24_2_default, ldv_4_size_cnt_write_size);
1248 : }
1249 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1250 :
1251 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1252 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
1253 :
1254 2 : break;
1255 1 : }
1256 3 : case 6: {
1257 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1258 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
1259 :
1260 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1261 2 : if (ldv_4_callback_fasync) {
1262 : /* LDV {"type": "CALLBACK", "call": "(ldv_4_callback_fasync)(ldv_4_ldv_param_21_0_default, ldv_4_resource_file, ldv_4_ldv_param_21_2_default);", "comment": "callback"} */
1263 2 : ldv_character_driver_scenario_callback_4_21(ldv_4_callback_fasync, ldv_4_ldv_param_21_0_default, ldv_4_resource_file, ldv_4_ldv_param_21_2_default);
1264 : }
1265 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1266 :
1267 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1268 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
1269 :
1270 2 : break;
1271 1 : }
1272 3 : case 7: {
1273 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1274 2 : if (ldv_4_callback_compat_ioctl) {
1275 : /* LDV {"type": "CALLBACK", "call": "(ldv_4_callback_compat_ioctl)(ldv_4_resource_file, ldv_4_ldv_param_5_1_default, ldv_4_size_cnt_write_size);", "comment": "callback"} */
1276 2 : ldv_character_driver_scenario_callback_4_5(ldv_4_callback_compat_ioctl, ldv_4_resource_file, ldv_4_ldv_param_5_1_default, ldv_4_size_cnt_write_size);
1277 : }
1278 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1279 :
1280 2 : break;
1281 1 : }
1282 2 : default: ldv_stop();
1283 1 : }
1284 8 : break;
1285 1 : }
1286 2 : default: ldv_stop();
1287 1 : }
1288 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1289 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
1290 0 :
1291 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1292 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1293 :
1294 : /* Jump to a subprocess 'call' initial state */
1295 8 : goto ldv_call_4;
1296 : /* Jump to a subprocess 'call' initial state */
1297 : goto ldv_call_4;
1298 : /* End of the subprocess 'call' */
1299 : return;
1300 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_4"} */
1301 : }
1302 :
1303 : /* AUX_FUNC ldv_character_driver_scenario_5 */
1304 : void ldv_character_driver_scenario_5(void *arg0) {
1305 : /* LDV {"thread": 5, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_5"} */
1306 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1307 1 : long int (*ldv_5_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
1308 1 : int (*ldv_5_callback_fasync)(int, struct file *, int);
1309 1 : int (*ldv_5_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
1310 1 : loff_t (*ldv_5_callback_llseek)(struct file *, loff_t , int);
1311 1 : int (*ldv_5_callback_mmap)(struct file *, struct vm_area_struct *);
1312 1 : unsigned int (*ldv_5_callback_poll)(struct file *, poll_table *);
1313 1 : ssize_t (*ldv_5_callback_read)(struct file *, char *, size_t , loff_t *);
1314 1 : struct file_operations *ldv_5_container_file_operations;
1315 1 : int ldv_5_ldv_param_21_0_default;
1316 1 : int ldv_5_ldv_param_21_2_default;
1317 1 : unsigned int ldv_5_ldv_param_24_2_default;
1318 1 : long long int ldv_5_ldv_param_27_1_default;
1319 1 : int ldv_5_ldv_param_27_2_default;
1320 1 : char *ldv_5_ldv_param_32_1_default;
1321 1 : long long int *ldv_5_ldv_param_32_3_default;
1322 1 : char *ldv_5_ldv_param_4_1_default;
1323 1 : long long int *ldv_5_ldv_param_4_3_default;
1324 1 : unsigned int ldv_5_ldv_param_5_1_default;
1325 1 : struct file *ldv_5_resource_file;
1326 1 : struct inode *ldv_5_resource_inode;
1327 1 : int ldv_5_ret_default;
1328 1 : struct poll_table_struct *ldv_5_size_cnt_struct_poll_table_struct_ptr;
1329 1 : struct vm_area_struct *ldv_5_size_cnt_struct_vm_area_struct_ptr;
1330 1 : long unsigned int ldv_5_size_cnt_write_size;
1331 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1332 1 : /* Initialize automaton variables */
1333 2 : ldv_5_ret_default = 1;
1334 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
1335 3 : ldv_free(arg0);
1336 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
1337 1 :
1338 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1339 4 : ldv_5_container_file_operations = ldv_xmalloc_unknown_size(0);
1340 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
1341 1 :
1342 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
1343 3 : ldv_5_resource_file = ldv_xmalloc(sizeof(struct file));
1344 3 : ldv_5_resource_inode = ldv_xmalloc(sizeof(struct inode));
1345 3 : ldv_5_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
1346 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
1347 :
1348 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1349 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1350 :
1351 : /* Jump to a subprocess 'main' initial state */
1352 1 : goto ldv_main_5;
1353 : /* End of the process */
1354 : return;
1355 1 :
1356 : /* Sbprocess main */
1357 : ldv_main_5:
1358 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1359 :
1360 4 : if (ldv_undef_int()) {
1361 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
1362 : /* LDV {"type": "CALLBACK", "call": "ldv_5_ret_default = ((& sg_proc_open_devstrs))(ldv_5_resource_inode, ldv_5_resource_file);", "comment": "probe"} */
1363 2 : ldv_5_ret_default = ldv_character_driver_scenario_probe_5_12(ldv_5_container_file_operations->open, ldv_5_resource_inode, ldv_5_resource_file);
1364 : /* Callback post-call */
1365 2 : ldv_5_ret_default = ldv_filter_err_code(ldv_5_ret_default);
1366 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
1367 :
1368 4 : if (ldv_undef_int()) {
1369 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
1370 2 : ldv_assume(ldv_5_ret_default == 0);
1371 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
1372 :
1373 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1374 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1375 :
1376 : /* Jump to a subprocess 'call' initial state */
1377 1 : goto ldv_call_5;
1378 : }
1379 : else {
1380 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
1381 2 : ldv_assume(ldv_5_ret_default != 0);
1382 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
1383 :
1384 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1385 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1386 :
1387 : /* Jump to a subprocess 'main' initial state */
1388 1 : goto ldv_main_5;
1389 : }
1390 : }
1391 : else {
1392 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
1393 2 : ldv_free(ldv_5_resource_file);
1394 2 : ldv_free(ldv_5_resource_inode);
1395 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
1396 :
1397 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
1398 : /* Skip a non-replicative signal receiving */
1399 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1400 :
1401 : /* Exit function at a terminal state */
1402 1 : return;
1403 : }
1404 : /* End of the subprocess 'main' */
1405 : return;
1406 1 :
1407 : /* Sbprocess call */
1408 : ldv_call_5:
1409 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1410 :
1411 2 : switch (ldv_undef_int()) {
1412 3 : case 1: {
1413 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1414 3 : ldv_5_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
1415 3 : ldv_5_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
1416 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1417 :
1418 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
1419 : /* Callback pre-call */
1420 2 : ldv_assume(ldv_5_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
1421 3 : if (ldv_5_container_file_operations->write) {
1422 : /* LDV {"type": "CALLBACK", "call": "(ldv_5_container_file_operations->write)(ldv_5_resource_file, ldv_5_ldv_param_4_1_default, ldv_5_size_cnt_write_size, ldv_5_ldv_param_4_3_default);", "comment": "write"} */
1423 3 : ldv_character_driver_scenario_write_5_4(ldv_5_container_file_operations->write, ldv_5_resource_file, ldv_5_ldv_param_4_1_default, ldv_5_size_cnt_write_size, ldv_5_ldv_param_4_3_default);
1424 : }
1425 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
1426 :
1427 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1428 4 : ldv_free(ldv_5_ldv_param_4_1_default);
1429 2 : ldv_free(ldv_5_ldv_param_4_3_default);
1430 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1431 :
1432 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1433 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1434 :
1435 : /* Jump to a subprocess 'call' initial state */
1436 1 : goto ldv_call_5;
1437 1 : break;
1438 : }
1439 3 : case 2: {
1440 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
1441 : /* LDV {"type": "CALLBACK", "call": "((& seq_release))(ldv_5_resource_inode, ldv_5_resource_file);", "comment": "release"} */
1442 2 : ldv_character_driver_scenario_release_5_2(ldv_5_container_file_operations->release, ldv_5_resource_inode, ldv_5_resource_file);
1443 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
1444 :
1445 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1446 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1447 :
1448 : /* Jump to a subprocess 'main' initial state */
1449 1 : goto ldv_main_5;
1450 1 : break;
1451 : }
1452 3 : case 3: {
1453 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1454 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
1455 :
1456 2 : switch (ldv_undef_int()) {
1457 3 : case 1: {
1458 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1459 3 : ldv_5_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
1460 3 : ldv_5_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
1461 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
1462 :
1463 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
1464 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_5_resource_file, ldv_5_ldv_param_32_1_default, ldv_5_size_cnt_write_size, ldv_5_ldv_param_32_3_default);", "comment": "callback"} */
1465 2 : ldv_character_driver_scenario_callback_5_32(ldv_5_callback_read, ldv_5_resource_file, ldv_5_ldv_param_32_1_default, ldv_5_size_cnt_write_size, ldv_5_ldv_param_32_3_default);
1466 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1467 :
1468 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1469 2 : ldv_free(ldv_5_ldv_param_32_1_default);
1470 2 : ldv_free(ldv_5_ldv_param_32_3_default);
1471 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
1472 :
1473 1 : break;
1474 1 : }
1475 3 : case 2: {
1476 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1477 2 : if (ldv_5_callback_poll) {
1478 : /* LDV {"type": "CALLBACK", "call": "(ldv_5_callback_poll)(ldv_5_resource_file, ldv_5_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
1479 2 : ldv_character_driver_scenario_callback_5_31(ldv_5_callback_poll, ldv_5_resource_file, ldv_5_size_cnt_struct_poll_table_struct_ptr);
1480 : }
1481 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1482 :
1483 2 : break;
1484 1 : }
1485 3 : case 3: {
1486 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1487 2 : if (ldv_5_callback_mmap) {
1488 : /* LDV {"type": "CALLBACK", "call": "(ldv_5_callback_mmap)(ldv_5_resource_file, ldv_5_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
1489 2 : ldv_character_driver_scenario_callback_5_30(ldv_5_callback_mmap, ldv_5_resource_file, ldv_5_size_cnt_struct_vm_area_struct_ptr);
1490 : }
1491 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1492 :
1493 2 : break;
1494 1 : }
1495 3 : case 4: {
1496 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1497 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
1498 :
1499 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
1500 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_5_resource_file, ldv_5_ldv_param_27_1_default, ldv_5_ldv_param_27_2_default);", "comment": "callback"} */
1501 2 : ldv_character_driver_scenario_callback_5_27(ldv_5_callback_llseek, ldv_5_resource_file, ldv_5_ldv_param_27_1_default, ldv_5_ldv_param_27_2_default);
1502 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1503 :
1504 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1505 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
1506 :
1507 1 : break;
1508 1 : }
1509 3 : case 5: {
1510 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1511 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
1512 :
1513 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1514 2 : if (ldv_5_callback_ioctl) {
1515 : /* LDV {"type": "CALLBACK", "call": "(ldv_5_callback_ioctl)(ldv_5_resource_inode, ldv_5_resource_file, ldv_5_ldv_param_24_2_default, ldv_5_size_cnt_write_size);", "comment": "callback"} */
1516 2 : ldv_character_driver_scenario_callback_5_24(ldv_5_callback_ioctl, ldv_5_resource_inode, ldv_5_resource_file, ldv_5_ldv_param_24_2_default, ldv_5_size_cnt_write_size);
1517 : }
1518 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1519 :
1520 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1521 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
1522 :
1523 2 : break;
1524 1 : }
1525 3 : case 6: {
1526 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1527 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
1528 :
1529 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1530 2 : if (ldv_5_callback_fasync) {
1531 : /* LDV {"type": "CALLBACK", "call": "(ldv_5_callback_fasync)(ldv_5_ldv_param_21_0_default, ldv_5_resource_file, ldv_5_ldv_param_21_2_default);", "comment": "callback"} */
1532 2 : ldv_character_driver_scenario_callback_5_21(ldv_5_callback_fasync, ldv_5_ldv_param_21_0_default, ldv_5_resource_file, ldv_5_ldv_param_21_2_default);
1533 : }
1534 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1535 :
1536 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1537 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
1538 :
1539 2 : break;
1540 1 : }
1541 3 : case 7: {
1542 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1543 2 : if (ldv_5_callback_compat_ioctl) {
1544 : /* LDV {"type": "CALLBACK", "call": "(ldv_5_callback_compat_ioctl)(ldv_5_resource_file, ldv_5_ldv_param_5_1_default, ldv_5_size_cnt_write_size);", "comment": "callback"} */
1545 2 : ldv_character_driver_scenario_callback_5_5(ldv_5_callback_compat_ioctl, ldv_5_resource_file, ldv_5_ldv_param_5_1_default, ldv_5_size_cnt_write_size);
1546 : }
1547 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1548 :
1549 2 : break;
1550 1 : }
1551 2 : default: ldv_stop();
1552 1 : }
1553 8 : break;
1554 1 : }
1555 2 : default: ldv_stop();
1556 1 : }
1557 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1558 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
1559 0 :
1560 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1561 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1562 :
1563 : /* Jump to a subprocess 'call' initial state */
1564 8 : goto ldv_call_5;
1565 : /* Jump to a subprocess 'call' initial state */
1566 : goto ldv_call_5;
1567 : /* End of the subprocess 'call' */
1568 : return;
1569 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_5"} */
1570 : }
1571 :
1572 : /* AUX_FUNC ldv_character_driver_scenario_6 */
1573 : void ldv_character_driver_scenario_6(void *arg0) {
1574 : /* LDV {"thread": 6, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_6"} */
1575 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1576 1 : long int (*ldv_6_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
1577 1 : int (*ldv_6_callback_fasync)(int, struct file *, int);
1578 1 : int (*ldv_6_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
1579 1 : loff_t (*ldv_6_callback_llseek)(struct file *, loff_t , int);
1580 1 : int (*ldv_6_callback_mmap)(struct file *, struct vm_area_struct *);
1581 1 : unsigned int (*ldv_6_callback_poll)(struct file *, poll_table *);
1582 1 : ssize_t (*ldv_6_callback_read)(struct file *, char *, size_t , loff_t *);
1583 1 : struct file_operations *ldv_6_container_file_operations;
1584 1 : int ldv_6_ldv_param_21_0_default;
1585 1 : int ldv_6_ldv_param_21_2_default;
1586 1 : unsigned int ldv_6_ldv_param_24_2_default;
1587 1 : long long int ldv_6_ldv_param_27_1_default;
1588 1 : int ldv_6_ldv_param_27_2_default;
1589 1 : char *ldv_6_ldv_param_32_1_default;
1590 1 : long long int *ldv_6_ldv_param_32_3_default;
1591 1 : char *ldv_6_ldv_param_4_1_default;
1592 1 : long long int *ldv_6_ldv_param_4_3_default;
1593 1 : unsigned int ldv_6_ldv_param_5_1_default;
1594 1 : struct file *ldv_6_resource_file;
1595 1 : struct inode *ldv_6_resource_inode;
1596 1 : int ldv_6_ret_default;
1597 1 : struct poll_table_struct *ldv_6_size_cnt_struct_poll_table_struct_ptr;
1598 1 : struct vm_area_struct *ldv_6_size_cnt_struct_vm_area_struct_ptr;
1599 1 : long unsigned int ldv_6_size_cnt_write_size;
1600 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1601 1 : /* Initialize automaton variables */
1602 2 : ldv_6_ret_default = 1;
1603 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
1604 3 : ldv_free(arg0);
1605 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
1606 1 :
1607 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1608 4 : ldv_6_container_file_operations = ldv_xmalloc_unknown_size(0);
1609 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
1610 1 :
1611 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
1612 3 : ldv_6_resource_file = ldv_xmalloc(sizeof(struct file));
1613 3 : ldv_6_resource_inode = ldv_xmalloc(sizeof(struct inode));
1614 3 : ldv_6_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
1615 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
1616 :
1617 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1618 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1619 :
1620 : /* Jump to a subprocess 'main' initial state */
1621 1 : goto ldv_main_6;
1622 : /* End of the process */
1623 : return;
1624 1 :
1625 : /* Sbprocess main */
1626 : ldv_main_6:
1627 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1628 :
1629 4 : if (ldv_undef_int()) {
1630 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
1631 : /* LDV {"type": "CALLBACK", "call": "ldv_6_ret_default = ((& sg_proc_single_open_dressz))(ldv_6_resource_inode, ldv_6_resource_file);", "comment": "probe"} */
1632 2 : ldv_6_ret_default = ldv_character_driver_scenario_probe_6_12(ldv_6_container_file_operations->open, ldv_6_resource_inode, ldv_6_resource_file);
1633 : /* Callback post-call */
1634 2 : ldv_6_ret_default = ldv_filter_err_code(ldv_6_ret_default);
1635 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
1636 :
1637 4 : if (ldv_undef_int()) {
1638 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
1639 2 : ldv_assume(ldv_6_ret_default == 0);
1640 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
1641 :
1642 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1643 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1644 :
1645 : /* Jump to a subprocess 'call' initial state */
1646 1 : goto ldv_call_6;
1647 : }
1648 : else {
1649 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
1650 2 : ldv_assume(ldv_6_ret_default != 0);
1651 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
1652 :
1653 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1654 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1655 :
1656 : /* Jump to a subprocess 'main' initial state */
1657 1 : goto ldv_main_6;
1658 : }
1659 : }
1660 : else {
1661 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
1662 2 : ldv_free(ldv_6_resource_file);
1663 2 : ldv_free(ldv_6_resource_inode);
1664 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
1665 :
1666 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
1667 : /* Skip a non-replicative signal receiving */
1668 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1669 :
1670 : /* Exit function at a terminal state */
1671 1 : return;
1672 : }
1673 : /* End of the subprocess 'main' */
1674 : return;
1675 1 :
1676 : /* Sbprocess call */
1677 : ldv_call_6:
1678 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1679 :
1680 2 : switch (ldv_undef_int()) {
1681 3 : case 1: {
1682 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1683 3 : ldv_6_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
1684 3 : ldv_6_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
1685 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1686 :
1687 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from file_operations."} */
1688 : /* Callback pre-call */
1689 2 : ldv_assume(ldv_6_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
1690 : /* LDV {"type": "CALLBACK", "call": "((& sg_proc_write_dressz))(ldv_6_resource_file, ldv_6_ldv_param_4_1_default, ldv_6_size_cnt_write_size, ldv_6_ldv_param_4_3_default);", "comment": "write"} */
1691 3 : ldv_character_driver_scenario_write_6_4(ldv_6_container_file_operations->write, ldv_6_resource_file, ldv_6_ldv_param_4_1_default, ldv_6_size_cnt_write_size, ldv_6_ldv_param_4_3_default);
1692 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
1693 :
1694 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1695 2 : ldv_free(ldv_6_ldv_param_4_1_default);
1696 2 : ldv_free(ldv_6_ldv_param_4_3_default);
1697 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1698 :
1699 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1700 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1701 :
1702 : /* Jump to a subprocess 'call' initial state */
1703 1 : goto ldv_call_6;
1704 1 : break;
1705 : }
1706 3 : case 2: {
1707 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
1708 : /* LDV {"type": "CALLBACK", "call": "((& single_release))(ldv_6_resource_inode, ldv_6_resource_file);", "comment": "release"} */
1709 2 : ldv_character_driver_scenario_release_6_2(ldv_6_container_file_operations->release, ldv_6_resource_inode, ldv_6_resource_file);
1710 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
1711 :
1712 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1713 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1714 :
1715 : /* Jump to a subprocess 'main' initial state */
1716 1 : goto ldv_main_6;
1717 1 : break;
1718 : }
1719 3 : case 3: {
1720 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1721 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
1722 :
1723 2 : switch (ldv_undef_int()) {
1724 3 : case 1: {
1725 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1726 3 : ldv_6_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
1727 3 : ldv_6_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
1728 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
1729 :
1730 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
1731 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_6_resource_file, ldv_6_ldv_param_32_1_default, ldv_6_size_cnt_write_size, ldv_6_ldv_param_32_3_default);", "comment": "callback"} */
1732 2 : ldv_character_driver_scenario_callback_6_32(ldv_6_callback_read, ldv_6_resource_file, ldv_6_ldv_param_32_1_default, ldv_6_size_cnt_write_size, ldv_6_ldv_param_32_3_default);
1733 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1734 :
1735 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1736 2 : ldv_free(ldv_6_ldv_param_32_1_default);
1737 2 : ldv_free(ldv_6_ldv_param_32_3_default);
1738 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
1739 :
1740 1 : break;
1741 1 : }
1742 3 : case 2: {
1743 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1744 2 : if (ldv_6_callback_poll) {
1745 : /* LDV {"type": "CALLBACK", "call": "(ldv_6_callback_poll)(ldv_6_resource_file, ldv_6_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
1746 2 : ldv_character_driver_scenario_callback_6_31(ldv_6_callback_poll, ldv_6_resource_file, ldv_6_size_cnt_struct_poll_table_struct_ptr);
1747 : }
1748 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1749 :
1750 2 : break;
1751 1 : }
1752 3 : case 3: {
1753 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1754 2 : if (ldv_6_callback_mmap) {
1755 : /* LDV {"type": "CALLBACK", "call": "(ldv_6_callback_mmap)(ldv_6_resource_file, ldv_6_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
1756 2 : ldv_character_driver_scenario_callback_6_30(ldv_6_callback_mmap, ldv_6_resource_file, ldv_6_size_cnt_struct_vm_area_struct_ptr);
1757 : }
1758 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1759 :
1760 2 : break;
1761 1 : }
1762 3 : case 4: {
1763 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1764 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
1765 :
1766 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
1767 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_6_resource_file, ldv_6_ldv_param_27_1_default, ldv_6_ldv_param_27_2_default);", "comment": "callback"} */
1768 2 : ldv_character_driver_scenario_callback_6_27(ldv_6_callback_llseek, ldv_6_resource_file, ldv_6_ldv_param_27_1_default, ldv_6_ldv_param_27_2_default);
1769 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1770 :
1771 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1772 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
1773 :
1774 1 : break;
1775 1 : }
1776 3 : case 5: {
1777 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1778 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
1779 :
1780 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1781 2 : if (ldv_6_callback_ioctl) {
1782 : /* LDV {"type": "CALLBACK", "call": "(ldv_6_callback_ioctl)(ldv_6_resource_inode, ldv_6_resource_file, ldv_6_ldv_param_24_2_default, ldv_6_size_cnt_write_size);", "comment": "callback"} */
1783 2 : ldv_character_driver_scenario_callback_6_24(ldv_6_callback_ioctl, ldv_6_resource_inode, ldv_6_resource_file, ldv_6_ldv_param_24_2_default, ldv_6_size_cnt_write_size);
1784 : }
1785 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1786 :
1787 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1788 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
1789 :
1790 2 : break;
1791 1 : }
1792 3 : case 6: {
1793 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1794 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
1795 :
1796 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1797 2 : if (ldv_6_callback_fasync) {
1798 : /* LDV {"type": "CALLBACK", "call": "(ldv_6_callback_fasync)(ldv_6_ldv_param_21_0_default, ldv_6_resource_file, ldv_6_ldv_param_21_2_default);", "comment": "callback"} */
1799 2 : ldv_character_driver_scenario_callback_6_21(ldv_6_callback_fasync, ldv_6_ldv_param_21_0_default, ldv_6_resource_file, ldv_6_ldv_param_21_2_default);
1800 : }
1801 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1802 :
1803 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1804 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
1805 :
1806 2 : break;
1807 1 : }
1808 3 : case 7: {
1809 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
1810 2 : if (ldv_6_callback_compat_ioctl) {
1811 : /* LDV {"type": "CALLBACK", "call": "(ldv_6_callback_compat_ioctl)(ldv_6_resource_file, ldv_6_ldv_param_5_1_default, ldv_6_size_cnt_write_size);", "comment": "callback"} */
1812 2 : ldv_character_driver_scenario_callback_6_5(ldv_6_callback_compat_ioctl, ldv_6_resource_file, ldv_6_ldv_param_5_1_default, ldv_6_size_cnt_write_size);
1813 : }
1814 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1815 :
1816 2 : break;
1817 1 : }
1818 2 : default: ldv_stop();
1819 1 : }
1820 8 : break;
1821 1 : }
1822 2 : default: ldv_stop();
1823 1 : }
1824 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1825 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
1826 0 :
1827 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1828 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1829 :
1830 : /* Jump to a subprocess 'call' initial state */
1831 8 : goto ldv_call_6;
1832 : /* Jump to a subprocess 'call' initial state */
1833 : goto ldv_call_6;
1834 : /* End of the subprocess 'call' */
1835 : return;
1836 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_6"} */
1837 : }
1838 :
1839 : /* AUX_FUNC ldv_character_driver_scenario_7 */
1840 : void ldv_character_driver_scenario_7(void *arg0) {
1841 : /* LDV {"thread": 7, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_7"} */
1842 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1843 1 : long int (*ldv_7_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
1844 1 : int (*ldv_7_callback_fasync)(int, struct file *, int);
1845 1 : int (*ldv_7_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
1846 1 : loff_t (*ldv_7_callback_llseek)(struct file *, loff_t , int);
1847 1 : int (*ldv_7_callback_mmap)(struct file *, struct vm_area_struct *);
1848 1 : unsigned int (*ldv_7_callback_poll)(struct file *, poll_table *);
1849 1 : ssize_t (*ldv_7_callback_read)(struct file *, char *, size_t , loff_t *);
1850 1 : struct file_operations *ldv_7_container_file_operations;
1851 1 : int ldv_7_ldv_param_21_0_default;
1852 1 : int ldv_7_ldv_param_21_2_default;
1853 1 : unsigned int ldv_7_ldv_param_24_2_default;
1854 1 : long long int ldv_7_ldv_param_27_1_default;
1855 1 : int ldv_7_ldv_param_27_2_default;
1856 1 : char *ldv_7_ldv_param_32_1_default;
1857 1 : long long int *ldv_7_ldv_param_32_3_default;
1858 1 : char *ldv_7_ldv_param_4_1_default;
1859 1 : long long int *ldv_7_ldv_param_4_3_default;
1860 1 : unsigned int ldv_7_ldv_param_5_1_default;
1861 1 : struct file *ldv_7_resource_file;
1862 1 : struct inode *ldv_7_resource_inode;
1863 1 : int ldv_7_ret_default;
1864 1 : struct poll_table_struct *ldv_7_size_cnt_struct_poll_table_struct_ptr;
1865 1 : struct vm_area_struct *ldv_7_size_cnt_struct_vm_area_struct_ptr;
1866 1 : long unsigned int ldv_7_size_cnt_write_size;
1867 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1868 1 : /* Initialize automaton variables */
1869 2 : ldv_7_ret_default = 1;
1870 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
1871 3 : ldv_free(arg0);
1872 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
1873 1 :
1874 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1875 4 : ldv_7_container_file_operations = ldv_xmalloc_unknown_size(0);
1876 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
1877 1 :
1878 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
1879 3 : ldv_7_resource_file = ldv_xmalloc(sizeof(struct file));
1880 3 : ldv_7_resource_inode = ldv_xmalloc(sizeof(struct inode));
1881 3 : ldv_7_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
1882 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
1883 :
1884 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1885 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1886 :
1887 : /* Jump to a subprocess 'main' initial state */
1888 1 : goto ldv_main_7;
1889 : /* End of the process */
1890 : return;
1891 1 :
1892 : /* Sbprocess main */
1893 : ldv_main_7:
1894 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1895 :
1896 4 : if (ldv_undef_int()) {
1897 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
1898 : /* LDV {"type": "CALLBACK", "call": "ldv_7_ret_default = ((& sg_open))(ldv_7_resource_inode, ldv_7_resource_file);", "comment": "probe"} */
1899 2 : ldv_7_ret_default = ldv_character_driver_scenario_probe_7_12(ldv_7_container_file_operations->open, ldv_7_resource_inode, ldv_7_resource_file);
1900 : /* Callback post-call */
1901 2 : ldv_7_ret_default = ldv_filter_err_code(ldv_7_ret_default);
1902 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
1903 :
1904 4 : if (ldv_undef_int()) {
1905 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
1906 2 : ldv_assume(ldv_7_ret_default == 0);
1907 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
1908 :
1909 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1910 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1911 :
1912 : /* Jump to a subprocess 'call' initial state */
1913 1 : goto ldv_call_7;
1914 : }
1915 : else {
1916 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
1917 2 : ldv_assume(ldv_7_ret_default != 0);
1918 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
1919 :
1920 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1921 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1922 :
1923 : /* Jump to a subprocess 'main' initial state */
1924 1 : goto ldv_main_7;
1925 : }
1926 : }
1927 : else {
1928 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
1929 2 : ldv_free(ldv_7_resource_file);
1930 2 : ldv_free(ldv_7_resource_inode);
1931 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
1932 :
1933 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
1934 : /* Skip a non-replicative signal receiving */
1935 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
1936 :
1937 : /* Exit function at a terminal state */
1938 1 : return;
1939 : }
1940 : /* End of the subprocess 'main' */
1941 : return;
1942 1 :
1943 : /* Sbprocess call */
1944 : ldv_call_7:
1945 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1946 :
1947 2 : switch (ldv_undef_int()) {
1948 3 : case 1: {
1949 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1950 3 : ldv_7_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
1951 3 : ldv_7_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
1952 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
1953 :
1954 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from file_operations."} */
1955 : /* Callback pre-call */
1956 2 : ldv_assume(ldv_7_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
1957 : /* LDV {"type": "CALLBACK", "call": "((& sg_write))(ldv_7_resource_file, ldv_7_ldv_param_4_1_default, ldv_7_size_cnt_write_size, ldv_7_ldv_param_4_3_default);", "comment": "write"} */
1958 3 : ldv_character_driver_scenario_write_7_4(ldv_7_container_file_operations->write, ldv_7_resource_file, ldv_7_ldv_param_4_1_default, ldv_7_size_cnt_write_size, ldv_7_ldv_param_4_3_default);
1959 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
1960 :
1961 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1962 2 : ldv_free(ldv_7_ldv_param_4_1_default);
1963 2 : ldv_free(ldv_7_ldv_param_4_3_default);
1964 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
1965 :
1966 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
1967 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1968 :
1969 : /* Jump to a subprocess 'call' initial state */
1970 1 : goto ldv_call_7;
1971 1 : break;
1972 : }
1973 3 : case 2: {
1974 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
1975 : /* LDV {"type": "CALLBACK", "call": "((& sg_release))(ldv_7_resource_inode, ldv_7_resource_file);", "comment": "release"} */
1976 2 : ldv_character_driver_scenario_release_7_2(ldv_7_container_file_operations->release, ldv_7_resource_inode, ldv_7_resource_file);
1977 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
1978 :
1979 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
1980 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
1981 :
1982 : /* Jump to a subprocess 'main' initial state */
1983 1 : goto ldv_main_7;
1984 1 : break;
1985 : }
1986 3 : case 3: {
1987 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1988 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
1989 :
1990 2 : switch (ldv_undef_int()) {
1991 3 : case 1: {
1992 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1993 3 : ldv_7_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
1994 3 : ldv_7_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
1995 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
1996 :
1997 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
1998 : /* LDV {"type": "CALLBACK", "call": "((& sg_read))(ldv_7_resource_file, ldv_7_ldv_param_32_1_default, ldv_7_size_cnt_write_size, ldv_7_ldv_param_32_3_default);", "comment": "callback"} */
1999 2 : ldv_character_driver_scenario_callback_7_32(ldv_7_callback_read, ldv_7_resource_file, ldv_7_ldv_param_32_1_default, ldv_7_size_cnt_write_size, ldv_7_ldv_param_32_3_default);
2000 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2001 :
2002 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2003 2 : ldv_free(ldv_7_ldv_param_32_1_default);
2004 2 : ldv_free(ldv_7_ldv_param_32_3_default);
2005 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
2006 :
2007 1 : break;
2008 1 : }
2009 3 : case 2: {
2010 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback poll from file_operations."} */
2011 : /* LDV {"type": "CALLBACK", "call": "(( & sg_poll))(ldv_7_resource_file, ldv_7_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
2012 2 : ldv_character_driver_scenario_callback_7_31(ldv_7_callback_poll, ldv_7_resource_file, ldv_7_size_cnt_struct_poll_table_struct_ptr);
2013 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2014 :
2015 1 : break;
2016 1 : }
2017 3 : case 3: {
2018 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback mmap from file_operations."} */
2019 : /* LDV {"type": "CALLBACK", "call": "((& sg_mmap))(ldv_7_resource_file, ldv_7_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
2020 2 : ldv_character_driver_scenario_callback_7_30(ldv_7_callback_mmap, ldv_7_resource_file, ldv_7_size_cnt_struct_vm_area_struct_ptr);
2021 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2022 :
2023 1 : break;
2024 1 : }
2025 3 : case 4: {
2026 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2027 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
2028 :
2029 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
2030 2 : if (ldv_7_callback_llseek) {
2031 : /* LDV {"type": "CALLBACK", "call": "(ldv_7_callback_llseek)(ldv_7_resource_file, ldv_7_ldv_param_27_1_default, ldv_7_ldv_param_27_2_default);", "comment": "callback"} */
2032 2 : ldv_character_driver_scenario_callback_7_27(ldv_7_callback_llseek, ldv_7_resource_file, ldv_7_ldv_param_27_1_default, ldv_7_ldv_param_27_2_default);
2033 : }
2034 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2035 :
2036 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2037 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
2038 :
2039 2 : break;
2040 1 : }
2041 3 : case 5: {
2042 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2043 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
2044 :
2045 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback ioctl from file_operations."} */
2046 : /* LDV {"type": "CALLBACK", "call": "((& sg_ioctl))(ldv_7_resource_inode, ldv_7_resource_file, ldv_7_ldv_param_24_2_default, ldv_7_size_cnt_write_size);", "comment": "callback"} */
2047 2 : ldv_character_driver_scenario_callback_7_24(ldv_7_callback_ioctl, ldv_7_resource_inode, ldv_7_resource_file, ldv_7_ldv_param_24_2_default, ldv_7_size_cnt_write_size);
2048 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2049 :
2050 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2051 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
2052 :
2053 1 : break;
2054 1 : }
2055 3 : case 6: {
2056 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2057 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
2058 :
2059 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback fasync from file_operations."} */
2060 : /* LDV {"type": "CALLBACK", "call": "((& sg_fasync))(ldv_7_ldv_param_21_0_default, ldv_7_resource_file, ldv_7_ldv_param_21_2_default);", "comment": "callback"} */
2061 2 : ldv_character_driver_scenario_callback_7_21(ldv_7_callback_fasync, ldv_7_ldv_param_21_0_default, ldv_7_resource_file, ldv_7_ldv_param_21_2_default);
2062 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2063 :
2064 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2065 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
2066 :
2067 1 : break;
2068 1 : }
2069 3 : case 7: {
2070 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback compat_ioctl from file_operations."} */
2071 : /* LDV {"type": "CALLBACK", "call": "((& sg_compat_ioctl))(ldv_7_resource_file, ldv_7_ldv_param_5_1_default, ldv_7_size_cnt_write_size);", "comment": "callback"} */
2072 2 : ldv_character_driver_scenario_callback_7_5(ldv_7_callback_compat_ioctl, ldv_7_resource_file, ldv_7_ldv_param_5_1_default, ldv_7_size_cnt_write_size);
2073 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2074 :
2075 1 : break;
2076 1 : }
2077 2 : default: ldv_stop();
2078 1 : }
2079 8 : break;
2080 1 : }
2081 2 : default: ldv_stop();
2082 1 : }
2083 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2084 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
2085 0 :
2086 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
2087 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
2088 :
2089 : /* Jump to a subprocess 'call' initial state */
2090 8 : goto ldv_call_7;
2091 : /* Jump to a subprocess 'call' initial state */
2092 : goto ldv_call_7;
2093 : /* End of the subprocess 'call' */
2094 : return;
2095 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_7"} */
2096 : }
2097 :
2098 : /* AUX_FUNC ldv_character_driver_scenario_8 */
2099 : void ldv_character_driver_scenario_8(void *arg0) {
2100 : /* LDV {"thread": 8, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_8"} */
2101 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
2102 1 : long int (*ldv_8_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
2103 1 : int (*ldv_8_callback_fasync)(int, struct file *, int);
2104 1 : int (*ldv_8_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
2105 1 : loff_t (*ldv_8_callback_llseek)(struct file *, loff_t , int);
2106 1 : int (*ldv_8_callback_mmap)(struct file *, struct vm_area_struct *);
2107 1 : unsigned int (*ldv_8_callback_poll)(struct file *, poll_table *);
2108 1 : ssize_t (*ldv_8_callback_read)(struct file *, char *, size_t , loff_t *);
2109 1 : struct file_operations *ldv_8_container_file_operations;
2110 1 : int ldv_8_ldv_param_21_0_default;
2111 1 : int ldv_8_ldv_param_21_2_default;
2112 1 : unsigned int ldv_8_ldv_param_24_2_default;
2113 1 : long long int ldv_8_ldv_param_27_1_default;
2114 1 : int ldv_8_ldv_param_27_2_default;
2115 1 : char *ldv_8_ldv_param_32_1_default;
2116 1 : long long int *ldv_8_ldv_param_32_3_default;
2117 1 : char *ldv_8_ldv_param_4_1_default;
2118 1 : long long int *ldv_8_ldv_param_4_3_default;
2119 1 : unsigned int ldv_8_ldv_param_5_1_default;
2120 1 : struct file *ldv_8_resource_file;
2121 1 : struct inode *ldv_8_resource_inode;
2122 1 : int ldv_8_ret_default;
2123 1 : struct poll_table_struct *ldv_8_size_cnt_struct_poll_table_struct_ptr;
2124 1 : struct vm_area_struct *ldv_8_size_cnt_struct_vm_area_struct_ptr;
2125 1 : long unsigned int ldv_8_size_cnt_write_size;
2126 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
2127 1 : /* Initialize automaton variables */
2128 2 : ldv_8_ret_default = 1;
2129 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
2130 3 : ldv_free(arg0);
2131 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
2132 1 :
2133 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
2134 4 : ldv_8_container_file_operations = ldv_xmalloc_unknown_size(0);
2135 1 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
2136 1 :
2137 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
2138 3 : ldv_8_resource_file = ldv_xmalloc(sizeof(struct file));
2139 3 : ldv_8_resource_inode = ldv_xmalloc(sizeof(struct inode));
2140 3 : ldv_8_size_cnt_struct_poll_table_struct_ptr = ldv_undef_int();
2141 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
2142 :
2143 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
2144 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
2145 :
2146 : /* Jump to a subprocess 'main' initial state */
2147 1 : goto ldv_main_8;
2148 : /* End of the process */
2149 : return;
2150 1 :
2151 : /* Sbprocess main */
2152 : ldv_main_8:
2153 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
2154 :
2155 4 : if (ldv_undef_int()) {
2156 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
2157 : /* LDV {"type": "CALLBACK", "call": "ldv_8_ret_default = ((& sg_proc_single_open_version))(ldv_8_resource_inode, ldv_8_resource_file);", "comment": "probe"} */
2158 2 : ldv_8_ret_default = ldv_character_driver_scenario_probe_8_12(ldv_8_container_file_operations->open, ldv_8_resource_inode, ldv_8_resource_file);
2159 : /* Callback post-call */
2160 2 : ldv_8_ret_default = ldv_filter_err_code(ldv_8_ret_default);
2161 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
2162 :
2163 4 : if (ldv_undef_int()) {
2164 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
2165 2 : ldv_assume(ldv_8_ret_default == 0);
2166 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
2167 :
2168 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
2169 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
2170 :
2171 : /* Jump to a subprocess 'call' initial state */
2172 1 : goto ldv_call_8;
2173 : }
2174 : else {
2175 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
2176 2 : ldv_assume(ldv_8_ret_default != 0);
2177 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
2178 :
2179 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
2180 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
2181 :
2182 : /* Jump to a subprocess 'main' initial state */
2183 1 : goto ldv_main_8;
2184 : }
2185 : }
2186 : else {
2187 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
2188 2 : ldv_free(ldv_8_resource_file);
2189 2 : ldv_free(ldv_8_resource_inode);
2190 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
2191 :
2192 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
2193 : /* Skip a non-replicative signal receiving */
2194 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
2195 :
2196 : /* Exit function at a terminal state */
2197 1 : return;
2198 : }
2199 : /* End of the subprocess 'main' */
2200 : return;
2201 1 :
2202 : /* Sbprocess call */
2203 : ldv_call_8:
2204 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
2205 :
2206 2 : switch (ldv_undef_int()) {
2207 3 : case 1: {
2208 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2209 3 : ldv_8_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
2210 3 : ldv_8_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
2211 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
2212 :
2213 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
2214 : /* Callback pre-call */
2215 2 : ldv_assume(ldv_8_size_cnt_struct_poll_table_struct_ptr <= (INT_MAX & PAGE_CACHE_MASK));
2216 3 : if (ldv_8_container_file_operations->write) {
2217 : /* LDV {"type": "CALLBACK", "call": "(ldv_8_container_file_operations->write)(ldv_8_resource_file, ldv_8_ldv_param_4_1_default, ldv_8_size_cnt_write_size, ldv_8_ldv_param_4_3_default);", "comment": "write"} */
2218 3 : ldv_character_driver_scenario_write_8_4(ldv_8_container_file_operations->write, ldv_8_resource_file, ldv_8_ldv_param_4_1_default, ldv_8_size_cnt_write_size, ldv_8_ldv_param_4_3_default);
2219 : }
2220 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
2221 :
2222 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2223 4 : ldv_free(ldv_8_ldv_param_4_1_default);
2224 2 : ldv_free(ldv_8_ldv_param_4_3_default);
2225 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
2226 :
2227 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
2228 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
2229 :
2230 : /* Jump to a subprocess 'call' initial state */
2231 1 : goto ldv_call_8;
2232 1 : break;
2233 : }
2234 3 : case 2: {
2235 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
2236 : /* LDV {"type": "CALLBACK", "call": "((& single_release))(ldv_8_resource_inode, ldv_8_resource_file);", "comment": "release"} */
2237 2 : ldv_character_driver_scenario_release_8_2(ldv_8_container_file_operations->release, ldv_8_resource_inode, ldv_8_resource_file);
2238 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
2239 :
2240 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
2241 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
2242 :
2243 : /* Jump to a subprocess 'main' initial state */
2244 1 : goto ldv_main_8;
2245 1 : break;
2246 : }
2247 3 : case 3: {
2248 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2249 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
2250 :
2251 2 : switch (ldv_undef_int()) {
2252 3 : case 1: {
2253 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2254 3 : ldv_8_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
2255 3 : ldv_8_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
2256 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
2257 :
2258 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
2259 : /* LDV {"type": "CALLBACK", "call": "((& seq_read))(ldv_8_resource_file, ldv_8_ldv_param_32_1_default, ldv_8_size_cnt_write_size, ldv_8_ldv_param_32_3_default);", "comment": "callback"} */
2260 2 : ldv_character_driver_scenario_callback_8_32(ldv_8_callback_read, ldv_8_resource_file, ldv_8_ldv_param_32_1_default, ldv_8_size_cnt_write_size, ldv_8_ldv_param_32_3_default);
2261 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2262 :
2263 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2264 2 : ldv_free(ldv_8_ldv_param_32_1_default);
2265 2 : ldv_free(ldv_8_ldv_param_32_3_default);
2266 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
2267 :
2268 1 : break;
2269 1 : }
2270 3 : case 2: {
2271 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
2272 2 : if (ldv_8_callback_poll) {
2273 : /* LDV {"type": "CALLBACK", "call": "(ldv_8_callback_poll)(ldv_8_resource_file, ldv_8_size_cnt_struct_poll_table_struct_ptr);", "comment": "callback"} */
2274 2 : ldv_character_driver_scenario_callback_8_31(ldv_8_callback_poll, ldv_8_resource_file, ldv_8_size_cnt_struct_poll_table_struct_ptr);
2275 : }
2276 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2277 :
2278 2 : break;
2279 1 : }
2280 3 : case 3: {
2281 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
2282 2 : if (ldv_8_callback_mmap) {
2283 : /* LDV {"type": "CALLBACK", "call": "(ldv_8_callback_mmap)(ldv_8_resource_file, ldv_8_size_cnt_struct_vm_area_struct_ptr);", "comment": "callback"} */
2284 2 : ldv_character_driver_scenario_callback_8_30(ldv_8_callback_mmap, ldv_8_resource_file, ldv_8_size_cnt_struct_vm_area_struct_ptr);
2285 : }
2286 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2287 :
2288 2 : break;
2289 1 : }
2290 3 : case 4: {
2291 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2292 : /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
2293 :
2294 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
2295 : /* LDV {"type": "CALLBACK", "call": "((& seq_lseek))(ldv_8_resource_file, ldv_8_ldv_param_27_1_default, ldv_8_ldv_param_27_2_default);", "comment": "callback"} */
2296 2 : ldv_character_driver_scenario_callback_8_27(ldv_8_callback_llseek, ldv_8_resource_file, ldv_8_ldv_param_27_1_default, ldv_8_ldv_param_27_2_default);
2297 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2298 :
2299 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2300 : /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
2301 :
2302 1 : break;
2303 1 : }
2304 3 : case 5: {
2305 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2306 : /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
2307 :
2308 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
2309 2 : if (ldv_8_callback_ioctl) {
2310 : /* LDV {"type": "CALLBACK", "call": "(ldv_8_callback_ioctl)(ldv_8_resource_inode, ldv_8_resource_file, ldv_8_ldv_param_24_2_default, ldv_8_size_cnt_write_size);", "comment": "callback"} */
2311 2 : ldv_character_driver_scenario_callback_8_24(ldv_8_callback_ioctl, ldv_8_resource_inode, ldv_8_resource_file, ldv_8_ldv_param_24_2_default, ldv_8_size_cnt_write_size);
2312 : }
2313 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2314 :
2315 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2316 : /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
2317 :
2318 2 : break;
2319 1 : }
2320 3 : case 6: {
2321 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
2322 : /* LDV {"action": "PRE_CALL_21", "type": "CONDITION_END"} */
2323 :
2324 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
2325 2 : if (ldv_8_callback_fasync) {
2326 : /* LDV {"type": "CALLBACK", "call": "(ldv_8_callback_fasync)(ldv_8_ldv_param_21_0_default, ldv_8_resource_file, ldv_8_ldv_param_21_2_default);", "comment": "callback"} */
2327 2 : ldv_character_driver_scenario_callback_8_21(ldv_8_callback_fasync, ldv_8_ldv_param_21_0_default, ldv_8_resource_file, ldv_8_ldv_param_21_2_default);
2328 : }
2329 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2330 :
2331 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2332 : /* LDV {"action": "POST_CALL_21", "type": "CONDITION_END"} */
2333 :
2334 2 : break;
2335 1 : }
2336 3 : case 7: {
2337 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
2338 2 : if (ldv_8_callback_compat_ioctl) {
2339 : /* LDV {"type": "CALLBACK", "call": "(ldv_8_callback_compat_ioctl)(ldv_8_resource_file, ldv_8_ldv_param_5_1_default, ldv_8_size_cnt_write_size);", "comment": "callback"} */
2340 2 : ldv_character_driver_scenario_callback_8_5(ldv_8_callback_compat_ioctl, ldv_8_resource_file, ldv_8_ldv_param_5_1_default, ldv_8_size_cnt_write_size);
2341 : }
2342 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
2343 :
2344 2 : break;
2345 1 : }
2346 2 : default: ldv_stop();
2347 1 : }
2348 8 : break;
2349 1 : }
2350 2 : default: ldv_stop();
2351 1 : }
2352 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
2353 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
2354 0 :
2355 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
2356 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
2357 :
2358 : /* Jump to a subprocess 'call' initial state */
2359 8 : goto ldv_call_8;
2360 : /* Jump to a subprocess 'call' initial state */
2361 : goto ldv_call_8;
2362 : /* End of the subprocess 'call' */
2363 : return;
2364 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_8"} */
2365 : }
2366 :
2367 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_21 */
2368 : void ldv_character_driver_scenario_callback_1_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2369 3 : (*arg0)(arg1, arg2, arg3);
2370 1 : }
2371 :
2372 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_24 */
2373 : void ldv_character_driver_scenario_callback_1_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2374 2 : (*arg0)(arg1, arg2, arg3, arg4);
2375 1 : }
2376 :
2377 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_27 */
2378 : void ldv_character_driver_scenario_callback_1_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2379 1 : ((& seq_lseek))(arg1, arg2, arg3);
2380 1 : }
2381 :
2382 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_30 */
2383 : void ldv_character_driver_scenario_callback_1_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2384 2 : (*arg0)(arg1, arg2);
2385 1 : }
2386 :
2387 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_31 */
2388 : void ldv_character_driver_scenario_callback_1_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2389 2 : (*arg0)(arg1, arg2);
2390 1 : }
2391 :
2392 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_32 */
2393 : void ldv_character_driver_scenario_callback_1_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2394 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2395 1 : }
2396 :
2397 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_5 */
2398 : void ldv_character_driver_scenario_callback_1_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2399 2 : (*arg0)(arg1, arg2, arg3);
2400 1 : }
2401 :
2402 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_21 */
2403 : void ldv_character_driver_scenario_callback_2_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2404 3 : (*arg0)(arg1, arg2, arg3);
2405 1 : }
2406 :
2407 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_24 */
2408 : void ldv_character_driver_scenario_callback_2_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2409 2 : (*arg0)(arg1, arg2, arg3, arg4);
2410 1 : }
2411 :
2412 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_27 */
2413 : void ldv_character_driver_scenario_callback_2_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2414 1 : ((& seq_lseek))(arg1, arg2, arg3);
2415 1 : }
2416 :
2417 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_30 */
2418 : void ldv_character_driver_scenario_callback_2_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2419 2 : (*arg0)(arg1, arg2);
2420 1 : }
2421 :
2422 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_31 */
2423 : void ldv_character_driver_scenario_callback_2_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2424 2 : (*arg0)(arg1, arg2);
2425 1 : }
2426 :
2427 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_32 */
2428 : void ldv_character_driver_scenario_callback_2_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2429 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2430 1 : }
2431 :
2432 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_5 */
2433 : void ldv_character_driver_scenario_callback_2_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2434 2 : (*arg0)(arg1, arg2, arg3);
2435 1 : }
2436 :
2437 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_21 */
2438 : void ldv_character_driver_scenario_callback_3_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2439 3 : (*arg0)(arg1, arg2, arg3);
2440 1 : }
2441 :
2442 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_24 */
2443 : void ldv_character_driver_scenario_callback_3_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2444 2 : (*arg0)(arg1, arg2, arg3, arg4);
2445 1 : }
2446 :
2447 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_27 */
2448 : void ldv_character_driver_scenario_callback_3_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2449 1 : ((& seq_lseek))(arg1, arg2, arg3);
2450 1 : }
2451 :
2452 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_30 */
2453 : void ldv_character_driver_scenario_callback_3_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2454 2 : (*arg0)(arg1, arg2);
2455 1 : }
2456 :
2457 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_31 */
2458 : void ldv_character_driver_scenario_callback_3_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2459 2 : (*arg0)(arg1, arg2);
2460 1 : }
2461 :
2462 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_32 */
2463 : void ldv_character_driver_scenario_callback_3_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2464 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2465 1 : }
2466 :
2467 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_5 */
2468 : void ldv_character_driver_scenario_callback_3_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2469 2 : (*arg0)(arg1, arg2, arg3);
2470 1 : }
2471 :
2472 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_21 */
2473 : void ldv_character_driver_scenario_callback_4_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2474 3 : (*arg0)(arg1, arg2, arg3);
2475 1 : }
2476 :
2477 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_24 */
2478 : void ldv_character_driver_scenario_callback_4_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2479 2 : (*arg0)(arg1, arg2, arg3, arg4);
2480 1 : }
2481 :
2482 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_27 */
2483 : void ldv_character_driver_scenario_callback_4_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2484 1 : ((& seq_lseek))(arg1, arg2, arg3);
2485 1 : }
2486 :
2487 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_30 */
2488 : void ldv_character_driver_scenario_callback_4_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2489 2 : (*arg0)(arg1, arg2);
2490 1 : }
2491 :
2492 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_31 */
2493 : void ldv_character_driver_scenario_callback_4_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2494 2 : (*arg0)(arg1, arg2);
2495 1 : }
2496 :
2497 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_32 */
2498 : void ldv_character_driver_scenario_callback_4_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2499 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2500 1 : }
2501 :
2502 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_4_5 */
2503 : void ldv_character_driver_scenario_callback_4_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2504 2 : (*arg0)(arg1, arg2, arg3);
2505 1 : }
2506 :
2507 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_21 */
2508 : void ldv_character_driver_scenario_callback_5_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2509 3 : (*arg0)(arg1, arg2, arg3);
2510 1 : }
2511 :
2512 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_24 */
2513 : void ldv_character_driver_scenario_callback_5_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2514 2 : (*arg0)(arg1, arg2, arg3, arg4);
2515 1 : }
2516 :
2517 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_27 */
2518 : void ldv_character_driver_scenario_callback_5_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2519 1 : ((& seq_lseek))(arg1, arg2, arg3);
2520 1 : }
2521 :
2522 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_30 */
2523 : void ldv_character_driver_scenario_callback_5_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2524 2 : (*arg0)(arg1, arg2);
2525 1 : }
2526 :
2527 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_31 */
2528 : void ldv_character_driver_scenario_callback_5_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2529 2 : (*arg0)(arg1, arg2);
2530 1 : }
2531 :
2532 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_32 */
2533 : void ldv_character_driver_scenario_callback_5_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2534 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2535 1 : }
2536 :
2537 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_5_5 */
2538 : void ldv_character_driver_scenario_callback_5_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2539 2 : (*arg0)(arg1, arg2, arg3);
2540 1 : }
2541 :
2542 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_21 */
2543 : void ldv_character_driver_scenario_callback_6_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2544 3 : (*arg0)(arg1, arg2, arg3);
2545 1 : }
2546 :
2547 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_24 */
2548 : void ldv_character_driver_scenario_callback_6_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2549 2 : (*arg0)(arg1, arg2, arg3, arg4);
2550 1 : }
2551 :
2552 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_27 */
2553 : void ldv_character_driver_scenario_callback_6_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2554 1 : ((& seq_lseek))(arg1, arg2, arg3);
2555 1 : }
2556 :
2557 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_30 */
2558 : void ldv_character_driver_scenario_callback_6_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2559 2 : (*arg0)(arg1, arg2);
2560 1 : }
2561 :
2562 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_31 */
2563 : void ldv_character_driver_scenario_callback_6_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2564 2 : (*arg0)(arg1, arg2);
2565 1 : }
2566 :
2567 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_32 */
2568 : void ldv_character_driver_scenario_callback_6_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2569 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2570 1 : }
2571 :
2572 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_6_5 */
2573 : void ldv_character_driver_scenario_callback_6_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2574 2 : (*arg0)(arg1, arg2, arg3);
2575 1 : }
2576 :
2577 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_21 */
2578 : void ldv_character_driver_scenario_callback_7_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2579 2 : ((& sg_fasync))(arg1, arg2, arg3);
2580 1 : }
2581 :
2582 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_24 */
2583 : void ldv_character_driver_scenario_callback_7_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2584 41 : ((& sg_ioctl))(arg1, arg2, arg3, arg4);
2585 1 : }
2586 :
2587 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_27 */
2588 : void ldv_character_driver_scenario_callback_7_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2589 2 : (*arg0)(arg1, arg2, arg3);
2590 1 : }
2591 :
2592 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_30 */
2593 : void ldv_character_driver_scenario_callback_7_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2594 3 : ((& sg_mmap))(arg1, arg2);
2595 1 : }
2596 :
2597 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_31 */
2598 : void ldv_character_driver_scenario_callback_7_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2599 3 : (( & sg_poll))(arg1, arg2);
2600 1 : }
2601 :
2602 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_32 */
2603 : void ldv_character_driver_scenario_callback_7_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2604 16 : ((& sg_read))(arg1, arg2, arg3, arg4);
2605 1 : }
2606 :
2607 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_7_5 */
2608 : void ldv_character_driver_scenario_callback_7_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2609 2 : ((& sg_compat_ioctl))(arg1, arg2, arg3);
2610 1 : }
2611 :
2612 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_21 */
2613 : void ldv_character_driver_scenario_callback_8_21(int (*arg0)(int, struct file *, int), int arg1, struct file *arg2, int arg3) {
2614 3 : (*arg0)(arg1, arg2, arg3);
2615 1 : }
2616 :
2617 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_24 */
2618 : void ldv_character_driver_scenario_callback_8_24(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
2619 2 : (*arg0)(arg1, arg2, arg3, arg4);
2620 1 : }
2621 :
2622 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_27 */
2623 : void ldv_character_driver_scenario_callback_8_27(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
2624 1 : ((& seq_lseek))(arg1, arg2, arg3);
2625 1 : }
2626 :
2627 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_30 */
2628 : void ldv_character_driver_scenario_callback_8_30(int (*arg0)(struct file *, struct vm_area_struct *), struct file *arg1, struct vm_area_struct *arg2) {
2629 2 : (*arg0)(arg1, arg2);
2630 1 : }
2631 :
2632 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_31 */
2633 : void ldv_character_driver_scenario_callback_8_31(unsigned int (*arg0)(struct file *, poll_table *), struct file *arg1, struct poll_table_struct *arg2) {
2634 2 : (*arg0)(arg1, arg2);
2635 1 : }
2636 :
2637 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_32 */
2638 : void ldv_character_driver_scenario_callback_8_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2639 1 : ((& seq_read))(arg1, arg2, arg3, arg4);
2640 1 : }
2641 :
2642 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_8_5 */
2643 : void ldv_character_driver_scenario_callback_8_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
2644 2 : (*arg0)(arg1, arg2, arg3);
2645 1 : }
2646 :
2647 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_1_12 */
2648 : int ldv_character_driver_scenario_probe_1_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2649 3 : return ((& sg_proc_single_open_adio))(arg1, arg2);
2650 : }
2651 1 :
2652 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_2_12 */
2653 : int ldv_character_driver_scenario_probe_2_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2654 3 : return ((& sg_proc_open_debug))(arg1, arg2);
2655 : }
2656 1 :
2657 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_3_12 */
2658 : int ldv_character_driver_scenario_probe_3_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2659 3 : return ((& sg_proc_open_dev))(arg1, arg2);
2660 : }
2661 1 :
2662 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_4_12 */
2663 : int ldv_character_driver_scenario_probe_4_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2664 3 : return ((& sg_proc_single_open_devhdr))(arg1, arg2);
2665 : }
2666 1 :
2667 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_5_12 */
2668 : int ldv_character_driver_scenario_probe_5_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2669 3 : return ((& sg_proc_open_devstrs))(arg1, arg2);
2670 : }
2671 1 :
2672 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_6_12 */
2673 : int ldv_character_driver_scenario_probe_6_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2674 3 : return ((& sg_proc_single_open_dressz))(arg1, arg2);
2675 : }
2676 1 :
2677 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_7_12 */
2678 : int ldv_character_driver_scenario_probe_7_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2679 11 : return ((& sg_open))(arg1, arg2);
2680 : }
2681 1 :
2682 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_8_12 */
2683 : int ldv_character_driver_scenario_probe_8_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2684 3 : return ((& sg_proc_single_open_version))(arg1, arg2);
2685 : }
2686 1 :
2687 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_1_2 */
2688 : void ldv_character_driver_scenario_release_1_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2689 1 : ((& single_release))(arg1, arg2);
2690 1 : }
2691 :
2692 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_2_2 */
2693 : void ldv_character_driver_scenario_release_2_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2694 1 : ((& seq_release))(arg1, arg2);
2695 1 : }
2696 :
2697 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_3_2 */
2698 : void ldv_character_driver_scenario_release_3_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2699 1 : ((& seq_release))(arg1, arg2);
2700 1 : }
2701 :
2702 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_4_2 */
2703 : void ldv_character_driver_scenario_release_4_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2704 1 : ((& single_release))(arg1, arg2);
2705 1 : }
2706 :
2707 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_5_2 */
2708 : void ldv_character_driver_scenario_release_5_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2709 1 : ((& seq_release))(arg1, arg2);
2710 1 : }
2711 :
2712 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_6_2 */
2713 : void ldv_character_driver_scenario_release_6_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2714 1 : ((& single_release))(arg1, arg2);
2715 1 : }
2716 :
2717 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_7_2 */
2718 : void ldv_character_driver_scenario_release_7_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2719 2 : ((& sg_release))(arg1, arg2);
2720 1 : }
2721 :
2722 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_8_2 */
2723 : void ldv_character_driver_scenario_release_8_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
2724 1 : ((& single_release))(arg1, arg2);
2725 1 : }
2726 :
2727 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_1_4 */
2728 : void ldv_character_driver_scenario_write_1_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2729 3 : ((& sg_proc_write_adio))(arg1, arg2, arg3, arg4);
2730 1 : }
2731 :
2732 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_2_4 */
2733 : void ldv_character_driver_scenario_write_2_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2734 5 : (*arg0)(arg1, arg2, arg3, arg4);
2735 1 : }
2736 :
2737 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_3_4 */
2738 : void ldv_character_driver_scenario_write_3_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2739 5 : (*arg0)(arg1, arg2, arg3, arg4);
2740 1 : }
2741 :
2742 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_4_4 */
2743 : void ldv_character_driver_scenario_write_4_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2744 5 : (*arg0)(arg1, arg2, arg3, arg4);
2745 1 : }
2746 :
2747 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_5_4 */
2748 : void ldv_character_driver_scenario_write_5_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2749 5 : (*arg0)(arg1, arg2, arg3, arg4);
2750 1 : }
2751 :
2752 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_6_4 */
2753 : void ldv_character_driver_scenario_write_6_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2754 3 : ((& sg_proc_write_dressz))(arg1, arg2, arg3, arg4);
2755 1 : }
2756 :
2757 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_7_4 */
2758 : void ldv_character_driver_scenario_write_7_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2759 10 : ((& sg_write))(arg1, arg2, arg3, arg4);
2760 1 : }
2761 :
2762 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_8_4 */
2763 : void ldv_character_driver_scenario_write_8_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
2764 5 : (*arg0)(arg1, arg2, arg3, arg4);
2765 1 : }
2766 :
2767 : /* AUX_FUNC ldv_dispatch_default_deregister_4_18_6 */
2768 : void ldv_dispatch_default_deregister_4_18_6() {
2769 : struct ldv_struct_insmod_18 *cf_arg_9;
2770 : struct ldv_struct_insmod_18 *cf_arg_10;
2771 : struct ldv_struct_insmod_18 *cf_arg_11;
2772 : struct ldv_struct_insmod_18 *cf_arg_12;
2773 : struct ldv_struct_insmod_18 *cf_arg_13;
2774 : struct ldv_struct_insmod_18 *cf_arg_14;
2775 : /* Skip thread join call */
2776 : /* Skip thread join call */
2777 : /* Skip thread join call */
2778 : /* Skip thread join call */
2779 : /* Skip thread join call */
2780 : /* Skip thread join call */
2781 1 : return;
2782 : }
2783 :
2784 : /* AUX_FUNC ldv_dispatch_default_deregister_8_18_4 */
2785 : void ldv_dispatch_default_deregister_8_18_4() {
2786 : struct ldv_struct_insmod_18 *cf_arg_16;
2787 : /* Skip thread join call */
2788 1 : return;
2789 : }
2790 :
2791 : /* AUX_FUNC ldv_dispatch_default_deregister_9_18_5 */
2792 : void ldv_dispatch_default_deregister_9_18_5() {
2793 : struct ldv_struct_insmod_18 *cf_arg_17;
2794 : /* Skip thread join call */
2795 1 : return;
2796 : }
2797 :
2798 : /* AUX_FUNC ldv_dispatch_default_register_3_18_7 */
2799 : void ldv_dispatch_default_register_3_18_7() {
2800 : struct ldv_struct_insmod_18 *cf_arg_1;
2801 1 : struct ldv_struct_insmod_18 *cf_arg_2;
2802 1 : struct ldv_struct_insmod_18 *cf_arg_3;
2803 1 : struct ldv_struct_insmod_18 *cf_arg_4;
2804 1 : struct ldv_struct_insmod_18 *cf_arg_5;
2805 1 : struct ldv_struct_insmod_18 *cf_arg_6;
2806 1 : struct ldv_struct_insmod_18 *cf_arg_7;
2807 1 : struct ldv_struct_insmod_18 *cf_arg_8;
2808 4 : cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2809 3 : ldv_character_driver_scenario_1(cf_arg_1);
2810 4 : cf_arg_2 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2811 3 : ldv_character_driver_scenario_2(cf_arg_2);
2812 4 : cf_arg_3 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2813 3 : ldv_character_driver_scenario_3(cf_arg_3);
2814 4 : cf_arg_4 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2815 3 : ldv_character_driver_scenario_4(cf_arg_4);
2816 4 : cf_arg_5 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2817 2 : ldv_character_driver_scenario_5(cf_arg_5);
2818 3 : cf_arg_6 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2819 2 : ldv_character_driver_scenario_6(cf_arg_6);
2820 3 : cf_arg_7 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2821 2 : ldv_character_driver_scenario_7(cf_arg_7);
2822 3 : cf_arg_8 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2823 2 : ldv_character_driver_scenario_8(cf_arg_8);
2824 1 : return;
2825 : }
2826 :
2827 : /* AUX_FUNC ldv_dispatch_default_register_8_18_9 */
2828 : void ldv_dispatch_default_register_8_18_9() {
2829 : struct ldv_struct_insmod_18 *cf_arg_16;
2830 4 : cf_arg_16 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2831 3 : ldv_random_containerless_scenario_16(cf_arg_16);
2832 1 : return;
2833 : }
2834 :
2835 : /* AUX_FUNC ldv_dispatch_default_register_9_18_8 */
2836 : void ldv_dispatch_default_register_9_18_8() {
2837 : struct ldv_struct_insmod_18 *cf_arg_17;
2838 4 : cf_arg_17 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2839 3 : ldv_random_containerless_scenario_17(cf_arg_17);
2840 1 : return;
2841 : }
2842 :
2843 : /* AUX_FUNC ldv_dispatch_deregister_19_1 */
2844 : void ldv_dispatch_deregister_19_1(struct file_operations *arg0) {
2845 : struct ldv_struct_cdev_del_19 *cf_arg_1;
2846 5 : struct ldv_struct_cdev_del_19 *cf_arg_2;
2847 : struct ldv_struct_cdev_del_19 *cf_arg_3;
2848 : struct ldv_struct_cdev_del_19 *cf_arg_4;
2849 : struct ldv_struct_cdev_del_19 *cf_arg_5;
2850 : struct ldv_struct_cdev_del_19 *cf_arg_6;
2851 : struct ldv_struct_cdev_del_19 *cf_arg_7;
2852 : struct ldv_struct_cdev_del_19 *cf_arg_8;
2853 10 : switch (ldv_undef_int()) {
2854 15 : case 0: {
2855 : /* Skip thread join call */
2856 5 : break;
2857 5 : };
2858 15 : case 1: {
2859 : /* Skip thread join call */
2860 5 : break;
2861 5 : };
2862 15 : case 2: {
2863 : /* Skip thread join call */
2864 5 : break;
2865 5 : };
2866 15 : case 3: {
2867 : /* Skip thread join call */
2868 5 : break;
2869 5 : };
2870 15 : case 4: {
2871 : /* Skip thread join call */
2872 5 : break;
2873 5 : };
2874 15 : case 5: {
2875 : /* Skip thread join call */
2876 5 : break;
2877 5 : };
2878 15 : case 6: {
2879 : /* Skip thread join call */
2880 5 : break;
2881 5 : };
2882 15 : case 7: {
2883 : /* Skip thread join call */
2884 5 : break;
2885 5 : };
2886 10 : default: ldv_stop();
2887 5 : };
2888 5 : return;
2889 : }
2890 0 :
2891 : /* AUX_FUNC ldv_dispatch_deregister_21_1 */
2892 : void ldv_dispatch_deregister_21_1(struct class_interface *arg0) {
2893 : struct ldv_struct_random_containerless_scenario_15 *cf_arg_15;
2894 : /* Skip thread join call */
2895 2 : return;
2896 : }
2897 :
2898 : /* AUX_FUNC ldv_dispatch_insmod_deregister_23_2 */
2899 : void ldv_dispatch_insmod_deregister_23_2() {
2900 : struct ldv_struct_insmod_18 *cf_arg_18;
2901 : /* Skip thread join call */
2902 1 : return;
2903 : }
2904 :
2905 : /* AUX_FUNC ldv_dispatch_insmod_register_23_3 */
2906 : void ldv_dispatch_insmod_register_23_3() {
2907 : struct ldv_struct_insmod_18 *cf_arg_18;
2908 4 : cf_arg_18 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_18));
2909 4 : ldv_insmod_18(cf_arg_18);
2910 1 : return;
2911 : }
2912 :
2913 : /* AUX_FUNC ldv_dispatch_register_20_1 */
2914 : void ldv_dispatch_register_20_1(struct seq_file *arg0, struct seq_operations *arg1) {
2915 : struct ldv_struct_traverse_kernel_items_scenario_9 *cf_arg_9;
2916 3 : struct ldv_struct_traverse_kernel_items_scenario_9 *cf_arg_10;
2917 3 : struct ldv_struct_traverse_kernel_items_scenario_9 *cf_arg_11;
2918 3 : struct ldv_struct_traverse_kernel_items_scenario_9 *cf_arg_12;
2919 3 : struct ldv_struct_traverse_kernel_items_scenario_9 *cf_arg_13;
2920 3 : struct ldv_struct_traverse_kernel_items_scenario_9 *cf_arg_14;
2921 9 : switch (ldv_undef_int()) {
2922 12 : case 0: {
2923 12 : cf_arg_9 = ldv_xmalloc(sizeof(struct ldv_struct_traverse_kernel_items_scenario_9));
2924 6 : cf_arg_9->arg0 = arg0;
2925 6 : cf_arg_9->arg1 = arg1;
2926 9 : ldv_traverse_kernel_items_scenario_9(cf_arg_9);
2927 6 : break;
2928 6 : };
2929 9 : case 1: {
2930 9 : cf_arg_10 = ldv_xmalloc(sizeof(struct ldv_struct_traverse_kernel_items_scenario_9));
2931 3 : cf_arg_10->arg0 = arg0;
2932 3 : cf_arg_10->arg1 = arg1;
2933 6 : ldv_traverse_kernel_items_scenario_10(cf_arg_10);
2934 3 : break;
2935 3 : };
2936 9 : case 2: {
2937 9 : cf_arg_11 = ldv_xmalloc(sizeof(struct ldv_struct_traverse_kernel_items_scenario_9));
2938 3 : cf_arg_11->arg0 = arg0;
2939 3 : cf_arg_11->arg1 = arg1;
2940 6 : ldv_traverse_kernel_items_scenario_11(cf_arg_11);
2941 3 : break;
2942 3 : };
2943 9 : case 3: {
2944 9 : cf_arg_12 = ldv_xmalloc(sizeof(struct ldv_struct_traverse_kernel_items_scenario_9));
2945 3 : cf_arg_12->arg0 = arg0;
2946 3 : cf_arg_12->arg1 = arg1;
2947 6 : ldv_traverse_kernel_items_scenario_12(cf_arg_12);
2948 3 : break;
2949 3 : };
2950 9 : case 4: {
2951 9 : cf_arg_13 = ldv_xmalloc(sizeof(struct ldv_struct_traverse_kernel_items_scenario_9));
2952 3 : cf_arg_13->arg0 = arg0;
2953 3 : cf_arg_13->arg1 = arg1;
2954 6 : ldv_traverse_kernel_items_scenario_13(cf_arg_13);
2955 3 : break;
2956 3 : };
2957 9 : case 5: {
2958 9 : cf_arg_14 = ldv_xmalloc(sizeof(struct ldv_struct_traverse_kernel_items_scenario_9));
2959 3 : cf_arg_14->arg0 = arg0;
2960 3 : cf_arg_14->arg1 = arg1;
2961 6 : ldv_traverse_kernel_items_scenario_14(cf_arg_14);
2962 3 : break;
2963 3 : };
2964 6 : default: ldv_stop();
2965 3 : };
2966 18 : return;
2967 : }
2968 0 :
2969 : /* AUX_FUNC ldv_dispatch_register_22_3 */
2970 : void ldv_dispatch_register_22_3(struct class_interface *arg0) {
2971 : struct ldv_struct_random_containerless_scenario_15 *cf_arg_15;
2972 4 : cf_arg_15 = ldv_xmalloc(sizeof(struct ldv_struct_random_containerless_scenario_15));
2973 2 : cf_arg_15->arg0 = arg0;
2974 2 : ldv_random_containerless_scenario_15(cf_arg_15);
2975 1 : return;
2976 : }
2977 :
2978 : /* AUX_FUNC ldv_emg_cdev_del */
2979 : void ldv_emg_cdev_del(struct cdev *arg0) {
2980 : /* LDV {"comment": "Control function 'cdev_del'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_cdev_del"} */
2981 5 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
2982 5 : struct cdev *ldv_19_cdev_cdev;
2983 : struct file_operations *ldv_19_file_operations_file_operations;
2984 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
2985 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Extract a file_operations structure pointer."} */
2986 5 : ldv_19_cdev_cdev = arg0;
2987 10 : ldv_19_file_operations_file_operations = ldv_19_cdev_cdev->ops;
2988 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
2989 :
2990 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister FILE_OPERATIONS callbacks."} */
2991 10 : ldv_dispatch_deregister_19_1(ldv_19_file_operations_file_operations);
2992 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
2993 :
2994 : /* Exit function at a terminal state */
2995 5 : return;
2996 : /* End of the process */
2997 : return;
2998 : /* LDV {"comment": "End of control function based on process 'cdev_del'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_cdev_del"} */
2999 : }
3000 :
3001 : /* AUX_FUNC ldv_emg_class_interface_unregister */
3002 : void ldv_emg_class_interface_unregister(struct class_interface *arg0) {
3003 : /* LDV {"comment": "Control function 'class_interface_unregister'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_class_interface_unregister"} */
3004 2 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3005 : struct class_interface *ldv_21_struct_class_interface_struct_class_interface;
3006 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3007 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_class_interface' callbacks to deregister."} */
3008 2 : ldv_21_struct_class_interface_struct_class_interface = arg0;
3009 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
3010 :
3011 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister STRUCT_CLASS_INTERFACE callbacks."} */
3012 4 : ldv_dispatch_deregister_21_1(ldv_21_struct_class_interface_struct_class_interface);
3013 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
3014 :
3015 : /* Exit function at a terminal state */
3016 2 : return;
3017 : /* End of the process */
3018 : return;
3019 : /* LDV {"comment": "End of control function based on process 'class_interface_unregister'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_class_interface_unregister"} */
3020 : }
3021 :
3022 : /* AUX_FUNC ldv_emg_scsi_register_interface */
3023 : int ldv_emg_scsi_register_interface(struct class_interface *arg0) {
3024 : /* LDV {"comment": "Control function 'scsi_register_interface'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_scsi_register_interface"} */
3025 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3026 1 : struct class_interface *ldv_22_struct_class_interface_struct_class_interface;
3027 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3028 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3029 :
3030 4 : if (ldv_undef_int()) {
3031 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_class_interface' callbacks to register."} */
3032 1 : ldv_22_struct_class_interface_struct_class_interface = arg0;
3033 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
3034 :
3035 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register STRUCT_CLASS_INTERFACE callbacks."} */
3036 2 : ldv_dispatch_register_22_3(ldv_22_struct_class_interface_struct_class_interface);
3037 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
3038 :
3039 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'struct_class_interface' callbacks."} */
3040 3 : return ldv_undef_int_negative();
3041 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
3042 :
3043 : /* Exit function at a terminal state */
3044 : }
3045 : else {
3046 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'struct_class_interface' callbacks has been successful."} */
3047 1 : return 0;
3048 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
3049 :
3050 : /* Exit function at a terminal state */
3051 : }
3052 : /* End of the process */
3053 : /* LDV {"comment": "End of control function based on process 'scsi_register_interface'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_scsi_register_interface"} */
3054 : }
3055 :
3056 : /* AUX_FUNC ldv_emg_seq_open */
3057 : int ldv_emg_seq_open(struct file *arg0, struct seq_operations *arg1) {
3058 : /* LDV {"comment": "Control function 'seq_open'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_seq_open"} */
3059 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3060 3 : struct file *ldv_20_file_file;
3061 3 : struct seq_operations *ldv_20_ops_seq_operations;
3062 3 : struct seq_file *ldv_20_seq_file_seq_file;
3063 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3064 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Alloc memory for sequential file structure and initialize it."} */
3065 9 : ldv_20_seq_file_seq_file = ldv_xmalloc(sizeof(struct seq_file));
3066 3 : ldv_20_ops_seq_operations = arg1;
3067 3 : ldv_20_file_file->private_data = ldv_20_seq_file_seq_file;
3068 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
3069 :
3070 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register SEQ_OPERATIONS callbacks."} */
3071 21 : ldv_dispatch_register_20_1(ldv_20_seq_file_seq_file, ldv_20_ops_seq_operations);
3072 3 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
3073 :
3074 : /* Exit function at a terminal state */
3075 : /* End of the process */
3076 : /* LDV {"comment": "End of control function based on process 'seq_open'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_seq_open"} */
3077 : }
3078 :
3079 : /* AUX_FUNC ldv_insmod_18 */
3080 : void ldv_insmod_18(void *arg0) {
3081 : /* LDV {"thread": 18, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'insmod(artificial)'", "function": "ldv_insmod_18"} */
3082 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3083 1 : void (*ldv_18_exit_sg_default)(void);
3084 1 : int (*ldv_18_init_sg_default)(void);
3085 1 : int ldv_18_ret_default;
3086 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3087 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module initialization."} */
3088 2 : ldv_free(arg0);
3089 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_END"} */
3090 :
3091 : /* LDV {"action": "INIT_SG", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize the module after insmod with 'init_sg' function. Invoke callback init_sg from ARTIFICIAL."} */
3092 : /* LDV {"type": "CALLBACK", "call": "ldv_18_ret_default = (init_sg)();", "comment": "init_sg"} */
3093 2 : ldv_18_ret_default = ldv_insmod_init_sg_18_13(ldv_18_init_sg_default);
3094 : /* Callback post-call */
3095 2 : ldv_18_ret_default = ldv_post_init(ldv_18_ret_default);
3096 : /* LDV {"action": "INIT_SG", "type": "CALL_END"} */
3097 :
3098 4 : if (ldv_undef_int()) {
3099 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize the module."} */
3100 2 : ldv_assume(ldv_18_ret_default != 0);
3101 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_END"} */
3102 :
3103 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
3104 : /* Skip a non-replicative signal receiving */
3105 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
3106 :
3107 : /* Exit function at a terminal state */
3108 1 : return;
3109 : }
3110 : else {
3111 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Module has been initialized."} */
3112 2 : ldv_assume(ldv_18_ret_default == 0);
3113 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_END"} */
3114 :
3115 4 : if (ldv_undef_int()) {
3116 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_KERNEL_PARAM' callbacks with unknown registration function."} */
3117 2 : ldv_dispatch_default_register_8_18_9();
3118 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "DISPATCH_END"} */
3119 :
3120 : /* LDV {"action": "DEFAULT_REGISTER_9", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_VM_OPERATIONS_STRUCT' callbacks with unknown registration function."} */
3121 2 : ldv_dispatch_default_register_9_18_8();
3122 : /* LDV {"action": "DEFAULT_REGISTER_9", "type": "DISPATCH_END"} */
3123 :
3124 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "DISPATCH_BEGIN", "comment": "Register 'FILE_OPERATIONS' callbacks with unknown registration function."} */
3125 2 : ldv_dispatch_default_register_3_18_7();
3126 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "DISPATCH_END"} */
3127 :
3128 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "DISPATCH_BEGIN", "comment": "Deregister 'SEQ_OPERATIONS' callbacks with unknown deregistration function."} */
3129 2 : ldv_dispatch_default_deregister_4_18_6();
3130 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "DISPATCH_END"} */
3131 :
3132 : /* LDV {"action": "DEFAULT_DEREGISTER_9", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_VM_OPERATIONS_STRUCT' callbacks with unknown deregistration function."} */
3133 2 : ldv_dispatch_default_deregister_9_18_5();
3134 : /* LDV {"action": "DEFAULT_DEREGISTER_9", "type": "DISPATCH_END"} */
3135 :
3136 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_KERNEL_PARAM' callbacks with unknown deregistration function."} */
3137 2 : ldv_dispatch_default_deregister_8_18_4();
3138 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "DISPATCH_END"} */
3139 :
3140 : }
3141 : else {
3142 : /* LDV {"action": "NONE", "type": "CONDITION_BEGIN", "comment": "Skip default callbacks registrations and deregistrations."} */
3143 : /* LDV {"action": "NONE", "type": "CONDITION_END"} */
3144 :
3145 : }
3146 : /* LDV {"action": "EXIT_SG", "type": "CALL_BEGIN", "callback": true, "comment": "Exit the module before its unloading with 'exit_sg' function. Invoke callback exit_sg from ARTIFICIAL."} */
3147 : /* LDV {"type": "CALLBACK", "call": "(exit_sg)();", "comment": "exit_sg"} */
3148 4 : ldv_insmod_exit_sg_18_2(ldv_18_exit_sg_default);
3149 : /* LDV {"action": "EXIT_SG", "type": "CALL_END"} */
3150 :
3151 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
3152 : /* Skip a non-replicative signal receiving */
3153 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
3154 :
3155 : /* Exit function at a terminal state */
3156 1 : return;
3157 : }
3158 : /* End of the process */
3159 : return;
3160 : /* LDV {"comment": "End of control function based on process 'insmod(artificial)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_insmod_18"} */
3161 : }
3162 :
3163 : /* AUX_FUNC_CALLBACK ldv_insmod_exit_sg_18_2 */
3164 : void ldv_insmod_exit_sg_18_2(void (*arg0)(void)) {
3165 4 : (exit_sg)();
3166 2 : }
3167 :
3168 : /* AUX_FUNC_CALLBACK ldv_insmod_init_sg_18_13 */
3169 : int ldv_insmod_init_sg_18_13(int (*arg0)(void)) {
3170 6 : return (init_sg)();
3171 1 : }
3172 :
3173 : /* AUX_FUNC ldv_main_23 */
3174 : void ldv_main_23(void *arg0) {
3175 : /* LDV {"thread": 23, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'main(main)'", "function": "ldv_main_23"} */
3176 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3177 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3178 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Initialize rule models."} */
3179 1 : ldv_initialize();
3180 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
3181 :
3182 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Start environment model scenarios."} */
3183 2 : ldv_dispatch_insmod_register_23_3();
3184 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_END"} */
3185 :
3186 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Stop environment model scenarios."} */
3187 2 : ldv_dispatch_insmod_deregister_23_2();
3188 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_END"} */
3189 :
3190 : /* LDV {"action": "FINAL", "type": "CONDITION_BEGIN", "comment": "Check rule model state at the exit."} */
3191 1 : ldv_check_final_state();
3192 1 : ldv_stop();
3193 : /* LDV {"action": "FINAL", "type": "CONDITION_END"} */
3194 :
3195 : /* Exit function at a terminal state */
3196 0 : return;
3197 : /* End of the process */
3198 : return;
3199 : /* LDV {"comment": "End of control function based on process 'main(main)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_main_23"} */
3200 : }
3201 :
3202 : /* AUX_FUNC ldv_random_containerless_scenario_15 */
3203 : void ldv_random_containerless_scenario_15(void *arg0) {
3204 : /* LDV {"thread": 15, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_class_interface)'", "function": "ldv_random_containerless_scenario_15"} */
3205 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3206 1 : int (*ldv_15_callback_add_dev)(struct device *, struct class_interface *);
3207 1 : void (*ldv_15_callback_remove_dev)(struct device *, struct class_interface *);
3208 1 : struct class_interface *ldv_15_container_struct_class_interface;
3209 1 : struct device *ldv_15_container_struct_device_ptr;
3210 1 : /* Received labels */
3211 1 : struct ldv_struct_random_containerless_scenario_15 *data = (struct ldv_struct_random_containerless_scenario_15*) arg0;
3212 :
3213 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3214 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_CLASS_INTERFACE callbacks invocations scenario."} */
3215 : /* Assign recieved labels */
3216 2 : if (data) {
3217 1 : ldv_15_container_struct_class_interface = data->arg0;
3218 2 : ldv_free(data);
3219 : }
3220 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
3221 :
3222 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3223 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3224 :
3225 : /* Jump to a subprocess 'call' initial state */
3226 2 : goto ldv_call_15;
3227 : /* End of the process */
3228 : return;
3229 1 :
3230 : /* Sbprocess call */
3231 : ldv_call_15:
3232 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3233 :
3234 2 : switch (ldv_undef_int()) {
3235 3 : case 1: {
3236 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback remove_dev from class_interface."} */
3237 : /* LDV {"type": "CALLBACK", "call": "((& sg_remove))(ldv_15_container_struct_device_ptr, ldv_15_container_struct_class_interface);", "comment": "callback"} */
3238 2 : ldv_random_containerless_scenario_callback_15_6(ldv_15_callback_remove_dev, ldv_15_container_struct_device_ptr, ldv_15_container_struct_class_interface);
3239 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
3240 :
3241 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3242 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3243 :
3244 : /* Jump to a subprocess 'call' initial state */
3245 1 : goto ldv_call_15;
3246 1 : break;
3247 : }
3248 3 : case 2: {
3249 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback add_dev from class_interface."} */
3250 : /* LDV {"type": "CALLBACK", "call": "((& sg_add))(ldv_15_container_struct_device_ptr, ldv_15_container_struct_class_interface);", "comment": "callback"} */
3251 2 : ldv_random_containerless_scenario_callback_15_3(ldv_15_callback_add_dev, ldv_15_container_struct_device_ptr, ldv_15_container_struct_class_interface);
3252 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
3253 :
3254 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3255 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3256 :
3257 : /* Jump to a subprocess 'call' initial state */
3258 1 : goto ldv_call_15;
3259 : /* Jump to a subprocess 'call' initial state */
3260 : goto ldv_call_15;
3261 1 : break;
3262 : }
3263 3 : case 3: {
3264 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_CLASS_INTERFACE callbacks invocations scenario."} */
3265 : /* Skip a non-replicative signal receiving */
3266 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
3267 :
3268 : /* Exit function at a terminal state */
3269 1 : return;
3270 1 : break;
3271 : }
3272 2 : default: ldv_stop();
3273 1 : }
3274 0 : /* End of the subprocess 'call' */
3275 0 : return;
3276 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_class_interface)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_15"} */
3277 : }
3278 :
3279 : /* AUX_FUNC ldv_random_containerless_scenario_16 */
3280 : void ldv_random_containerless_scenario_16(void *arg0) {
3281 : /* LDV {"thread": 16, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_kernel_param)'", "function": "ldv_random_containerless_scenario_16"} */
3282 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3283 1 : int (*ldv_16_callback_get)(char *, struct kernel_param *);
3284 1 : int (*ldv_16_callback_set)(char *, struct kernel_param *);
3285 1 : struct kernel_param *ldv_16_container_struct_kernel_param;
3286 1 : char *ldv_16_ldv_param_10_0_default;
3287 1 : char *ldv_16_ldv_param_4_0_default;
3288 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3289 1 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_KERNEL_PARAM callbacks invocations scenario."} */
3290 3 : ldv_free(arg0);
3291 1 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "RECEIVE_END"} */
3292 :
3293 : /* LDV {"action": "DEFAULT_ALLOC_8", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
3294 3 : ldv_16_container_struct_kernel_param = ldv_xmalloc_unknown_size(0);
3295 : /* LDV {"action": "DEFAULT_ALLOC_8", "type": "CONDITION_END"} */
3296 :
3297 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3298 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3299 :
3300 : /* Jump to a subprocess 'call' initial state */
3301 1 : goto ldv_call_16;
3302 : /* End of the process */
3303 : return;
3304 1 :
3305 : /* Sbprocess call */
3306 : ldv_call_16:
3307 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3308 :
3309 4 : if (ldv_undef_int()) {
3310 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3311 3 : ldv_16_ldv_param_4_0_default = ldv_xmalloc_unknown_size(0);
3312 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
3313 :
3314 4 : if (ldv_undef_int()) {
3315 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3316 3 : ldv_16_ldv_param_10_0_default = ldv_xmalloc_unknown_size(0);
3317 : /* LDV {"action": "PRE_CALL_10", "type": "CONDITION_END"} */
3318 :
3319 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback set from kernel_param."} */
3320 : /* LDV {"type": "CALLBACK", "call": "((& param_set_int))(ldv_16_ldv_param_10_0_default, ldv_16_container_struct_kernel_param);", "comment": "callback"} */
3321 2 : ldv_random_containerless_scenario_callback_16_10(ldv_16_callback_set, ldv_16_ldv_param_10_0_default, ldv_16_container_struct_kernel_param);
3322 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
3323 :
3324 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3325 2 : ldv_free(ldv_16_ldv_param_10_0_default);
3326 : /* LDV {"action": "POST_CALL_10", "type": "CONDITION_END"} */
3327 :
3328 : }
3329 : else {
3330 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get from kernel_param."} */
3331 : /* LDV {"type": "CALLBACK", "call": "((& param_get_int))(ldv_16_ldv_param_4_0_default, ldv_16_container_struct_kernel_param);", "comment": "callback"} */
3332 2 : ldv_random_containerless_scenario_callback_16_4(ldv_16_callback_get, ldv_16_ldv_param_4_0_default, ldv_16_container_struct_kernel_param);
3333 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
3334 :
3335 : }
3336 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3337 4 : ldv_free(ldv_16_ldv_param_4_0_default);
3338 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
3339 :
3340 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3341 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3342 :
3343 : /* Jump to a subprocess 'call' initial state */
3344 1 : goto ldv_call_16;
3345 : }
3346 : else {
3347 : /* LDV {"action": "DEFAULT_FREE_8", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
3348 2 : ldv_free(ldv_16_container_struct_kernel_param);
3349 : /* LDV {"action": "DEFAULT_FREE_8", "type": "CONDITION_END"} */
3350 :
3351 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_KERNEL_PARAM callbacks invocations scenario."} */
3352 : /* Skip a non-replicative signal receiving */
3353 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "RECEIVE_END"} */
3354 :
3355 : /* Exit function at a terminal state */
3356 1 : return;
3357 : }
3358 : /* End of the subprocess 'call' */
3359 : return;
3360 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_kernel_param)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_16"} */
3361 : }
3362 :
3363 : /* AUX_FUNC ldv_random_containerless_scenario_17 */
3364 : void ldv_random_containerless_scenario_17(void *arg0) {
3365 : /* LDV {"thread": 17, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_vm_operations_struct)'", "function": "ldv_random_containerless_scenario_17"} */
3366 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3367 1 : int (*ldv_17_callback_fault)(struct vm_area_struct *, struct vm_fault *);
3368 1 : struct vm_area_struct *ldv_17_container_struct_vm_area_struct_ptr;
3369 1 : struct vm_fault *ldv_17_container_struct_vm_fault_ptr;
3370 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3371 1 : /* LDV {"action": "DEFAULT_REGISTER_9", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_VM_OPERATIONS_STRUCT callbacks invocations scenario."} */
3372 2 : ldv_free(arg0);
3373 : /* LDV {"action": "DEFAULT_REGISTER_9", "type": "RECEIVE_END"} */
3374 :
3375 : /* LDV {"action": "DEFAULT_ALLOC_9", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
3376 3 : ldv_17_container_struct_vm_area_struct_ptr = ldv_xmalloc_unknown_size(0);
3377 3 : ldv_17_container_struct_vm_fault_ptr = ldv_xmalloc_unknown_size(0);
3378 : /* LDV {"action": "DEFAULT_ALLOC_9", "type": "CONDITION_END"} */
3379 :
3380 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3381 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3382 :
3383 : /* Jump to a subprocess 'call' initial state */
3384 1 : goto ldv_call_17;
3385 : /* End of the process */
3386 : return;
3387 1 :
3388 : /* Sbprocess call */
3389 : ldv_call_17:
3390 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3391 :
3392 4 : if (ldv_undef_int()) {
3393 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback fault from vm_operations_struct."} */
3394 : /* LDV {"type": "CALLBACK", "call": "((& sg_vma_fault))(ldv_17_container_struct_vm_area_struct_ptr, ldv_17_container_struct_vm_fault_ptr);", "comment": "callback"} */
3395 2 : ldv_random_containerless_scenario_callback_17_4(ldv_17_callback_fault, ldv_17_container_struct_vm_area_struct_ptr, ldv_17_container_struct_vm_fault_ptr);
3396 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
3397 :
3398 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
3399 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
3400 :
3401 : /* Jump to a subprocess 'call' initial state */
3402 1 : goto ldv_call_17;
3403 : }
3404 : else {
3405 : /* LDV {"action": "DEFAULT_FREE_9", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
3406 2 : ldv_free(ldv_17_container_struct_vm_area_struct_ptr);
3407 2 : ldv_free(ldv_17_container_struct_vm_fault_ptr);
3408 : /* LDV {"action": "DEFAULT_FREE_9", "type": "CONDITION_END"} */
3409 :
3410 : /* LDV {"action": "DEFAULT_DEREGISTER_9", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_VM_OPERATIONS_STRUCT callbacks invocations scenario."} */
3411 : /* Skip a non-replicative signal receiving */
3412 : /* LDV {"action": "DEFAULT_DEREGISTER_9", "type": "RECEIVE_END"} */
3413 :
3414 : /* Exit function at a terminal state */
3415 1 : return;
3416 : }
3417 : /* End of the subprocess 'call' */
3418 : return;
3419 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_vm_operations_struct)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_17"} */
3420 : }
3421 :
3422 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_15_3 */
3423 : void ldv_random_containerless_scenario_callback_15_3(int (*arg0)(struct device *, struct class_interface *), struct device *arg1, struct class_interface *arg2) {
3424 7 : ((& sg_add))(arg1, arg2);
3425 1 : }
3426 :
3427 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_15_6 */
3428 : void ldv_random_containerless_scenario_callback_15_6(void (*arg0)(struct device *, struct class_interface *), struct device *arg1, struct class_interface *arg2) {
3429 3 : ((& sg_remove))(arg1, arg2);
3430 1 : }
3431 :
3432 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_16_10 */
3433 : void ldv_random_containerless_scenario_callback_16_10(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
3434 1 : ((& param_set_int))(arg1, arg2);
3435 1 : }
3436 :
3437 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_16_4 */
3438 : void ldv_random_containerless_scenario_callback_16_4(int (*arg0)(char *, struct kernel_param *), char *arg1, struct kernel_param *arg2) {
3439 1 : ((& param_get_int))(arg1, arg2);
3440 1 : }
3441 :
3442 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_17_4 */
3443 : void ldv_random_containerless_scenario_callback_17_4(int (*arg0)(struct vm_area_struct *, struct vm_fault *), struct vm_area_struct *arg1, struct vm_fault *arg2) {
3444 4 : ((& sg_vma_fault))(arg1, arg2);
3445 1 : }
3446 :
3447 : /* AUX_FUNC ldv_traverse_kernel_items_scenario_10 */
3448 : void ldv_traverse_kernel_items_scenario_10(void *arg0) {
3449 : /* LDV {"thread": 10, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'traverse_kernel_items_scenario(seq_operations)'", "function": "ldv_traverse_kernel_items_scenario_10"} */
3450 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3451 3 : long long int *ldv_10_ldv_param_13_1_default;
3452 3 : void *ldv_10_ldv_param_2_1_default;
3453 3 : void *ldv_10_ldv_param_6_1_default;
3454 3 : void *ldv_10_ldv_param_7_1_default;
3455 3 : long long int *ldv_10_ldv_param_7_2_default;
3456 3 : struct seq_operations *ldv_10_ops_seq_operations;
3457 3 : void *ldv_10_ret_default;
3458 3 : struct seq_file *ldv_10_seq_file_seq_file;
3459 3 : /* Received labels */
3460 6 : struct ldv_struct_traverse_kernel_items_scenario_9 *data = (struct ldv_struct_traverse_kernel_items_scenario_9*) arg0;
3461 3 :
3462 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3463 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin SEQ_OPERATIONS callbacks invocations scenario."} */
3464 : /* Assign recieved labels */
3465 6 : if (data) {
3466 3 : ldv_10_seq_file_seq_file = data->arg0;
3467 3 : ldv_10_ops_seq_operations = data->arg1;
3468 6 : ldv_free(data);
3469 : }
3470 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
3471 :
3472 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3473 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3474 :
3475 : /* Jump to a subprocess 'start_step' initial state */
3476 6 : goto ldv_start_step_10;
3477 : /* End of the process */
3478 : return;
3479 3 :
3480 : /* Sbprocess start_step */
3481 : ldv_start_step_10:
3482 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3483 :
3484 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3485 9 : ldv_10_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
3486 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
3487 :
3488 : /* LDV {"action": "START", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize data for walking through a list of kernel items. Invoke callback start from seq_operations."} */
3489 : /* LDV {"type": "CALLBACK", "call": "ldv_10_ret_default = ((& dev_seq_start))(ldv_10_seq_file_seq_file, ldv_10_ldv_param_13_1_default);", "comment": "start"} */
3490 6 : ldv_10_ret_default = ldv_traverse_kernel_items_scenario_start_10_13(ldv_10_ops_seq_operations->start, ldv_10_seq_file_seq_file, ldv_10_ldv_param_13_1_default);
3491 : /* LDV {"action": "START", "type": "CALL_END"} */
3492 :
3493 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3494 6 : ldv_free(ldv_10_ldv_param_13_1_default);
3495 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
3496 :
3497 12 : if (ldv_undef_int()) {
3498 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_BEGIN", "comment": "A new sequence is initialized successfully."} */
3499 6 : ldv_assume(ldv_10_ret_default != 0);
3500 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_END"} */
3501 :
3502 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3503 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3504 :
3505 : /* Jump to a subprocess 'next_step' initial state */
3506 3 : goto ldv_next_step_10;
3507 : }
3508 : else {
3509 : /* LDV {"action": "START_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize a new sequence."} */
3510 6 : ldv_assume(ldv_10_ret_default == 0);
3511 : /* LDV {"action": "START_FAILED", "type": "CONDITION_END"} */
3512 :
3513 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
3514 6 : ldv_free(ldv_10_seq_file_seq_file);
3515 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
3516 :
3517 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish SEQ_OPERATIONS callbacks invocations scenario."} */
3518 : /* Skip a non-replicative signal receiving */
3519 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
3520 :
3521 : /* Exit function at a terminal state */
3522 3 : return;
3523 : }
3524 : /* End of the subprocess 'start_step' */
3525 : return;
3526 3 :
3527 : /* Sbprocess next_step */
3528 : ldv_next_step_10:
3529 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3530 :
3531 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3532 6 : ldv_10_ldv_param_7_1_default = ldv_xmalloc_unknown_size(0);
3533 9 : ldv_10_ldv_param_7_2_default = ldv_xmalloc_unknown_size(0);
3534 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_END"} */
3535 :
3536 : /* LDV {"action": "NEXT", "type": "CALL_BEGIN", "callback": true, "comment": "Advance to the new item. Invoke callback next from seq_operations."} */
3537 : /* LDV {"type": "CALLBACK", "call": "ldv_10_ret_default = ((& dev_seq_next))(ldv_10_seq_file_seq_file, ldv_10_ldv_param_7_1_default, ldv_10_ldv_param_7_2_default);", "comment": "next"} */
3538 6 : ldv_10_ret_default = ldv_traverse_kernel_items_scenario_next_10_7(ldv_10_ops_seq_operations->next, ldv_10_seq_file_seq_file, ldv_10_ldv_param_7_1_default, ldv_10_ldv_param_7_2_default);
3539 : /* LDV {"action": "NEXT", "type": "CALL_END"} */
3540 :
3541 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3542 6 : ldv_free(ldv_10_ldv_param_7_1_default);
3543 6 : ldv_free(ldv_10_ldv_param_7_2_default);
3544 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_END"} */
3545 :
3546 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3547 6 : ldv_10_ldv_param_6_1_default = ldv_xmalloc_unknown_size(0);
3548 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
3549 :
3550 : /* LDV {"action": "SHOW", "type": "CALL_BEGIN", "callback": true, "comment": "Show current item: put data into the seq_file output buffer. Invoke callback show from seq_operations."} */
3551 : /* LDV {"type": "CALLBACK", "call": "((& sg_proc_seq_show_dev))(ldv_10_seq_file_seq_file, ldv_10_ldv_param_6_1_default);", "comment": "show"} */
3552 6 : ldv_traverse_kernel_items_scenario_show_10_6(ldv_10_ops_seq_operations->show, ldv_10_seq_file_seq_file, ldv_10_ldv_param_6_1_default);
3553 : /* LDV {"action": "SHOW", "type": "CALL_END"} */
3554 :
3555 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3556 6 : ldv_free(ldv_10_ldv_param_6_1_default);
3557 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
3558 :
3559 12 : if (ldv_undef_int()) {
3560 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "More items to show are left."} */
3561 6 : ldv_assume(ldv_10_ret_default != 0);
3562 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_END"} */
3563 :
3564 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3565 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3566 :
3567 : /* Jump to a subprocess 'next_step' initial state */
3568 3 : goto ldv_next_step_10;
3569 : }
3570 : else {
3571 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_BEGIN", "comment": "The last kernel item is reached."} */
3572 6 : ldv_assume(ldv_10_ret_default == 0);
3573 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_END"} */
3574 :
3575 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3576 6 : ldv_10_ldv_param_2_1_default = ldv_xmalloc_unknown_size(0);
3577 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_END"} */
3578 :
3579 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "End of the sequence is reached, do necessary cleanup. Invoke callback stop from seq_operations."} */
3580 : /* LDV {"type": "CALLBACK", "call": "((& dev_seq_stop))(ldv_10_seq_file_seq_file, ldv_10_ldv_param_2_1_default);", "comment": "stop"} */
3581 6 : ldv_traverse_kernel_items_scenario_stop_10_2(ldv_10_ops_seq_operations->stop, ldv_10_seq_file_seq_file, ldv_10_ldv_param_2_1_default);
3582 : /* LDV {"action": "STOP", "type": "CALL_END"} */
3583 :
3584 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3585 6 : ldv_free(ldv_10_ldv_param_2_1_default);
3586 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_END"} */
3587 :
3588 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3589 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3590 :
3591 : /* Jump to a subprocess 'start_step' initial state */
3592 3 : goto ldv_start_step_10;
3593 : }
3594 : /* End of the subprocess 'next_step' */
3595 : return;
3596 : /* LDV {"comment": "End of control function based on process 'traverse_kernel_items_scenario(seq_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_traverse_kernel_items_scenario_10"} */
3597 : }
3598 :
3599 : /* AUX_FUNC ldv_traverse_kernel_items_scenario_11 */
3600 : void ldv_traverse_kernel_items_scenario_11(void *arg0) {
3601 : /* LDV {"thread": 11, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'traverse_kernel_items_scenario(seq_operations)'", "function": "ldv_traverse_kernel_items_scenario_11"} */
3602 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3603 3 : long long int *ldv_11_ldv_param_13_1_default;
3604 3 : void *ldv_11_ldv_param_2_1_default;
3605 3 : void *ldv_11_ldv_param_6_1_default;
3606 3 : void *ldv_11_ldv_param_7_1_default;
3607 3 : long long int *ldv_11_ldv_param_7_2_default;
3608 3 : struct seq_operations *ldv_11_ops_seq_operations;
3609 3 : void *ldv_11_ret_default;
3610 3 : struct seq_file *ldv_11_seq_file_seq_file;
3611 3 : /* Received labels */
3612 6 : struct ldv_struct_traverse_kernel_items_scenario_9 *data = (struct ldv_struct_traverse_kernel_items_scenario_9*) arg0;
3613 3 :
3614 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3615 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin SEQ_OPERATIONS callbacks invocations scenario."} */
3616 : /* Assign recieved labels */
3617 6 : if (data) {
3618 3 : ldv_11_seq_file_seq_file = data->arg0;
3619 3 : ldv_11_ops_seq_operations = data->arg1;
3620 6 : ldv_free(data);
3621 : }
3622 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
3623 :
3624 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3625 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3626 :
3627 : /* Jump to a subprocess 'start_step' initial state */
3628 6 : goto ldv_start_step_11;
3629 : /* End of the process */
3630 : return;
3631 3 :
3632 : /* Sbprocess start_step */
3633 : ldv_start_step_11:
3634 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3635 :
3636 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3637 9 : ldv_11_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
3638 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
3639 :
3640 : /* LDV {"action": "START", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize data for walking through a list of kernel items. Invoke callback start from seq_operations."} */
3641 : /* LDV {"type": "CALLBACK", "call": "ldv_11_ret_default = ((& dev_seq_start))(ldv_11_seq_file_seq_file, ldv_11_ldv_param_13_1_default);", "comment": "start"} */
3642 6 : ldv_11_ret_default = ldv_traverse_kernel_items_scenario_start_11_13(ldv_11_ops_seq_operations->start, ldv_11_seq_file_seq_file, ldv_11_ldv_param_13_1_default);
3643 : /* LDV {"action": "START", "type": "CALL_END"} */
3644 :
3645 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3646 6 : ldv_free(ldv_11_ldv_param_13_1_default);
3647 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
3648 :
3649 12 : if (ldv_undef_int()) {
3650 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_BEGIN", "comment": "A new sequence is initialized successfully."} */
3651 6 : ldv_assume(ldv_11_ret_default != 0);
3652 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_END"} */
3653 :
3654 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3655 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3656 :
3657 : /* Jump to a subprocess 'next_step' initial state */
3658 3 : goto ldv_next_step_11;
3659 : }
3660 : else {
3661 : /* LDV {"action": "START_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize a new sequence."} */
3662 6 : ldv_assume(ldv_11_ret_default == 0);
3663 : /* LDV {"action": "START_FAILED", "type": "CONDITION_END"} */
3664 :
3665 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
3666 6 : ldv_free(ldv_11_seq_file_seq_file);
3667 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
3668 :
3669 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish SEQ_OPERATIONS callbacks invocations scenario."} */
3670 : /* Skip a non-replicative signal receiving */
3671 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
3672 :
3673 : /* Exit function at a terminal state */
3674 3 : return;
3675 : }
3676 : /* End of the subprocess 'start_step' */
3677 : return;
3678 3 :
3679 : /* Sbprocess next_step */
3680 : ldv_next_step_11:
3681 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3682 :
3683 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3684 6 : ldv_11_ldv_param_7_1_default = ldv_xmalloc_unknown_size(0);
3685 9 : ldv_11_ldv_param_7_2_default = ldv_xmalloc_unknown_size(0);
3686 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_END"} */
3687 :
3688 : /* LDV {"action": "NEXT", "type": "CALL_BEGIN", "callback": true, "comment": "Advance to the new item. Invoke callback next from seq_operations."} */
3689 : /* LDV {"type": "CALLBACK", "call": "ldv_11_ret_default = ((& dev_seq_next))(ldv_11_seq_file_seq_file, ldv_11_ldv_param_7_1_default, ldv_11_ldv_param_7_2_default);", "comment": "next"} */
3690 6 : ldv_11_ret_default = ldv_traverse_kernel_items_scenario_next_11_7(ldv_11_ops_seq_operations->next, ldv_11_seq_file_seq_file, ldv_11_ldv_param_7_1_default, ldv_11_ldv_param_7_2_default);
3691 : /* LDV {"action": "NEXT", "type": "CALL_END"} */
3692 :
3693 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3694 6 : ldv_free(ldv_11_ldv_param_7_1_default);
3695 6 : ldv_free(ldv_11_ldv_param_7_2_default);
3696 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_END"} */
3697 :
3698 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3699 6 : ldv_11_ldv_param_6_1_default = ldv_xmalloc_unknown_size(0);
3700 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
3701 :
3702 : /* LDV {"action": "SHOW", "type": "CALL_BEGIN", "callback": true, "comment": "Show current item: put data into the seq_file output buffer. Invoke callback show from seq_operations."} */
3703 : /* LDV {"type": "CALLBACK", "call": "((& sg_proc_seq_show_devstrs))(ldv_11_seq_file_seq_file, ldv_11_ldv_param_6_1_default);", "comment": "show"} */
3704 6 : ldv_traverse_kernel_items_scenario_show_11_6(ldv_11_ops_seq_operations->show, ldv_11_seq_file_seq_file, ldv_11_ldv_param_6_1_default);
3705 : /* LDV {"action": "SHOW", "type": "CALL_END"} */
3706 :
3707 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3708 6 : ldv_free(ldv_11_ldv_param_6_1_default);
3709 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
3710 :
3711 12 : if (ldv_undef_int()) {
3712 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "More items to show are left."} */
3713 6 : ldv_assume(ldv_11_ret_default != 0);
3714 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_END"} */
3715 :
3716 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3717 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3718 :
3719 : /* Jump to a subprocess 'next_step' initial state */
3720 3 : goto ldv_next_step_11;
3721 : }
3722 : else {
3723 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_BEGIN", "comment": "The last kernel item is reached."} */
3724 6 : ldv_assume(ldv_11_ret_default == 0);
3725 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_END"} */
3726 :
3727 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3728 6 : ldv_11_ldv_param_2_1_default = ldv_xmalloc_unknown_size(0);
3729 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_END"} */
3730 :
3731 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "End of the sequence is reached, do necessary cleanup. Invoke callback stop from seq_operations."} */
3732 : /* LDV {"type": "CALLBACK", "call": "((& dev_seq_stop))(ldv_11_seq_file_seq_file, ldv_11_ldv_param_2_1_default);", "comment": "stop"} */
3733 6 : ldv_traverse_kernel_items_scenario_stop_11_2(ldv_11_ops_seq_operations->stop, ldv_11_seq_file_seq_file, ldv_11_ldv_param_2_1_default);
3734 : /* LDV {"action": "STOP", "type": "CALL_END"} */
3735 :
3736 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3737 6 : ldv_free(ldv_11_ldv_param_2_1_default);
3738 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_END"} */
3739 :
3740 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3741 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3742 :
3743 : /* Jump to a subprocess 'start_step' initial state */
3744 3 : goto ldv_start_step_11;
3745 : }
3746 : /* End of the subprocess 'next_step' */
3747 : return;
3748 : /* LDV {"comment": "End of control function based on process 'traverse_kernel_items_scenario(seq_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_traverse_kernel_items_scenario_11"} */
3749 : }
3750 :
3751 : /* AUX_FUNC ldv_traverse_kernel_items_scenario_12 */
3752 : void ldv_traverse_kernel_items_scenario_12(void *arg0) {
3753 : /* LDV {"thread": 12, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'traverse_kernel_items_scenario(seq_operations)'", "function": "ldv_traverse_kernel_items_scenario_12"} */
3754 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3755 3 : long long int *ldv_12_ldv_param_13_1_default;
3756 3 : void *ldv_12_ldv_param_2_1_default;
3757 3 : void *ldv_12_ldv_param_6_1_default;
3758 3 : void *ldv_12_ldv_param_7_1_default;
3759 3 : long long int *ldv_12_ldv_param_7_2_default;
3760 3 : struct seq_operations *ldv_12_ops_seq_operations;
3761 3 : void *ldv_12_ret_default;
3762 3 : struct seq_file *ldv_12_seq_file_seq_file;
3763 3 : /* Received labels */
3764 6 : struct ldv_struct_traverse_kernel_items_scenario_9 *data = (struct ldv_struct_traverse_kernel_items_scenario_9*) arg0;
3765 3 :
3766 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3767 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin SEQ_OPERATIONS callbacks invocations scenario."} */
3768 : /* Assign recieved labels */
3769 6 : if (data) {
3770 3 : ldv_12_seq_file_seq_file = data->arg0;
3771 3 : ldv_12_ops_seq_operations = data->arg1;
3772 6 : ldv_free(data);
3773 : }
3774 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
3775 :
3776 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3777 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3778 :
3779 : /* Jump to a subprocess 'start_step' initial state */
3780 6 : goto ldv_start_step_12;
3781 : /* End of the process */
3782 : return;
3783 3 :
3784 : /* Sbprocess start_step */
3785 : ldv_start_step_12:
3786 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3787 :
3788 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3789 9 : ldv_12_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
3790 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
3791 :
3792 : /* LDV {"action": "START", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize data for walking through a list of kernel items. Invoke callback start from seq_operations."} */
3793 : /* LDV {"type": "CALLBACK", "call": "ldv_12_ret_default = ((& dev_seq_start))(ldv_12_seq_file_seq_file, ldv_12_ldv_param_13_1_default);", "comment": "start"} */
3794 6 : ldv_12_ret_default = ldv_traverse_kernel_items_scenario_start_12_13(ldv_12_ops_seq_operations->start, ldv_12_seq_file_seq_file, ldv_12_ldv_param_13_1_default);
3795 : /* LDV {"action": "START", "type": "CALL_END"} */
3796 :
3797 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3798 6 : ldv_free(ldv_12_ldv_param_13_1_default);
3799 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
3800 :
3801 12 : if (ldv_undef_int()) {
3802 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_BEGIN", "comment": "A new sequence is initialized successfully."} */
3803 6 : ldv_assume(ldv_12_ret_default != 0);
3804 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_END"} */
3805 :
3806 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3807 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3808 :
3809 : /* Jump to a subprocess 'next_step' initial state */
3810 3 : goto ldv_next_step_12;
3811 : }
3812 : else {
3813 : /* LDV {"action": "START_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize a new sequence."} */
3814 6 : ldv_assume(ldv_12_ret_default == 0);
3815 : /* LDV {"action": "START_FAILED", "type": "CONDITION_END"} */
3816 :
3817 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
3818 6 : ldv_free(ldv_12_seq_file_seq_file);
3819 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
3820 :
3821 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish SEQ_OPERATIONS callbacks invocations scenario."} */
3822 : /* Skip a non-replicative signal receiving */
3823 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
3824 :
3825 : /* Exit function at a terminal state */
3826 3 : return;
3827 : }
3828 : /* End of the subprocess 'start_step' */
3829 : return;
3830 3 :
3831 : /* Sbprocess next_step */
3832 : ldv_next_step_12:
3833 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3834 :
3835 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3836 6 : ldv_12_ldv_param_7_1_default = ldv_xmalloc_unknown_size(0);
3837 9 : ldv_12_ldv_param_7_2_default = ldv_xmalloc_unknown_size(0);
3838 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_END"} */
3839 :
3840 : /* LDV {"action": "NEXT", "type": "CALL_BEGIN", "callback": true, "comment": "Advance to the new item. Invoke callback next from seq_operations."} */
3841 : /* LDV {"type": "CALLBACK", "call": "ldv_12_ret_default = ((& dev_seq_next))(ldv_12_seq_file_seq_file, ldv_12_ldv_param_7_1_default, ldv_12_ldv_param_7_2_default);", "comment": "next"} */
3842 6 : ldv_12_ret_default = ldv_traverse_kernel_items_scenario_next_12_7(ldv_12_ops_seq_operations->next, ldv_12_seq_file_seq_file, ldv_12_ldv_param_7_1_default, ldv_12_ldv_param_7_2_default);
3843 : /* LDV {"action": "NEXT", "type": "CALL_END"} */
3844 :
3845 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3846 6 : ldv_free(ldv_12_ldv_param_7_1_default);
3847 6 : ldv_free(ldv_12_ldv_param_7_2_default);
3848 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_END"} */
3849 :
3850 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3851 6 : ldv_12_ldv_param_6_1_default = ldv_xmalloc_unknown_size(0);
3852 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
3853 :
3854 : /* LDV {"action": "SHOW", "type": "CALL_BEGIN", "callback": true, "comment": "Show current item: put data into the seq_file output buffer. Invoke callback show from SEQ_OPERATIONS."} */
3855 : /* LDV {"type": "CALLBACK", "call": "((sg_proc_seq_show_devhdr))(ldv_12_seq_file_seq_file, ldv_12_ldv_param_6_1_default);", "comment": "show"} */
3856 6 : ldv_traverse_kernel_items_scenario_show_12_6(ldv_12_ops_seq_operations->show, ldv_12_seq_file_seq_file, ldv_12_ldv_param_6_1_default);
3857 : /* LDV {"action": "SHOW", "type": "CALL_END"} */
3858 :
3859 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3860 6 : ldv_free(ldv_12_ldv_param_6_1_default);
3861 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
3862 :
3863 12 : if (ldv_undef_int()) {
3864 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "More items to show are left."} */
3865 6 : ldv_assume(ldv_12_ret_default != 0);
3866 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_END"} */
3867 :
3868 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3869 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3870 :
3871 : /* Jump to a subprocess 'next_step' initial state */
3872 3 : goto ldv_next_step_12;
3873 : }
3874 : else {
3875 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_BEGIN", "comment": "The last kernel item is reached."} */
3876 6 : ldv_assume(ldv_12_ret_default == 0);
3877 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_END"} */
3878 :
3879 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3880 6 : ldv_12_ldv_param_2_1_default = ldv_xmalloc_unknown_size(0);
3881 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_END"} */
3882 :
3883 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "End of the sequence is reached, do necessary cleanup. Invoke callback stop from seq_operations."} */
3884 : /* LDV {"type": "CALLBACK", "call": "((& dev_seq_stop))(ldv_12_seq_file_seq_file, ldv_12_ldv_param_2_1_default);", "comment": "stop"} */
3885 6 : ldv_traverse_kernel_items_scenario_stop_12_2(ldv_12_ops_seq_operations->stop, ldv_12_seq_file_seq_file, ldv_12_ldv_param_2_1_default);
3886 : /* LDV {"action": "STOP", "type": "CALL_END"} */
3887 :
3888 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3889 6 : ldv_free(ldv_12_ldv_param_2_1_default);
3890 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_END"} */
3891 :
3892 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3893 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3894 :
3895 : /* Jump to a subprocess 'start_step' initial state */
3896 3 : goto ldv_start_step_12;
3897 : }
3898 : /* End of the subprocess 'next_step' */
3899 : return;
3900 : /* LDV {"comment": "End of control function based on process 'traverse_kernel_items_scenario(seq_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_traverse_kernel_items_scenario_12"} */
3901 : }
3902 :
3903 : /* AUX_FUNC ldv_traverse_kernel_items_scenario_13 */
3904 : void ldv_traverse_kernel_items_scenario_13(void *arg0) {
3905 : /* LDV {"thread": 13, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'traverse_kernel_items_scenario(seq_operations)'", "function": "ldv_traverse_kernel_items_scenario_13"} */
3906 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
3907 3 : long long int *ldv_13_ldv_param_13_1_default;
3908 3 : void *ldv_13_ldv_param_2_1_default;
3909 3 : void *ldv_13_ldv_param_6_1_default;
3910 3 : void *ldv_13_ldv_param_7_1_default;
3911 3 : long long int *ldv_13_ldv_param_7_2_default;
3912 3 : struct seq_operations *ldv_13_ops_seq_operations;
3913 3 : void *ldv_13_ret_default;
3914 3 : struct seq_file *ldv_13_seq_file_seq_file;
3915 3 : /* Received labels */
3916 6 : struct ldv_struct_traverse_kernel_items_scenario_9 *data = (struct ldv_struct_traverse_kernel_items_scenario_9*) arg0;
3917 3 :
3918 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
3919 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin SEQ_OPERATIONS callbacks invocations scenario."} */
3920 : /* Assign recieved labels */
3921 6 : if (data) {
3922 3 : ldv_13_seq_file_seq_file = data->arg0;
3923 3 : ldv_13_ops_seq_operations = data->arg1;
3924 6 : ldv_free(data);
3925 : }
3926 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
3927 :
3928 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
3929 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
3930 :
3931 : /* Jump to a subprocess 'start_step' initial state */
3932 6 : goto ldv_start_step_13;
3933 : /* End of the process */
3934 : return;
3935 3 :
3936 : /* Sbprocess start_step */
3937 : ldv_start_step_13:
3938 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3939 :
3940 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3941 9 : ldv_13_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
3942 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
3943 :
3944 : /* LDV {"action": "START", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize data for walking through a list of kernel items. Invoke callback start from seq_operations."} */
3945 : /* LDV {"type": "CALLBACK", "call": "ldv_13_ret_default = ((& dev_seq_start))(ldv_13_seq_file_seq_file, ldv_13_ldv_param_13_1_default);", "comment": "start"} */
3946 6 : ldv_13_ret_default = ldv_traverse_kernel_items_scenario_start_13_13(ldv_13_ops_seq_operations->start, ldv_13_seq_file_seq_file, ldv_13_ldv_param_13_1_default);
3947 : /* LDV {"action": "START", "type": "CALL_END"} */
3948 :
3949 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3950 6 : ldv_free(ldv_13_ldv_param_13_1_default);
3951 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
3952 :
3953 12 : if (ldv_undef_int()) {
3954 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_BEGIN", "comment": "A new sequence is initialized successfully."} */
3955 6 : ldv_assume(ldv_13_ret_default != 0);
3956 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_END"} */
3957 :
3958 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
3959 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
3960 :
3961 : /* Jump to a subprocess 'next_step' initial state */
3962 3 : goto ldv_next_step_13;
3963 : }
3964 : else {
3965 : /* LDV {"action": "START_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize a new sequence."} */
3966 6 : ldv_assume(ldv_13_ret_default == 0);
3967 : /* LDV {"action": "START_FAILED", "type": "CONDITION_END"} */
3968 :
3969 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
3970 6 : ldv_free(ldv_13_seq_file_seq_file);
3971 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
3972 :
3973 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish SEQ_OPERATIONS callbacks invocations scenario."} */
3974 : /* Skip a non-replicative signal receiving */
3975 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
3976 :
3977 : /* Exit function at a terminal state */
3978 3 : return;
3979 : }
3980 : /* End of the subprocess 'start_step' */
3981 : return;
3982 3 :
3983 : /* Sbprocess next_step */
3984 : ldv_next_step_13:
3985 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
3986 :
3987 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
3988 6 : ldv_13_ldv_param_7_1_default = ldv_xmalloc_unknown_size(0);
3989 9 : ldv_13_ldv_param_7_2_default = ldv_xmalloc_unknown_size(0);
3990 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_END"} */
3991 :
3992 : /* LDV {"action": "NEXT", "type": "CALL_BEGIN", "callback": true, "comment": "Advance to the new item. Invoke callback next from seq_operations."} */
3993 : /* LDV {"type": "CALLBACK", "call": "ldv_13_ret_default = ((& dev_seq_next))(ldv_13_seq_file_seq_file, ldv_13_ldv_param_7_1_default, ldv_13_ldv_param_7_2_default);", "comment": "next"} */
3994 6 : ldv_13_ret_default = ldv_traverse_kernel_items_scenario_next_13_7(ldv_13_ops_seq_operations->next, ldv_13_seq_file_seq_file, ldv_13_ldv_param_7_1_default, ldv_13_ldv_param_7_2_default);
3995 : /* LDV {"action": "NEXT", "type": "CALL_END"} */
3996 :
3997 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
3998 6 : ldv_free(ldv_13_ldv_param_7_1_default);
3999 6 : ldv_free(ldv_13_ldv_param_7_2_default);
4000 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_END"} */
4001 :
4002 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4003 6 : ldv_13_ldv_param_6_1_default = ldv_xmalloc_unknown_size(0);
4004 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
4005 :
4006 : /* LDV {"action": "SHOW", "type": "CALL_BEGIN", "callback": true, "comment": "Show current item: put data into the seq_file output buffer. Invoke callback show from SEQ_OPERATIONS."} */
4007 : /* LDV {"type": "CALLBACK", "call": "((sg_proc_seq_show_int))(ldv_13_seq_file_seq_file, ldv_13_ldv_param_6_1_default);", "comment": "show"} */
4008 6 : ldv_traverse_kernel_items_scenario_show_13_6(ldv_13_ops_seq_operations->show, ldv_13_seq_file_seq_file, ldv_13_ldv_param_6_1_default);
4009 : /* LDV {"action": "SHOW", "type": "CALL_END"} */
4010 :
4011 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4012 6 : ldv_free(ldv_13_ldv_param_6_1_default);
4013 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
4014 :
4015 12 : if (ldv_undef_int()) {
4016 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "More items to show are left."} */
4017 6 : ldv_assume(ldv_13_ret_default != 0);
4018 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_END"} */
4019 :
4020 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
4021 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
4022 :
4023 : /* Jump to a subprocess 'next_step' initial state */
4024 3 : goto ldv_next_step_13;
4025 : }
4026 : else {
4027 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_BEGIN", "comment": "The last kernel item is reached."} */
4028 6 : ldv_assume(ldv_13_ret_default == 0);
4029 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_END"} */
4030 :
4031 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4032 6 : ldv_13_ldv_param_2_1_default = ldv_xmalloc_unknown_size(0);
4033 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_END"} */
4034 :
4035 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "End of the sequence is reached, do necessary cleanup. Invoke callback stop from seq_operations."} */
4036 : /* LDV {"type": "CALLBACK", "call": "((& dev_seq_stop))(ldv_13_seq_file_seq_file, ldv_13_ldv_param_2_1_default);", "comment": "stop"} */
4037 6 : ldv_traverse_kernel_items_scenario_stop_13_2(ldv_13_ops_seq_operations->stop, ldv_13_seq_file_seq_file, ldv_13_ldv_param_2_1_default);
4038 : /* LDV {"action": "STOP", "type": "CALL_END"} */
4039 :
4040 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4041 6 : ldv_free(ldv_13_ldv_param_2_1_default);
4042 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_END"} */
4043 :
4044 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
4045 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
4046 :
4047 : /* Jump to a subprocess 'start_step' initial state */
4048 3 : goto ldv_start_step_13;
4049 : }
4050 : /* End of the subprocess 'next_step' */
4051 : return;
4052 : /* LDV {"comment": "End of control function based on process 'traverse_kernel_items_scenario(seq_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_traverse_kernel_items_scenario_13"} */
4053 : }
4054 :
4055 : /* AUX_FUNC ldv_traverse_kernel_items_scenario_14 */
4056 : void ldv_traverse_kernel_items_scenario_14(void *arg0) {
4057 : /* LDV {"thread": 14, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'traverse_kernel_items_scenario(seq_operations)'", "function": "ldv_traverse_kernel_items_scenario_14"} */
4058 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
4059 3 : long long int *ldv_14_ldv_param_13_1_default;
4060 3 : void *ldv_14_ldv_param_2_1_default;
4061 3 : void *ldv_14_ldv_param_6_1_default;
4062 3 : void *ldv_14_ldv_param_7_1_default;
4063 3 : long long int *ldv_14_ldv_param_7_2_default;
4064 3 : struct seq_operations *ldv_14_ops_seq_operations;
4065 3 : void *ldv_14_ret_default;
4066 3 : struct seq_file *ldv_14_seq_file_seq_file;
4067 3 : /* Received labels */
4068 6 : struct ldv_struct_traverse_kernel_items_scenario_9 *data = (struct ldv_struct_traverse_kernel_items_scenario_9*) arg0;
4069 3 :
4070 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
4071 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin SEQ_OPERATIONS callbacks invocations scenario."} */
4072 : /* Assign recieved labels */
4073 6 : if (data) {
4074 3 : ldv_14_seq_file_seq_file = data->arg0;
4075 3 : ldv_14_ops_seq_operations = data->arg1;
4076 6 : ldv_free(data);
4077 : }
4078 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
4079 :
4080 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
4081 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
4082 :
4083 : /* Jump to a subprocess 'start_step' initial state */
4084 6 : goto ldv_start_step_14;
4085 : /* End of the process */
4086 : return;
4087 3 :
4088 : /* Sbprocess start_step */
4089 : ldv_start_step_14:
4090 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
4091 :
4092 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4093 9 : ldv_14_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
4094 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
4095 :
4096 : /* LDV {"action": "START", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize data for walking through a list of kernel items. Invoke callback start from seq_operations."} */
4097 : /* LDV {"type": "CALLBACK", "call": "ldv_14_ret_default = ((& dev_seq_start))(ldv_14_seq_file_seq_file, ldv_14_ldv_param_13_1_default);", "comment": "start"} */
4098 6 : ldv_14_ret_default = ldv_traverse_kernel_items_scenario_start_14_13(ldv_14_ops_seq_operations->start, ldv_14_seq_file_seq_file, ldv_14_ldv_param_13_1_default);
4099 : /* LDV {"action": "START", "type": "CALL_END"} */
4100 :
4101 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4102 6 : ldv_free(ldv_14_ldv_param_13_1_default);
4103 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
4104 :
4105 12 : if (ldv_undef_int()) {
4106 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_BEGIN", "comment": "A new sequence is initialized successfully."} */
4107 6 : ldv_assume(ldv_14_ret_default != 0);
4108 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_END"} */
4109 :
4110 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
4111 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
4112 :
4113 : /* Jump to a subprocess 'next_step' initial state */
4114 3 : goto ldv_next_step_14;
4115 : }
4116 : else {
4117 : /* LDV {"action": "START_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize a new sequence."} */
4118 6 : ldv_assume(ldv_14_ret_default == 0);
4119 : /* LDV {"action": "START_FAILED", "type": "CONDITION_END"} */
4120 :
4121 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
4122 6 : ldv_free(ldv_14_seq_file_seq_file);
4123 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
4124 :
4125 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish SEQ_OPERATIONS callbacks invocations scenario."} */
4126 : /* Skip a non-replicative signal receiving */
4127 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
4128 :
4129 : /* Exit function at a terminal state */
4130 3 : return;
4131 : }
4132 : /* End of the subprocess 'start_step' */
4133 : return;
4134 3 :
4135 : /* Sbprocess next_step */
4136 : ldv_next_step_14:
4137 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
4138 :
4139 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4140 6 : ldv_14_ldv_param_7_1_default = ldv_xmalloc_unknown_size(0);
4141 9 : ldv_14_ldv_param_7_2_default = ldv_xmalloc_unknown_size(0);
4142 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_END"} */
4143 :
4144 : /* LDV {"action": "NEXT", "type": "CALL_BEGIN", "callback": true, "comment": "Advance to the new item. Invoke callback next from seq_operations."} */
4145 : /* LDV {"type": "CALLBACK", "call": "ldv_14_ret_default = ((& dev_seq_next))(ldv_14_seq_file_seq_file, ldv_14_ldv_param_7_1_default, ldv_14_ldv_param_7_2_default);", "comment": "next"} */
4146 6 : ldv_14_ret_default = ldv_traverse_kernel_items_scenario_next_14_7(ldv_14_ops_seq_operations->next, ldv_14_seq_file_seq_file, ldv_14_ldv_param_7_1_default, ldv_14_ldv_param_7_2_default);
4147 : /* LDV {"action": "NEXT", "type": "CALL_END"} */
4148 :
4149 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4150 6 : ldv_free(ldv_14_ldv_param_7_1_default);
4151 6 : ldv_free(ldv_14_ldv_param_7_2_default);
4152 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_END"} */
4153 :
4154 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4155 6 : ldv_14_ldv_param_6_1_default = ldv_xmalloc_unknown_size(0);
4156 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
4157 :
4158 : /* LDV {"action": "SHOW", "type": "CALL_BEGIN", "callback": true, "comment": "Show current item: put data into the seq_file output buffer. Invoke callback show from SEQ_OPERATIONS."} */
4159 : /* LDV {"type": "CALLBACK", "call": "((sg_proc_seq_show_version))(ldv_14_seq_file_seq_file, ldv_14_ldv_param_6_1_default);", "comment": "show"} */
4160 6 : ldv_traverse_kernel_items_scenario_show_14_6(ldv_14_ops_seq_operations->show, ldv_14_seq_file_seq_file, ldv_14_ldv_param_6_1_default);
4161 : /* LDV {"action": "SHOW", "type": "CALL_END"} */
4162 :
4163 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4164 6 : ldv_free(ldv_14_ldv_param_6_1_default);
4165 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
4166 :
4167 12 : if (ldv_undef_int()) {
4168 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "More items to show are left."} */
4169 6 : ldv_assume(ldv_14_ret_default != 0);
4170 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_END"} */
4171 :
4172 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
4173 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
4174 :
4175 : /* Jump to a subprocess 'next_step' initial state */
4176 3 : goto ldv_next_step_14;
4177 : }
4178 : else {
4179 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_BEGIN", "comment": "The last kernel item is reached."} */
4180 6 : ldv_assume(ldv_14_ret_default == 0);
4181 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_END"} */
4182 :
4183 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4184 6 : ldv_14_ldv_param_2_1_default = ldv_xmalloc_unknown_size(0);
4185 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_END"} */
4186 :
4187 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "End of the sequence is reached, do necessary cleanup. Invoke callback stop from seq_operations."} */
4188 : /* LDV {"type": "CALLBACK", "call": "((& dev_seq_stop))(ldv_14_seq_file_seq_file, ldv_14_ldv_param_2_1_default);", "comment": "stop"} */
4189 6 : ldv_traverse_kernel_items_scenario_stop_14_2(ldv_14_ops_seq_operations->stop, ldv_14_seq_file_seq_file, ldv_14_ldv_param_2_1_default);
4190 : /* LDV {"action": "STOP", "type": "CALL_END"} */
4191 :
4192 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4193 6 : ldv_free(ldv_14_ldv_param_2_1_default);
4194 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_END"} */
4195 :
4196 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
4197 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
4198 :
4199 : /* Jump to a subprocess 'start_step' initial state */
4200 3 : goto ldv_start_step_14;
4201 : }
4202 : /* End of the subprocess 'next_step' */
4203 : return;
4204 : /* LDV {"comment": "End of control function based on process 'traverse_kernel_items_scenario(seq_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_traverse_kernel_items_scenario_14"} */
4205 : }
4206 :
4207 : /* AUX_FUNC ldv_traverse_kernel_items_scenario_9 */
4208 : void ldv_traverse_kernel_items_scenario_9(void *arg0) {
4209 : /* LDV {"thread": 9, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'traverse_kernel_items_scenario(seq_operations)'", "function": "ldv_traverse_kernel_items_scenario_9"} */
4210 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
4211 3 : long long int *ldv_9_ldv_param_13_1_default;
4212 3 : void *ldv_9_ldv_param_2_1_default;
4213 3 : void *ldv_9_ldv_param_6_1_default;
4214 3 : void *ldv_9_ldv_param_7_1_default;
4215 3 : long long int *ldv_9_ldv_param_7_2_default;
4216 3 : struct seq_operations *ldv_9_ops_seq_operations;
4217 3 : void *ldv_9_ret_default;
4218 3 : struct seq_file *ldv_9_seq_file_seq_file;
4219 3 : /* Received labels */
4220 6 : struct ldv_struct_traverse_kernel_items_scenario_9 *data = (struct ldv_struct_traverse_kernel_items_scenario_9*) arg0;
4221 3 :
4222 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
4223 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin SEQ_OPERATIONS callbacks invocations scenario."} */
4224 : /* Assign recieved labels */
4225 6 : if (data) {
4226 3 : ldv_9_seq_file_seq_file = data->arg0;
4227 3 : ldv_9_ops_seq_operations = data->arg1;
4228 6 : ldv_free(data);
4229 : }
4230 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
4231 :
4232 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
4233 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
4234 :
4235 : /* Jump to a subprocess 'start_step' initial state */
4236 6 : goto ldv_start_step_9;
4237 : /* End of the process */
4238 : return;
4239 3 :
4240 : /* Sbprocess start_step */
4241 : ldv_start_step_9:
4242 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
4243 :
4244 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4245 9 : ldv_9_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
4246 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
4247 :
4248 : /* LDV {"action": "START", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize data for walking through a list of kernel items. Invoke callback start from seq_operations."} */
4249 : /* LDV {"type": "CALLBACK", "call": "ldv_9_ret_default = ((& dev_seq_start))(ldv_9_seq_file_seq_file, ldv_9_ldv_param_13_1_default);", "comment": "start"} */
4250 6 : ldv_9_ret_default = ldv_traverse_kernel_items_scenario_start_9_13(ldv_9_ops_seq_operations->start, ldv_9_seq_file_seq_file, ldv_9_ldv_param_13_1_default);
4251 : /* LDV {"action": "START", "type": "CALL_END"} */
4252 :
4253 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4254 6 : ldv_free(ldv_9_ldv_param_13_1_default);
4255 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
4256 :
4257 12 : if (ldv_undef_int()) {
4258 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_BEGIN", "comment": "A new sequence is initialized successfully."} */
4259 6 : ldv_assume(ldv_9_ret_default != 0);
4260 : /* LDV {"action": "START_SUCCESS", "type": "CONDITION_END"} */
4261 :
4262 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
4263 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
4264 :
4265 : /* Jump to a subprocess 'next_step' initial state */
4266 3 : goto ldv_next_step_9;
4267 : }
4268 : else {
4269 : /* LDV {"action": "START_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize a new sequence."} */
4270 6 : ldv_assume(ldv_9_ret_default == 0);
4271 : /* LDV {"action": "START_FAILED", "type": "CONDITION_END"} */
4272 :
4273 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
4274 6 : ldv_free(ldv_9_seq_file_seq_file);
4275 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
4276 :
4277 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish SEQ_OPERATIONS callbacks invocations scenario."} */
4278 : /* Skip a non-replicative signal receiving */
4279 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
4280 :
4281 : /* Exit function at a terminal state */
4282 3 : return;
4283 : }
4284 : /* End of the subprocess 'start_step' */
4285 : return;
4286 3 :
4287 : /* Sbprocess next_step */
4288 : ldv_next_step_9:
4289 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
4290 :
4291 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4292 6 : ldv_9_ldv_param_7_1_default = ldv_xmalloc_unknown_size(0);
4293 9 : ldv_9_ldv_param_7_2_default = ldv_xmalloc_unknown_size(0);
4294 : /* LDV {"action": "PRE_CALL_7", "type": "CONDITION_END"} */
4295 :
4296 : /* LDV {"action": "NEXT", "type": "CALL_BEGIN", "callback": true, "comment": "Advance to the new item. Invoke callback next from seq_operations."} */
4297 : /* LDV {"type": "CALLBACK", "call": "ldv_9_ret_default = ((& dev_seq_next))(ldv_9_seq_file_seq_file, ldv_9_ldv_param_7_1_default, ldv_9_ldv_param_7_2_default);", "comment": "next"} */
4298 6 : ldv_9_ret_default = ldv_traverse_kernel_items_scenario_next_9_7(ldv_9_ops_seq_operations->next, ldv_9_seq_file_seq_file, ldv_9_ldv_param_7_1_default, ldv_9_ldv_param_7_2_default);
4299 : /* LDV {"action": "NEXT", "type": "CALL_END"} */
4300 :
4301 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4302 6 : ldv_free(ldv_9_ldv_param_7_1_default);
4303 6 : ldv_free(ldv_9_ldv_param_7_2_default);
4304 : /* LDV {"action": "POST_CALL_7", "type": "CONDITION_END"} */
4305 :
4306 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4307 6 : ldv_9_ldv_param_6_1_default = ldv_xmalloc_unknown_size(0);
4308 : /* LDV {"action": "PRE_CALL_6", "type": "CONDITION_END"} */
4309 :
4310 : /* LDV {"action": "SHOW", "type": "CALL_BEGIN", "callback": true, "comment": "Show current item: put data into the seq_file output buffer. Invoke callback show from seq_operations."} */
4311 : /* LDV {"type": "CALLBACK", "call": "((& sg_proc_seq_show_debug))(ldv_9_seq_file_seq_file, ldv_9_ldv_param_6_1_default);", "comment": "show"} */
4312 6 : ldv_traverse_kernel_items_scenario_show_9_6(ldv_9_ops_seq_operations->show, ldv_9_seq_file_seq_file, ldv_9_ldv_param_6_1_default);
4313 : /* LDV {"action": "SHOW", "type": "CALL_END"} */
4314 :
4315 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4316 6 : ldv_free(ldv_9_ldv_param_6_1_default);
4317 : /* LDV {"action": "POST_CALL_6", "type": "CONDITION_END"} */
4318 :
4319 12 : if (ldv_undef_int()) {
4320 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "More items to show are left."} */
4321 6 : ldv_assume(ldv_9_ret_default != 0);
4322 : /* LDV {"action": "NEXT_SUCCESS", "type": "CONDITION_END"} */
4323 :
4324 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Continue iteration over kernel items."} */
4325 : /* LDV {"action": "NEXT_STEP", "type": "SUBPROCESS_END"} */
4326 :
4327 : /* Jump to a subprocess 'next_step' initial state */
4328 3 : goto ldv_next_step_9;
4329 : }
4330 : else {
4331 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_BEGIN", "comment": "The last kernel item is reached."} */
4332 6 : ldv_assume(ldv_9_ret_default == 0);
4333 : /* LDV {"action": "NEXT_FAIL", "type": "CONDITION_END"} */
4334 :
4335 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
4336 6 : ldv_9_ldv_param_2_1_default = ldv_xmalloc_unknown_size(0);
4337 : /* LDV {"action": "PRE_CALL_2", "type": "CONDITION_END"} */
4338 :
4339 : /* LDV {"action": "STOP", "type": "CALL_BEGIN", "callback": true, "comment": "End of the sequence is reached, do necessary cleanup. Invoke callback stop from seq_operations."} */
4340 : /* LDV {"type": "CALLBACK", "call": "((& dev_seq_stop))(ldv_9_seq_file_seq_file, ldv_9_ldv_param_2_1_default);", "comment": "stop"} */
4341 6 : ldv_traverse_kernel_items_scenario_stop_9_2(ldv_9_ops_seq_operations->stop, ldv_9_seq_file_seq_file, ldv_9_ldv_param_2_1_default);
4342 : /* LDV {"action": "STOP", "type": "CALL_END"} */
4343 :
4344 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
4345 6 : ldv_free(ldv_9_ldv_param_2_1_default);
4346 : /* LDV {"action": "POST_CALL_2", "type": "CONDITION_END"} */
4347 :
4348 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_BEGIN", "comment": "Start sequence or do nothing."} */
4349 : /* LDV {"action": "START_STEP", "type": "SUBPROCESS_END"} */
4350 :
4351 : /* Jump to a subprocess 'start_step' initial state */
4352 3 : goto ldv_start_step_9;
4353 : }
4354 : /* End of the subprocess 'next_step' */
4355 : return;
4356 : /* LDV {"comment": "End of control function based on process 'traverse_kernel_items_scenario(seq_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_traverse_kernel_items_scenario_9"} */
4357 : }
4358 :
4359 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_next_10_7 */
4360 : void * ldv_traverse_kernel_items_scenario_next_10_7(void *(*arg0)(struct seq_file *, void *, loff_t *), struct seq_file *arg1, void *arg2, long long int *arg3) {
4361 9 : return ((& dev_seq_next))(arg1, arg2, arg3);
4362 : }
4363 :
4364 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_next_11_7 */
4365 3 : void * ldv_traverse_kernel_items_scenario_next_11_7(void *(*arg0)(struct seq_file *, void *, loff_t *), struct seq_file *arg1, void *arg2, long long int *arg3) {
4366 9 : return ((& dev_seq_next))(arg1, arg2, arg3);
4367 : }
4368 :
4369 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_next_12_7 */
4370 3 : void * ldv_traverse_kernel_items_scenario_next_12_7(void *(*arg0)(struct seq_file *, void *, loff_t *), struct seq_file *arg1, void *arg2, long long int *arg3) {
4371 9 : return ((& dev_seq_next))(arg1, arg2, arg3);
4372 : }
4373 :
4374 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_next_13_7 */
4375 3 : void * ldv_traverse_kernel_items_scenario_next_13_7(void *(*arg0)(struct seq_file *, void *, loff_t *), struct seq_file *arg1, void *arg2, long long int *arg3) {
4376 9 : return ((& dev_seq_next))(arg1, arg2, arg3);
4377 : }
4378 :
4379 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_next_14_7 */
4380 3 : void * ldv_traverse_kernel_items_scenario_next_14_7(void *(*arg0)(struct seq_file *, void *, loff_t *), struct seq_file *arg1, void *arg2, long long int *arg3) {
4381 9 : return ((& dev_seq_next))(arg1, arg2, arg3);
4382 : }
4383 :
4384 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_next_9_7 */
4385 3 : void * ldv_traverse_kernel_items_scenario_next_9_7(void *(*arg0)(struct seq_file *, void *, loff_t *), struct seq_file *arg1, void *arg2, long long int *arg3) {
4386 9 : return ((& dev_seq_next))(arg1, arg2, arg3);
4387 : }
4388 :
4389 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_show_10_6 */
4390 3 : void ldv_traverse_kernel_items_scenario_show_10_6(int (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4391 12 : ((& sg_proc_seq_show_dev))(arg1, arg2);
4392 3 : }
4393 :
4394 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_show_11_6 */
4395 : void ldv_traverse_kernel_items_scenario_show_11_6(int (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4396 9 : ((& sg_proc_seq_show_devstrs))(arg1, arg2);
4397 3 : }
4398 :
4399 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_show_12_6 */
4400 : void ldv_traverse_kernel_items_scenario_show_12_6(int (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4401 6 : ((sg_proc_seq_show_devhdr))(arg1, arg2);
4402 3 : }
4403 :
4404 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_show_13_6 */
4405 : void ldv_traverse_kernel_items_scenario_show_13_6(int (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4406 6 : ((sg_proc_seq_show_int))(arg1, arg2);
4407 3 : }
4408 :
4409 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_show_14_6 */
4410 : void ldv_traverse_kernel_items_scenario_show_14_6(int (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4411 6 : ((sg_proc_seq_show_version))(arg1, arg2);
4412 3 : }
4413 :
4414 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_show_9_6 */
4415 : void ldv_traverse_kernel_items_scenario_show_9_6(int (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4416 15 : ((& sg_proc_seq_show_debug))(arg1, arg2);
4417 3 : }
4418 :
4419 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_start_10_13 */
4420 : void * ldv_traverse_kernel_items_scenario_start_10_13(void *(*arg0)(struct seq_file *, loff_t *), struct seq_file *arg1, long long int *arg2) {
4421 12 : return ((& dev_seq_start))(arg1, arg2);
4422 : }
4423 :
4424 3 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_start_11_13 */
4425 : void * ldv_traverse_kernel_items_scenario_start_11_13(void *(*arg0)(struct seq_file *, loff_t *), struct seq_file *arg1, long long int *arg2) {
4426 12 : return ((& dev_seq_start))(arg1, arg2);
4427 : }
4428 :
4429 3 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_start_12_13 */
4430 : void * ldv_traverse_kernel_items_scenario_start_12_13(void *(*arg0)(struct seq_file *, loff_t *), struct seq_file *arg1, long long int *arg2) {
4431 12 : return ((& dev_seq_start))(arg1, arg2);
4432 : }
4433 :
4434 3 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_start_13_13 */
4435 : void * ldv_traverse_kernel_items_scenario_start_13_13(void *(*arg0)(struct seq_file *, loff_t *), struct seq_file *arg1, long long int *arg2) {
4436 12 : return ((& dev_seq_start))(arg1, arg2);
4437 : }
4438 :
4439 3 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_start_14_13 */
4440 : void * ldv_traverse_kernel_items_scenario_start_14_13(void *(*arg0)(struct seq_file *, loff_t *), struct seq_file *arg1, long long int *arg2) {
4441 12 : return ((& dev_seq_start))(arg1, arg2);
4442 : }
4443 :
4444 3 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_start_9_13 */
4445 : void * ldv_traverse_kernel_items_scenario_start_9_13(void *(*arg0)(struct seq_file *, loff_t *), struct seq_file *arg1, long long int *arg2) {
4446 12 : return ((& dev_seq_start))(arg1, arg2);
4447 : }
4448 :
4449 3 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_stop_10_2 */
4450 : void ldv_traverse_kernel_items_scenario_stop_10_2(void (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4451 6 : ((& dev_seq_stop))(arg1, arg2);
4452 3 : }
4453 :
4454 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_stop_11_2 */
4455 : void ldv_traverse_kernel_items_scenario_stop_11_2(void (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4456 6 : ((& dev_seq_stop))(arg1, arg2);
4457 3 : }
4458 :
4459 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_stop_12_2 */
4460 : void ldv_traverse_kernel_items_scenario_stop_12_2(void (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4461 6 : ((& dev_seq_stop))(arg1, arg2);
4462 3 : }
4463 :
4464 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_stop_13_2 */
4465 : void ldv_traverse_kernel_items_scenario_stop_13_2(void (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4466 6 : ((& dev_seq_stop))(arg1, arg2);
4467 3 : }
4468 :
4469 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_stop_14_2 */
4470 : void ldv_traverse_kernel_items_scenario_stop_14_2(void (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4471 6 : ((& dev_seq_stop))(arg1, arg2);
4472 3 : }
4473 :
4474 : /* AUX_FUNC_CALLBACK ldv_traverse_kernel_items_scenario_stop_9_2 */
4475 : void ldv_traverse_kernel_items_scenario_stop_9_2(void (*arg0)(struct seq_file *, void *), struct seq_file *arg1, void *arg2) {
4476 6 : ((& dev_seq_stop))(arg1, arg2);
4477 3 : }
4478 :
4479 : /* AUX_FUNC main */
4480 : int main() {
4481 1 : ldv_main_23(0);
4482 0 : return 0;
4483 : }
4484 :
4485 :
4486 : /* AUX_FUNC ERR_PTR */
4487 : static inline void *ERR_PTR (long int error)
4488 : {
4489 6 :
4490 18 : return ldv_err_ptr(error);
4491 : }
4492 :
4493 : /* AUX_FUNC PTR_ERR */
4494 : static inline long int PTR_ERR (void const *ptr)
4495 : {
4496 4 :
4497 12 : return ldv_ptr_err(ptr);
4498 : }
4499 :
4500 : /* AUX_FUNC IS_ERR */
4501 : static inline long int IS_ERR (void const *ptr)
4502 : {
4503 4 :
4504 12 : return ldv_is_err(ptr);
4505 : }
4506 :
4507 : /* AUX_FUNC IS_ERR_OR_NULL */
4508 : static inline long int IS_ERR_OR_NULL (void const *ptr)
4509 : {
4510 :
4511 : return ldv_is_err_or_null(ptr);
4512 : }
4513 :
4514 : /* AUX_FUNC kzalloc */
4515 : static inline void *kzalloc (size_t size, gfp_t flags)
4516 : {
4517 14 :
4518 42 : return ldv_kzalloc(size, flags);
4519 : }
4520 :
4521 : /* AUX_FUNC ldv_cdev_del_6 */
4522 : void ldv_cdev_del_6 (struct cdev *ldv_func_arg1)
4523 : {
4524 :
4525 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'cdev_del'"} */
4526 8 : ldv_emg_cdev_del(ldv_func_arg1);
4527 4 : }
4528 :
4529 : /* AUX_FUNC ldv_dev_get_drvdata_7 */
4530 : void *ldv_dev_get_drvdata_7 (struct device const *dev)
4531 : {
4532 1 :
4533 3 : return ldv_dev_get_drvdata(dev);
4534 : }
4535 :
4536 : /* AUX_FUNC ldv_cdev_del_8 */
4537 : void ldv_cdev_del_8 (struct cdev *ldv_func_arg1)
4538 : {
4539 :
4540 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'cdev_del'"} */
4541 2 : ldv_emg_cdev_del(ldv_func_arg1);
4542 1 : }
4543 :
4544 : /* AUX_FUNC ldv_scsi_register_interface_9 */
4545 : int ldv_scsi_register_interface_9 (struct class_interface *ldv_func_arg1)
4546 : {
4547 1 :
4548 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'scsi_register_interface'"} */
4549 4 : return ldv_emg_scsi_register_interface(ldv_func_arg1);
4550 : }
4551 :
4552 : /* AUX_FUNC ldv_class_interface_unregister_10 */
4553 : void ldv_class_interface_unregister_10 (struct class_interface *ldv_func_arg1)
4554 : {
4555 :
4556 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'class_interface_unregister'"} */
4557 4 : ldv_emg_class_interface_unregister(ldv_func_arg1);
4558 2 : }
4559 :
4560 : /* AUX_FUNC ldv_seq_open_11 */
4561 : int ldv_seq_open_11 (struct file *ldv_func_arg1, struct seq_operations const *ldv_func_arg2)
4562 : {
4563 1 :
4564 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'seq_open'"} */
4565 3 : return ldv_emg_seq_open(ldv_func_arg1, ldv_func_arg2);
4566 : }
4567 :
4568 : /* AUX_FUNC ldv_seq_open_12 */
4569 : int ldv_seq_open_12 (struct file *ldv_func_arg1, struct seq_operations const *ldv_func_arg2)
4570 : {
4571 1 :
4572 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'seq_open'"} */
4573 3 : return ldv_emg_seq_open(ldv_func_arg1, ldv_func_arg2);
4574 : }
4575 :
4576 : /* AUX_FUNC ldv_seq_open_13 */
4577 : int ldv_seq_open_13 (struct file *ldv_func_arg1, struct seq_operations const *ldv_func_arg2)
4578 : {
4579 1 :
4580 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'seq_open'"} */
4581 3 : return ldv_emg_seq_open(ldv_func_arg1, ldv_func_arg2);
4582 : }
|