Motr  M0
init.c
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2013-2021 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 
23 #include "fop/fop.h"
24 #ifndef __KERNEL__
25 # include "desim/sim.h"
26 #endif
27 #include "lib/trace.h" /* m0_trace_init */
28 #include "lib/thread.h"
29 #include "stob/type.h"
30 #include "stob/stob.h"
31 #include "ut/stob.h"
32 #include "net/net.h"
34 #include "net/lnet/lnet.h"
35 #ifndef __KERNEL__
36 # include "net/libfab/libfab.h"
37 #endif
38 #include "rpc/rpc.h"
39 #include "addb2/addb2.h"
40 #include "lib/finject.h"
41 #include "lib/locality.h"
42 #include "layout/layout.h"
43 #include "pool/pool.h"
44 #include "lib/processor.h"
45 #include "sm/sm.h"
46 #include "dtm/dtm.h"
47 #include "fol/fol.h"
48 #include "dtm/dtm.h"
49 #include "dtm0/service.h"
50 #include "reqh/reqh.h"
51 #include "lib/timer.h"
52 #include "fid/fid.h"
53 #include "fis/fi_service.h"
54 #include "fop/fom_simple.h"
55 #include "fop/fom_generic.h"
56 #include "graph/graph.h"
57 #include "motr/init.h"
58 #include "lib/cookie.h"
59 #include "conf/fop.h" /* m0_conf_fops_init, m0_confx_types_init */
60 #include "conf/obj.h" /* m0_conf_obj_init */
61 #include "pool/policy.h" /* m0_pver_policies_init */
62 #ifdef __KERNEL__
65 # include "net/test/initfini.h" /* m0_net_test_init */
66 #else
67 # include "be/tx_service.h" /* m0_be_txs_register */
68 # include "be/be.h" /* m0_backend_init */
69 # include "conf/confd.h" /* m0_confd_register */
70 # include "mdstore/mdstore.h" /* m0_mdstore_mod_init */
71 #endif
72 #include "cob/cob.h"
73 #include "ioservice/io_fops.h"
74 #include "ioservice/io_service.h"
75 #include "iscservice/isc_service.h"
76 #include "mdservice/md_fops.h"
77 #include "mdservice/md_service.h"
78 #include "rm/rm_service.h"
79 #include "rm/rm_rwlock.h"
80 #include "conf/rconfc_link_fom.h" /* m0_rconfc_mod_init, m0_rconfc_mod_fini */
81 #include "stats/stats_srv.h"
82 #include "sns/sns.h"
83 #include "sns/parity_ops.h"
84 #include "sss/ss_svc.h"
85 #include "cm/cm.h"
86 #include "stats/stats_fops.h"
87 #include "ha/epoch.h"
88 #include "ha/ha.h" /* m0_ha_mod_init */
89 #include "xcode/init.h"
90 #include "module/instance.h" /* m0_instance_setup */
91 #include "motr/client_internal.h" /* m0_client_global_init */
92 #include "fdmi/fdmi.h"
93 #include "fdmi/service.h"
94 #include "fdmi/fol_fdmi_src.h"
95 
96 M0_INTERNAL int m0_time_init(void);
97 M0_INTERNAL void m0_time_fini(void);
98 
99 M0_INTERNAL int m0_memory_init(void);
100 M0_INTERNAL void m0_memory_fini(void);
101 
102 M0_INTERNAL int m0_foms_init(void);
103 M0_INTERNAL void m0_foms_fini(void);
104 
105 M0_INTERNAL int libm0_init(void);
106 M0_INTERNAL void libm0_fini(void);
107 
108 M0_INTERNAL int m0_addb2_net_module_init(void);
109 M0_INTERNAL void m0_addb2_net_module_fini(void);
110 
111 M0_INTERNAL int m0_addb2_global_init(void);
112 M0_INTERNAL void m0_addb2_global_fini(void);
113 
114 M0_INTERNAL int m0_addb2_service_module_init(void);
115 M0_INTERNAL void m0_addb2_service_module_fini(void);
116 
117 M0_INTERNAL int m0_cas_module_init(void);
118 M0_INTERNAL void m0_cas_module_fini(void);
119 
120 M0_INTERNAL int m0_dix_cm_module_init(void);
121 M0_INTERNAL void m0_dix_cm_module_fini(void);
122 
123 #ifndef __KERNEL__
124 M0_INTERNAL int m0_net_sock_mod_init(void);
125 M0_INTERNAL void m0_net_sock_mod_fini(void);
126 #endif
127 
134  int (*ifc_init)(void);
135  void (*ifc_fini)(void);
136  const char *ifc_name;
137 };
138 
140  { &m0_time_init, &m0_time_fini, "time" },
141  { &m0_xcode_init, &m0_xcode_fini, "xcode" },
142  { &m0_trace_init, &m0_trace_fini, "trace" },
143  { &m0_fi_init, &m0_fi_fini, "finject" },
144 };
145 
146 struct init_fini_call once[] = {
148 };
149 
150 /*
151  XXX dummy_init_fini.c defines dummy init() and fini() routines for
152  subsystems, that are not yet ported to kernel mode.
153  */
155  { &m0_memory_init, &m0_memory_fini, "memory" },
157  { &m0_addb2_global_init, &m0_addb2_global_fini, "addb2-global" },
158  { &libm0_init, &libm0_fini, "libm0" },
159  { &m0_ha_global_init , &m0_ha_global_fini, "ha" },
160  { &m0_fid_init, &m0_fid_fini, "fid" },
161  { &m0_file_mod_init, &m0_file_mod_fini, "file" },
163  { &m0_timers_init, &m0_timers_fini, "timer" },
164  { &m0_processors_init, &m0_processors_fini, "processors" },
165  /* localities must be initialised after lib/processor.h */
166  { &m0_localities_init, &m0_localities_fini, "locality" },
167  { &m0_fols_init, &m0_fols_fini, "fol" },
168  { &m0_layouts_init, &m0_layouts_fini, "layout" },
169  /* fops must be initialised before network, because network build fop
170  type for network descriptors. */
171  { &m0_fops_init, &m0_fops_fini, "fop" },
172  { &m0_foms_init, &m0_foms_fini, "fom" },
173  { &m0_net_init, &m0_net_fini, "net" },
174 #ifdef __KERNEL__
175  { &m0_net_test_init, &m0_net_test_fini, "net-test" },
176 #endif
177  { &m0_reqhs_init, &m0_reqhs_fini, "reqhs" },
178  /* fom-simple must go after reqh init, because it registers a service
179  type. */
180  { &m0_fom_simples_init, &m0_fom_simples_fini, "fom-simple" },
181  /* addb2-service must go after reqh init, because it registers a service
182  type. */
184  &m0_addb2_service_module_fini, "addb2-service" },
185  { &m0_rpc_init, &m0_rpc_fini, "rpc" },
186  /* fom generic must be after rpc, because it initialises rpc item
187  type for generic error reply. */
188  { &m0_fom_generic_init, &m0_fom_generic_fini, "fom-generic" },
189  /* addb2-net must be after rpc, because it initialises a fop type. */
191  { &m0_net_lnet_init, &m0_net_lnet_fini, "net/lnet" },
192 #ifndef __KERNEL__
193  { &m0_net_libfab_init, &m0_net_libfab_fini, "net/libfab" },
194  { &m0_net_sock_mod_init, &m0_net_sock_mod_fini, "net/sock" },
195  { &m0_net_ip_init, &m0_net_ip_fini, "net-ip" },
196 #endif
197  { &m0_mem_xprt_init, &m0_mem_xprt_fini, "bulk/mem" },
198  { &m0_cob_mod_init, &m0_cob_mod_fini, "cob" },
199  { &m0_stob_mod_init, &m0_stob_mod_fini, "stob" },
200 #ifndef __KERNEL__
201  { &m0_stob_types_init, &m0_stob_types_fini, "stob-types" },
202  { &m0_ut_stob_init, &m0_ut_stob_fini, "ut-stob" },
203  { &sim_global_init, &sim_global_fini, "desim" },
204 #endif
205  { &m0_graph_mod_init, &m0_graph_mod_fini, "graph" },
206  { &m0_conf_obj_init, &m0_conf_obj_fini, "conf-obj" },
207  { &m0_confx_types_init, &m0_confx_types_fini, "conf-xtypes" },
208  { &m0_conf_fops_init, &m0_conf_fops_fini, "conf-fops" },
209  { &m0_stats_fops_init, &m0_stats_fops_fini, "stats_fops"},
210  { &m0_rms_register, &m0_rms_unregister, "rmservice"},
211 #ifdef __KERNEL__
212  { &m0t1fs_init, &m0t1fs_fini, "m0t1fs" },
213 #else
214  { &m0_backend_init, &m0_backend_fini, "be" },
215  { &m0_be_txs_register, &m0_be_txs_unregister, "be-tx-service" },
216  { &m0_confd_register, &m0_confd_unregister, "confd" },
217  /*
218  * mds should go before ios because the latter uses
219  * fsync fop registration stuff from the former.
220  */
221  { &m0_mds_register, &m0_mds_unregister, "mdservice"},
222  { &m0_ios_register, &m0_ios_unregister, "ioservice" },
223  { &m0_isc_mod_init, &m0_isc_mod_fini, "in-storage-compute"},
224  { &m0_iscs_register, &m0_iscs_unregister, "iscervice" },
225  { &m0_pools_init, &m0_pools_fini, "pool" },
226  { &m0_cm_module_init, &m0_cm_module_fini, "copy machine" },
227  { &m0_sns_init, &m0_sns_fini, "sns" },
228  { &m0_mdstore_mod_init, &m0_mdstore_mod_fini, "mdstore" },
229  { &m0_stats_svc_init, &m0_stats_svc_fini, "stats-service" },
230  { &m0_ss_svc_init, &m0_ss_svc_fini, "sss" },
232  { &m0_fdms_register, &m0_fdms_unregister, "fdmi-service" },
233 #endif /* __KERNEL__ */
236  { &m0_ha_mod_init, &m0_ha_mod_fini, "ha" },
238  { &m0_rconfc_mod_init, &m0_rconfc_mod_fini, "rconfc" },
239  { &m0_pver_policies_init, &m0_pver_policies_fini, "pver-policies" },
241 #ifndef __KERNEL__
242  { &m0_fdmi_init, &m0_fdmi_fini, "fdmi" },
243  { &m0_fol_fdmi_src_init, &m0_fol_fdmi_src_fini, "fol_fdmi_source" },
245 #endif
246 };
247 
248 static void fini_nr(struct init_fini_call *arr, int nr)
249 {
250  while (--nr >= 0) {
251  if (arr[nr].ifc_fini != NULL)
252  arr[nr].ifc_fini();
253  }
254 }
255 
256 static int init_nr(struct init_fini_call *arr, int nr)
257 {
258  int i;
259  int rc;
260 
261  for (i = 0; i < nr; ++i) {
262  rc = arr[i].ifc_init();
263  if (rc != 0) {
264  m0_error_printf("subsystem %s init failed: rc = %d\n",
265  arr[i].ifc_name, rc);
266  fini_nr(arr, i);
267  return rc;
268  }
269  }
270  return 0;
271 }
272 
277 static bool initialised_once = false;
278 
279 M0_INTERNAL int m0_init_once(struct m0 *instance)
280 {
281  int rc;
282 
283  if (!initialised_once) {
284  /*
285  * Bravely ignore all issues of concurrency and memory
286  * consistency models, which occupy weaker minds.
287  */
289  if (rc != 0)
290  return rc;
291  initialised_once = true;
292  }
293 
295  if (rc != 0) {
297  initialised_once = false;
298  }
299  return rc;
300 }
301 
302 M0_INTERNAL void m0_fini_once(void)
303 {
304  m0_threads_fini();
306  initialised_once = false;
307 }
308 
309 #if 1 /* XXX OBSOLETE */
310 int m0_init(struct m0 *instance)
311 {
313 
316 }
317 
318 void m0_fini(void)
319 {
320  m0_module_fini(&m0_get()->i_self, M0_MODLEV_NONE);
321 }
322 
323 int m0_resume(struct m0 *instance)
324 {
326 }
327 
328 void m0_quiesce(void)
329 {
331 }
332 
333 M0_INTERNAL int m0_subsystems_init(void)
334 {
336 }
337 
338 M0_INTERNAL void m0_subsystems_fini(void)
339 {
341 }
342 
343 M0_INTERNAL int m0_quiesce_init(void)
344 {
345  return init_nr(quiesce, ARRAY_SIZE(quiesce));
346 }
347 
348 M0_INTERNAL void m0_quiesce_fini(void)
349 {
351 }
352 
353 #endif /* XXX OBSOLETE */
354 
357 /*
358  * Local variables:
359  * c-indentation-style: "K&R"
360  * c-basic-offset: 8
361  * tab-width: 8
362  * fill-column: 80
363  * scroll-step: 1
364  * End:
365  */
int m0_net_test_init(void)
Definition: initfini.c:37
M0_INTERNAL int m0_dtm0_stype_init(void)
Definition: service.c:374
M0_INTERNAL void m0_rms_unregister(void)
Definition: rm_service.c:109
M0_INTERNAL void m0_foms_fini(void)
Definition: fom.c:1669
M0_INTERNAL void m0_fdmi_fini(void)
Definition: fdmi.c:879
static size_t nr
Definition: dump.c:1505
M0_INTERNAL int m0_confx_types_init(void)
Definition: fop.c:185
int m0_addb2_module_init(void)
Definition: addb2.c:770
M0_INTERNAL void m0_iscs_unregister(void)
Definition: isc_service.c:119
#define M0_PRE(cond)
M0_INTERNAL int m0_foms_init(void)
Definition: fom.c:1662
void(* ifc_fini)(void)
Definition: init.c:135
M0_INTERNAL void m0_ha_global_fini(void)
Definition: epoch.c:157
M0_INTERNAL void m0_net_libfab_fini(void)
Definition: libfab.c:3452
M0_INTERNAL void m0_subsystems_fini(void)
Definition: init.c:338
#define NULL
Definition: misc.h:38
M0_INTERNAL void m0_time_fini(void)
Definition: time.c:130
void m0_fini(void)
Definition: init.c:318
M0_INTERNAL void m0_stats_svc_fini(void)
Definition: stats_srv.c:313
void m0_error_printf(const char *fmt,...)
Definition: ktrace.c:169
M0_INTERNAL void m0_isc_mod_fini(void)
Definition: isc_service.c:99
M0_INTERNAL int m0_net_sock_mod_init(void)
Definition: sock.c:3933
M0_INTERNAL int m0_stob_mod_init(void)
Definition: stob.c:367
M0_INTERNAL int m0_ios_register(void)
Definition: io_service.c:158
M0_INTERNAL void m0_threads_fini(void)
Definition: kthread.c:85
M0_INTERNAL void m0_stats_fops_fini(void)
Definition: stats_fops.c:94
M0_INTERNAL int m0_dtm_global_init(void)
Definition: dtm.c:142
M0_INTERNAL int m0_cob_mod_init(void)
Definition: cob.c:129
M0_INTERNAL void m0_be_txs_unregister(void)
Definition: tx_service.c:63
M0_INTERNAL void m0_fom_generic_fini(void)
Definition: fom_generic.c:53
M0_INTERNAL int m0_localities_init(void)
Definition: locality.c:212
void m0_net_test_fini(void)
Definition: initfini.c:42
#define FI_SERVICE_NAME
Definition: fi_service.h:69
int m0_resume(struct m0 *instance)
Definition: init.c:323
M0_INTERNAL void m0_ss_svc_fini(void)
Definition: ss_svc.c:202
M0_INTERNAL int m0_fol_fdmi_src_init(void)
Definition: fol_fdmi_src.c:551
M0_INTERNAL int m0_timers_init(void)
Definition: timer.c:457
M0_INTERNAL int m0_be_txs_register(void)
Definition: tx_service.c:58
M0_INTERNAL void m0_processors_fini(void)
Definition: processor.c:1084
M0_INTERNAL void m0_reqhs_fini(void)
Definition: reqh.c:328
M0_INTERNAL int m0_subsystems_init(void)
Definition: init.c:333
M0_INTERNAL int libm0_init(void)
Definition: m0lib.c:32
M0_INTERNAL void m0_instance_setup(struct m0 *instance)
Definition: instance.c:110
M0_INTERNAL int m0_mem_xprt_init(void)
Definition: mem_xprt_xo.c:47
M0_INTERNAL void m0_fid_fini(void)
Definition: fid.c:289
M0_INTERNAL void m0_graph_mod_fini(void)
Definition: graph.c:316
M0_INTERNAL struct m0 * m0_get(void)
Definition: instance.c:41
int m0_init(struct m0 *instance)
Definition: init.c:310
M0_INTERNAL int m0_init_once(struct m0 *instance)
Definition: init.c:279
M0_INTERNAL int m0_cm_module_init(void)
Definition: cm.c:895
M0_INTERNAL void m0_file_mod_fini(void)
Definition: file.c:580
M0_INTERNAL int m0_fdmi_init(void)
Definition: fdmi.c:867
M0_INTERNAL void m0_net_sock_mod_fini(void)
Definition: sock.c:3957
M0_INTERNAL void m0_dix_cm_module_fini(void)
Definition: service.c:43
M0_INTERNAL void libm0_fini(void)
Definition: m0lib.c:39
M0_INTERNAL void m0_net_ip_fini(void)
Definition: ip.c:489
M0_INTERNAL void m0_fops_fini(void)
Definition: fop.c:329
M0_INTERNAL int m0_confd_register(void)
Definition: confd.c:460
M0_INTERNAL int m0_fis_register(void)
Definition: fi_service.c:132
M0_INTERNAL void m0_fom_simples_fini(void)
Definition: fom_simple.c:100
M0_INTERNAL void m0_fols_fini(void)
Definition: fol.c:172
M0_INTERNAL void m0_timers_fini(void)
Definition: timer.c:479
M0_INTERNAL int m0_fi_init(void)
Definition: finject_init.c:40
M0_INTERNAL void m0_cas_module_fini(void)
Definition: cas.c:188
M0_INTERNAL void m0_confd_unregister(void)
Definition: confd.c:465
M0_INTERNAL int m0_addb2_service_module_init(void)
Definition: service.c:72
M0_INTERNAL void m0_conf_obj_fini(void)
Definition: obj.c:413
static int init_nr(struct init_fini_call *arr, int nr)
Definition: init.c:256
M0_INTERNAL void m0_mds_unregister(void)
Definition: md_service.c:104
M0_INTERNAL int m0_ss_svc_init(void)
Definition: ss_svc.c:170
M0_INTERNAL void sim_global_fini(void)
Definition: sim.c:549
int i
Definition: dir.c:1033
M0_INTERNAL int m0_graph_mod_init(void)
Definition: graph.c:308
M0_INTERNAL void m0_fis_unregister(void)
Definition: fi_service.c:139
M0_INTERNAL int m0_ha_global_init(void)
Definition: epoch.c:144
M0_INTERNAL int m0_quiesce_init(void)
Definition: init.c:343
M0_INTERNAL int m0_pools_init(void)
Definition: pool.c:273
M0_INTERNAL int m0_client_global_init(void)
Definition: client_init.c:1495
void m0_addb2_module_fini(void)
Definition: addb2.c:783
void m0_xcode_fini(void)
Definition: init.c:60
M0_INTERNAL int m0_isc_mod_init(void)
Definition: isc_service.c:88
int m0_xcode_init(void)
Definition: init.c:43
M0_INTERNAL void m0t1fs_fini(struct m0t1fs_conf *conf)
Definition: m0t1fs.c:237
static void fini_nr(struct init_fini_call *arr, int nr)
Definition: init.c:248
M0_INTERNAL void m0_stob_mod_fini(void)
Definition: stob.c:373
int(* ifc_init)(void)
Definition: init.c:134
M0_INTERNAL void m0_ha_mod_fini(void)
Definition: ha.c:1052
M0_INTERNAL void m0_conf_fops_fini(void)
Definition: fop.c:168
M0_INTERNAL void m0t1fs_init(struct sim *s, struct m0t1fs_conf *conf)
Definition: m0t1fs.c:173
M0_INTERNAL void m0_dtm0_stype_fini(void)
Definition: service.c:385
M0_INTERNAL void m0_net_fini(void)
Definition: net.c:69
M0_INTERNAL void m0_trace_fini(void)
Definition: trace.c:148
M0_INTERNAL int m0_processors_init(void)
Definition: processor.c:1062
M0_INTERNAL void m0_cob_mod_fini(void)
Definition: cob.c:135
M0_INTERNAL int m0_net_init(void)
Definition: net.c:63
M0_INTERNAL void m0_quiesce_fini(void)
Definition: init.c:348
Definition: instance.h:80
M0_INTERNAL void m0_threads_once_fini(void)
Definition: kthread.c:94
M0_INTERNAL void m0_fol_fdmi_src_fini(void)
Definition: fol_fdmi_src.c:594
M0_INTERNAL void m0_cm_module_fini(void)
Definition: cm.c:907
M0_INTERNAL int m0_reqhs_init(void)
Definition: reqh.c:333
M0_INTERNAL int m0_fom_generic_init(void)
Definition: fom_generic.c:58
M0_INTERNAL int m0_mdstore_mod_init(void)
Definition: mdstore.c:41
M0_INTERNAL void m0_stob_types_fini(void)
Definition: type.c:115
M0_INTERNAL void m0_pools_fini(void)
Definition: pool.c:283
const char * ifc_name
Definition: init.c:136
M0_INTERNAL int m0_time_init(void)
Definition: time.c:115
M0_INTERNAL int m0_net_ip_init(void)
Definition: ip.c:482
M0_INTERNAL int m0_file_mod_init(void)
Definition: file.c:574
M0_INTERNAL int m0_dix_cm_module_init(void)
Definition: service.c:37
M0_INTERNAL int m0_mds_register(void)
Definition: md_service.c:79
M0_INTERNAL void m0_memory_fini(void)
Definition: memory.c:259
M0_INTERNAL int m0_fops_init(void)
Definition: fop.c:315
M0_INTERNAL void m0_mdstore_mod_fini(void)
Definition: mdstore.c:46
struct init_fini_call quiesce[]
Definition: init.c:139
M0_INTERNAL void m0_mem_xprt_fini(void)
Definition: mem_xprt_xo.c:59
M0_INTERNAL int m0_net_lnet_init(void)
Definition: lnet_main.c:923
M0_INTERNAL void m0_ut_stob_fini(void)
Definition: stob.c:123
M0_INTERNAL int m0_stats_svc_init(void)
Definition: stats_srv.c:307
M0_INTERNAL int m0_stob_types_init(void)
Definition: type.c:94
M0_INTERNAL int m0_conf_fops_init(void)
Definition: fop.c:73
struct init_fini_call subsystem[]
Definition: init.c:154
M0_INTERNAL void m0_addb2_net_module_fini(void)
Definition: net.c:284
M0_INTERNAL void m0_dtm_global_fini(void)
Definition: dtm.c:148
M0_INTERNAL void m0_localities_fini(void)
Definition: locality.c:242
M0_INTERNAL void m0_client_global_fini(void)
Definition: client_init.c:1460
M0_INTERNAL int m0_ha_mod_init(void)
Definition: ha.c:1032
#define M0_IS0(obj)
Definition: misc.h:70
M0_INTERNAL int m0_fols_init(void)
Definition: fol.c:166
M0_INTERNAL int m0_rpc_init(void)
Definition: rpc.c:42
M0_INTERNAL int m0_rms_register(void)
Definition: rm_service.c:93
M0_INTERNAL int m0_fom_simples_init(void)
Definition: fom_simple.c:95
M0_INTERNAL int m0_stats_fops_init(void)
Definition: stats_fops.c:56
M0_INTERNAL int m0_net_libfab_init(void)
Definition: libfab.c:3447
M0_INTERNAL int m0_cas_module_init(void)
Definition: cas.c:173
M0_INTERNAL void m0_layouts_fini(void)
Definition: layout.c:606
M0_INTERNAL void m0_sns_fini()
Definition: sns.c:30
M0_INTERNAL void m0_addb2_service_module_fini(void)
Definition: service.c:77
M0_INTERNAL int m0_threads_once_init(void)
Definition: kthread.c:89
static struct m0 instance
Definition: main.c:78
M0_INTERNAL int m0_fdms_register(void)
Definition: service.c:80
M0_INTERNAL void m0_ios_unregister(void)
Definition: io_service.c:174
M0_INTERNAL void m0_backend_fini(void)
Definition: be.c:156
M0_INTERNAL void m0_confx_types_fini(void)
Definition: fop.c:191
M0_INTERNAL int m0_memory_init(void)
Definition: memory.c:251
M0_INTERNAL int m0_addb2_net_module_init(void)
Definition: net.c:271
M0_INTERNAL int m0_conf_obj_init(void)
Definition: obj.c:397
M0_INTERNAL void m0_rpc_fini(void)
Definition: rpc.c:51
struct init_fini_call once[]
Definition: init.c:146
M0_INTERNAL int m0_trace_init(void)
Definition: trace.c:132
M0_INTERNAL void m0_addb2_global_fini(void)
Definition: global.c:90
M0_INTERNAL int m0_addb2_global_init(void)
Definition: global.c:75
M0_INTERNAL int m0_threads_init(struct m0 *instance)
Definition: kthread.c:77
struct m0_module i_self
Definition: instance.h:88
M0_INTERNAL void m0_fi_fini(void)
Definition: finject_init.c:47
M0_INTERNAL void m0_pver_policies_fini(void)
Definition: policy.c:180
M0_INTERNAL int m0_ut_stob_init(void)
Definition: stob.c:106
M0_INTERNAL int m0_backend_init(void)
Definition: be.c:150
M0_INTERNAL void m0_net_lnet_fini(void)
Definition: lnet_main.c:933
int32_t rc
Definition: trigger_fop.h:47
void m0_quiesce(void)
Definition: init.c:328
#define ARRAY_SIZE(a)
Definition: misc.h:45
M0_INTERNAL int m0_layouts_init(void)
Definition: layout.c:601
M0_INTERNAL void m0_module_fini(struct m0_module *module, int level)
Definition: module.c:142
M0_INTERNAL void m0_fdms_unregister(void)
Definition: service.c:92
M0_INTERNAL int sim_global_init(void)
Definition: sim.c:543
M0_INTERNAL int m0_pver_policies_init(void)
Definition: policy.c:165
M0_INTERNAL void m0_fini_once(void)
Definition: init.c:302
M0_INTERNAL int m0_module_init(struct m0_module *module, int level)
Definition: module.c:131
M0_INTERNAL int m0_sns_init()
Definition: sns.c:25
static bool initialised_once
Definition: init.c:277
M0_INTERNAL int m0_fid_init(void)
Definition: fid.c:281
M0_INTERNAL int m0_iscs_register(void)
Definition: isc_service.c:104