subsystem: make subsystem declaration macro just register subsystem
Don't do anything under the scene as adding/removing fields in struct spdk_subsystem will require both macro change and C file changes. Change-Id: I11bc0d5758edd7e0e0bd3f93e251d868cd9b1d2b Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com> Reviewed-on: https://review.gerrithub.io/401850 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
5333a632ce
commit
4294719ed7
@ -66,7 +66,6 @@ extern struct spdk_subsystem_list g_subsystems;
|
|||||||
struct spdk_subsystem_depend {
|
struct spdk_subsystem_depend {
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *depends_on;
|
const char *depends_on;
|
||||||
struct spdk_subsystem *depends_on_subsystem;
|
|
||||||
TAILQ_ENTRY(spdk_subsystem_depend) tailq;
|
TAILQ_ENTRY(spdk_subsystem_depend) tailq;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -88,27 +87,19 @@ void spdk_rpc_finish(void);
|
|||||||
/**
|
/**
|
||||||
* \brief Register a new subsystem
|
* \brief Register a new subsystem
|
||||||
*/
|
*/
|
||||||
#define SPDK_SUBSYSTEM_REGISTER(_name, _init, _fini, _config) \
|
#define SPDK_SUBSYSTEM_REGISTER(_name) \
|
||||||
struct spdk_subsystem __spdk_subsystem_ ## _name = { \
|
|
||||||
.name = #_name, \
|
|
||||||
.init = _init, \
|
|
||||||
.fini = _fini, \
|
|
||||||
.config = _config, \
|
|
||||||
}; \
|
|
||||||
__attribute__((constructor)) static void _name ## _register(void) \
|
__attribute__((constructor)) static void _name ## _register(void) \
|
||||||
{ \
|
{ \
|
||||||
spdk_add_subsystem(&__spdk_subsystem_ ## _name); \
|
spdk_add_subsystem(&_name); \
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Declare that a subsystem depends on another subsystem.
|
* \brief Declare that a subsystem depends on another subsystem.
|
||||||
*/
|
*/
|
||||||
#define SPDK_SUBSYSTEM_DEPEND(_name, _depends_on) \
|
#define SPDK_SUBSYSTEM_DEPEND(_name, _depends_on) \
|
||||||
extern struct spdk_subsystem __spdk_subsystem_ ## _depends_on; \
|
|
||||||
static struct spdk_subsystem_depend __subsystem_ ## _name ## _depend_on ## _depends_on = { \
|
static struct spdk_subsystem_depend __subsystem_ ## _name ## _depend_on ## _depends_on = { \
|
||||||
.name = #_name, \
|
.name = #_name, \
|
||||||
.depends_on = #_depends_on, \
|
.depends_on = #_depends_on, \
|
||||||
.depends_on_subsystem = &__spdk_subsystem_ ## _depends_on, \
|
|
||||||
}; \
|
}; \
|
||||||
__attribute__((constructor)) static void _name ## _depend_on ## _depends_on(void) \
|
__attribute__((constructor)) static void _name ## _depend_on ## _depends_on(void) \
|
||||||
{ \
|
{ \
|
||||||
|
@ -64,6 +64,12 @@ spdk_bdev_subsystem_finish(void)
|
|||||||
spdk_bdev_finish(spdk_bdev_subsystem_finish_done, NULL);
|
spdk_bdev_finish(spdk_bdev_subsystem_finish_done, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(bdev, spdk_bdev_subsystem_initialize,
|
static struct spdk_subsystem g_spdk_subsystem_bdev = {
|
||||||
spdk_bdev_subsystem_finish, spdk_bdev_config_text)
|
.name = "bdev",
|
||||||
|
.init = spdk_bdev_subsystem_initialize,
|
||||||
|
.fini = spdk_bdev_subsystem_finish,
|
||||||
|
.config = spdk_bdev_config_text,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_bdev);
|
||||||
SPDK_SUBSYSTEM_DEPEND(bdev, copy)
|
SPDK_SUBSYSTEM_DEPEND(bdev, copy)
|
||||||
|
@ -60,5 +60,11 @@ spdk_copy_engine_subsystem_finish(void)
|
|||||||
spdk_copy_engine_finish(spdk_copy_engine_subsystem_finish_done, NULL);
|
spdk_copy_engine_finish(spdk_copy_engine_subsystem_finish_done, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(copy, spdk_copy_engine_subsystem_initialize,
|
static struct spdk_subsystem g_spdk_subsystem_copy = {
|
||||||
spdk_copy_engine_subsystem_finish, NULL)
|
.name = "copy",
|
||||||
|
.init = spdk_copy_engine_subsystem_initialize,
|
||||||
|
.fini = spdk_copy_engine_subsystem_finish,
|
||||||
|
.config = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_copy);
|
||||||
|
@ -61,6 +61,12 @@ spdk_iscsi_subsystem_fini(void)
|
|||||||
spdk_iscsi_fini(spdk_iscsi_subsystem_fini_done, NULL);
|
spdk_iscsi_fini(spdk_iscsi_subsystem_fini_done, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(iscsi, spdk_iscsi_subsystem_init, spdk_iscsi_subsystem_fini,
|
static struct spdk_subsystem g_spdk_subsystem_iscsi = {
|
||||||
spdk_iscsi_config_text)
|
.name = "iscsi",
|
||||||
|
.init = spdk_iscsi_subsystem_init,
|
||||||
|
.fini = spdk_iscsi_subsystem_fini,
|
||||||
|
.config = spdk_iscsi_config_text,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_iscsi);
|
||||||
SPDK_SUBSYSTEM_DEPEND(iscsi, scsi)
|
SPDK_SUBSYSTEM_DEPEND(iscsi, scsi)
|
||||||
|
@ -54,5 +54,12 @@ spdk_nbd_subsystem_fini(void)
|
|||||||
spdk_subsystem_fini_next();
|
spdk_subsystem_fini_next();
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(nbd, spdk_nbd_subsystem_init, spdk_nbd_subsystem_fini, NULL)
|
static struct spdk_subsystem g_spdk_subsystem_nbd = {
|
||||||
|
.name = "nbd",
|
||||||
|
.init = spdk_nbd_subsystem_init,
|
||||||
|
.fini = spdk_nbd_subsystem_fini,
|
||||||
|
.config = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_nbd);
|
||||||
SPDK_SUBSYSTEM_DEPEND(nbd, bdev)
|
SPDK_SUBSYSTEM_DEPEND(nbd, bdev)
|
||||||
|
@ -54,8 +54,14 @@ spdk_interface_subsystem_destroy(void)
|
|||||||
spdk_subsystem_fini_next();
|
spdk_subsystem_fini_next();
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(interface, spdk_interface_subsystem_init,
|
static struct spdk_subsystem g_spdk_subsystem_interface = {
|
||||||
spdk_interface_subsystem_destroy, NULL)
|
.name = "interface",
|
||||||
|
.init = spdk_interface_subsystem_init,
|
||||||
|
.fini = spdk_interface_subsystem_destroy,
|
||||||
|
.config = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_interface);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_net_subsystem_start(void)
|
spdk_net_subsystem_start(void)
|
||||||
@ -74,6 +80,12 @@ spdk_net_subsystem_fini(void)
|
|||||||
spdk_subsystem_fini_next();
|
spdk_subsystem_fini_next();
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(net_framework, spdk_net_subsystem_start,
|
static struct spdk_subsystem g_spdk_subsystem_net_framework = {
|
||||||
spdk_net_subsystem_fini, NULL)
|
.name = "net_framework",
|
||||||
|
.init = spdk_net_subsystem_start,
|
||||||
|
.fini = spdk_net_subsystem_fini,
|
||||||
|
.config = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_net_framework);
|
||||||
SPDK_SUBSYSTEM_DEPEND(net_framework, interface)
|
SPDK_SUBSYSTEM_DEPEND(net_framework, interface)
|
||||||
|
@ -54,5 +54,12 @@ spdk_scsi_subsystem_fini(void)
|
|||||||
spdk_subsystem_fini_next();
|
spdk_subsystem_fini_next();
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(scsi, spdk_scsi_subsystem_init, spdk_scsi_subsystem_fini, NULL)
|
static struct spdk_subsystem g_spdk_subsystem_scsi = {
|
||||||
|
.name = "scsi",
|
||||||
|
.init = spdk_scsi_subsystem_init,
|
||||||
|
.fini = spdk_scsi_subsystem_fini,
|
||||||
|
.config = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_scsi);
|
||||||
SPDK_SUBSYSTEM_DEPEND(scsi, bdev)
|
SPDK_SUBSYSTEM_DEPEND(scsi, bdev)
|
||||||
|
@ -59,5 +59,12 @@ spdk_vhost_subsystem_fini(void)
|
|||||||
spdk_vhost_fini(spdk_vhost_subsystem_fini_done);
|
spdk_vhost_fini(spdk_vhost_subsystem_fini_done);
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(vhost, spdk_vhost_subsystem_init, spdk_vhost_subsystem_fini, NULL)
|
static struct spdk_subsystem g_spdk_subsystem_vhost = {
|
||||||
|
.name = "vhost",
|
||||||
|
.init = spdk_vhost_subsystem_init,
|
||||||
|
.fini = spdk_vhost_subsystem_fini,
|
||||||
|
.config = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_vhost);
|
||||||
SPDK_SUBSYSTEM_DEPEND(vhost, scsi)
|
SPDK_SUBSYSTEM_DEPEND(vhost, scsi)
|
||||||
|
@ -202,10 +202,26 @@ subsystem_sort_test_depends_on_multiple(void)
|
|||||||
TAILQ_REMOVE(&g_subsystems, subsystem, tailq);
|
TAILQ_REMOVE(&g_subsystems, subsystem, tailq);
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_REGISTER(subsystem1, NULL, NULL, NULL)
|
struct spdk_subsystem subsystem1 = {
|
||||||
SPDK_SUBSYSTEM_REGISTER(subsystem2, NULL, NULL, NULL)
|
.name = "subsystem1",
|
||||||
SPDK_SUBSYSTEM_REGISTER(subsystem3, NULL, NULL, NULL)
|
};
|
||||||
SPDK_SUBSYSTEM_REGISTER(subsystem4, NULL, NULL, NULL)
|
|
||||||
|
struct spdk_subsystem subsystem2 = {
|
||||||
|
.name = "subsystem2",
|
||||||
|
};
|
||||||
|
struct spdk_subsystem subsystem3 = {
|
||||||
|
.name = "subsystem3",
|
||||||
|
};
|
||||||
|
|
||||||
|
struct spdk_subsystem subsystem4 = {
|
||||||
|
.name = "subsystem4",
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(subsystem1);
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(subsystem2);
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(subsystem3);
|
||||||
|
SPDK_SUBSYSTEM_REGISTER(subsystem4);
|
||||||
|
|
||||||
SPDK_SUBSYSTEM_DEPEND(subsystem1, subsystem2)
|
SPDK_SUBSYSTEM_DEPEND(subsystem1, subsystem2)
|
||||||
SPDK_SUBSYSTEM_DEPEND(subsystem2, subsystem3)
|
SPDK_SUBSYSTEM_DEPEND(subsystem2, subsystem3)
|
||||||
SPDK_SUBSYSTEM_DEPEND(subsystem3, subsystem4)
|
SPDK_SUBSYSTEM_DEPEND(subsystem3, subsystem4)
|
||||||
|
Loading…
Reference in New Issue
Block a user