xref: /spdk/module/event/subsystems/ublk/ublk.c (revision ed2b53f38938ed8c3aef52a04ca4a934537283f1)
1*ed2b53f3SYifan Bian /*   SPDX-License-Identifier: BSD-3-Clause
2*ed2b53f3SYifan Bian  *   Copyright (C) 2022 Intel Corporation.
3*ed2b53f3SYifan Bian  *   All rights reserved.
4*ed2b53f3SYifan Bian  */
5*ed2b53f3SYifan Bian 
6*ed2b53f3SYifan Bian #include "spdk/stdinc.h"
7*ed2b53f3SYifan Bian #include "spdk/ublk.h"
8*ed2b53f3SYifan Bian #include "spdk_internal/init.h"
9*ed2b53f3SYifan Bian 
10*ed2b53f3SYifan Bian static void
ublk_subsystem_init(void)11*ed2b53f3SYifan Bian ublk_subsystem_init(void)
12*ed2b53f3SYifan Bian {
13*ed2b53f3SYifan Bian 	spdk_ublk_init();
14*ed2b53f3SYifan Bian 	spdk_subsystem_init_next(0);
15*ed2b53f3SYifan Bian }
16*ed2b53f3SYifan Bian 
17*ed2b53f3SYifan Bian static void
ublk_subsystem_fini_done(void * arg)18*ed2b53f3SYifan Bian ublk_subsystem_fini_done(void *arg)
19*ed2b53f3SYifan Bian {
20*ed2b53f3SYifan Bian 	spdk_subsystem_fini_next();
21*ed2b53f3SYifan Bian }
22*ed2b53f3SYifan Bian 
23*ed2b53f3SYifan Bian static void
ublk_subsystem_fini(void)24*ed2b53f3SYifan Bian ublk_subsystem_fini(void)
25*ed2b53f3SYifan Bian {
26*ed2b53f3SYifan Bian 	int rc;
27*ed2b53f3SYifan Bian 
28*ed2b53f3SYifan Bian 	rc = spdk_ublk_fini(ublk_subsystem_fini_done, NULL);
29*ed2b53f3SYifan Bian 	if (rc != 0) {
30*ed2b53f3SYifan Bian 		ublk_subsystem_fini_done(NULL);
31*ed2b53f3SYifan Bian 	}
32*ed2b53f3SYifan Bian }
33*ed2b53f3SYifan Bian 
34*ed2b53f3SYifan Bian static void
ublk_subsystem_write_config_json(struct spdk_json_write_ctx * w)35*ed2b53f3SYifan Bian ublk_subsystem_write_config_json(struct spdk_json_write_ctx *w)
36*ed2b53f3SYifan Bian {
37*ed2b53f3SYifan Bian 	spdk_ublk_write_config_json(w);
38*ed2b53f3SYifan Bian }
39*ed2b53f3SYifan Bian 
40*ed2b53f3SYifan Bian static struct spdk_subsystem g_spdk_subsystem_ublk = {
41*ed2b53f3SYifan Bian 	.name = "ublk",
42*ed2b53f3SYifan Bian 	.init = ublk_subsystem_init,
43*ed2b53f3SYifan Bian 	.fini = ublk_subsystem_fini,
44*ed2b53f3SYifan Bian 	.write_config_json = ublk_subsystem_write_config_json,
45*ed2b53f3SYifan Bian };
46*ed2b53f3SYifan Bian 
47*ed2b53f3SYifan Bian SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_ublk);
48*ed2b53f3SYifan Bian SPDK_SUBSYSTEM_DEPEND(ublk, bdev)
49