Просмотр исходного кода

ncd: NCDModule: get rid of struct NCDModuleInitParams in favor of struct NCDModuleInst_iparams

ambrop7 13 лет назад
Родитель
Сommit
55cc25ed3e
7 измененных файлов с 19 добавлено и 29 удалено
  1. 3 10
      ncd/NCDModule.h
  2. 1 1
      ncd/modules/depend.c
  3. 1 1
      ncd/modules/dynamic_depend.c
  4. 1 1
      ncd/modules/multidepend.c
  5. 1 1
      ncd/modules/net_dns.c
  6. 2 2
      ncd/modules/net_iptables.c
  7. 10 13
      ncd/ncd.c

+ 3 - 10
ncd/NCDModule.h

@@ -218,13 +218,6 @@ typedef int (*NCDModuleProcess_interp_func_getobj) (void *user, NCD_string_id_t
 
 struct NCDModule;
 
-struct NCDModuleInitParams {
-    BReactor *reactor;
-    BProcessManager *manager;
-    NCDUdevManager *umanager;
-    BRandom2 *random2;
-};
-
 /**
  * Contains parameters to the module initialization function
  * ({@link NCDModule_func_new2}) that are passed indirectly.
@@ -663,11 +656,11 @@ int NCDModuleProcess_Interp_GetSpecialObj (NCDModuleProcess *o, NCD_string_id_t
  * Function called before any instance of any backend in a module
  * group is created;
  * 
- * @param params structure containing global resources, in particular
- *               {@link BReactor}, {@link BProcessManager} and {@link NCDUdevManager}
+ * @param params structure containing global resources, such as
+ *               {@link BReactor}, {@link BProcessManager} and {@link NCDUdevManager}.
  * @return 1 on success, 0 on failure
  */
-typedef int (*NCDModule_func_globalinit) (const struct NCDModuleInitParams params);
+typedef int (*NCDModule_func_globalinit) (const struct NCDModuleInst_iparams *params);
 
 /**
  * Function called to clean up after {@link NCDModule_func_globalinit} and modules

+ 1 - 1
ncd/modules/depend.c

@@ -152,7 +152,7 @@ static void provide_promote (struct provide *o)
     }
 }
 
-static int func_globalinit (struct NCDModuleInitParams params)
+static int func_globalinit (const struct NCDModuleInst_iparams *params)
 {
     // init provides list
     LinkedList1_Init(&provides);

+ 1 - 1
ncd/modules/dynamic_depend.c

@@ -260,7 +260,7 @@ static void name_start_resetting (struct name *o)
     name_continue_resetting(o);
 }
 
-static int func_globalinit (struct NCDModuleInitParams params)
+static int func_globalinit (const struct NCDModuleInst_iparams *params)
 {
     // init names tree
     BAVL_Init(&names_tree, OFFSET_DIFF(struct name, name, names_tree_node), (BAVL_comparator)stringptr_comparator, NULL);

+ 1 - 1
ncd/modules/multidepend.c

@@ -140,7 +140,7 @@ static void depend_update (struct depend *o)
     }
 }
 
-static int func_globalinit (struct NCDModuleInitParams params)
+static int func_globalinit (const struct NCDModuleInst_iparams *params)
 {
     // init provides list
     LinkedList1_Init(&provides);

+ 1 - 1
ncd/modules/net_dns.c

@@ -179,7 +179,7 @@ fail0:
     return ret;
 }
 
-static int func_globalinit (struct NCDModuleInitParams params)
+static int func_globalinit (const struct NCDModuleInst_iparams *params)
 {
     LinkedList1_Init(&instances);
     

+ 2 - 2
ncd/modules/net_iptables.c

@@ -365,10 +365,10 @@ static void lock_job_handler (struct lock_instance *o)
     }
 }
 
-static int func_globalinit (struct NCDModuleInitParams params)
+static int func_globalinit (const struct NCDModuleInst_iparams *params)
 {
     // init iptables lock
-    BEventLock_Init(&iptables_lock, BReactor_PendingGroup(params.reactor));
+    BEventLock_Init(&iptables_lock, BReactor_PendingGroup(params->reactor));
     
     return 1;
 }

+ 10 - 13
ncd/ncd.c

@@ -365,12 +365,14 @@ int main (int argc, char **argv)
         goto fail4a;
     }
     
-    // init module params
-    struct NCDModuleInitParams params;
-    params.reactor = &reactor;
-    params.manager = &manager;
-    params.umanager = &umanager;
-    params.random2 = &random2;
+    // init pointers to global resources in out struct NCDModuleInst_iparams.
+    // Don't initialize any callback at this point as these must not be called
+    // from globalinit functions of modules.
+    module_iparams.reactor = &reactor;
+    module_iparams.manager = &manager;
+    module_iparams.umanager = &umanager;
+    module_iparams.random2 = &random2;
+    module_iparams.string_index = &string_index;
     
     // init modules
     size_t num_inited_modules = 0;
@@ -382,7 +384,7 @@ int main (int argc, char **argv)
         }
         
         // call func_globalinit
-        if ((*g)->func_globalinit && !(*g)->func_globalinit(params)) {
+        if ((*g)->func_globalinit && !(*g)->func_globalinit(&module_iparams)) {
             BLog(BLOG_ERROR, "globalinit failed for some module");
             goto fail5;
         }
@@ -390,16 +392,11 @@ int main (int argc, char **argv)
         num_inited_modules++;
     }
     
-    // init common module params
+    // init the rest of the module parameters structures
     module_params.func_event = statement_instance_func_event;
     module_params.func_getobj = statement_instance_func_getobj;
     module_params.logfunc = (BLog_logfunc)statement_instance_logfunc;
     module_params.iparams = &module_iparams;
-    module_iparams.reactor = &reactor;
-    module_iparams.manager = &manager;
-    module_iparams.umanager = &umanager;
-    module_iparams.random2 = &random2;
-    module_iparams.string_index = &string_index;
     module_iparams.func_initprocess = statement_instance_func_initprocess;
     module_iparams.func_interp_exit = statement_instance_func_interp_exit;
     module_iparams.func_interp_getargs = statement_instance_func_interp_getargs;