LCOV - code coverage report
Current view: top level - home/alexey/klever/native-scheduler-work-dir/native-scheduler-work-dir/scheduler/jobs/032ed983781f2acce615a4df71b22f31/klever-core-work-dir/f1548de/linux-drivers-clk2/avtg/drivers/video/hgafb.ko/linux:drivers:clk2/weaver - hgafb.c.aux (source / functions) Hit Total Coverage
Test: coverage.info Lines: 361 371 97.3 %
Date: 2017-01-25 Functions: 60 60 100.0 %

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

Generated by: LCOV version 1.10