xref: /spdk/module/event/subsystems/iobuf/iobuf.c (revision 42d1bd28396630ca9cfb81bf7934fb8872df47f0)
155b047a7SKonrad Sztyber /*   SPDX-License-Identifier: BSD-3-Clause
255b047a7SKonrad Sztyber  *   Copyright (C) 2022 Intel Corporation.
355b047a7SKonrad Sztyber  *   All rights reserved.
455b047a7SKonrad Sztyber  */
555b047a7SKonrad Sztyber 
655b047a7SKonrad Sztyber #include "spdk/stdinc.h"
755b047a7SKonrad Sztyber #include "spdk/bdev.h"
855b047a7SKonrad Sztyber #include "spdk/log.h"
955b047a7SKonrad Sztyber #include "spdk/thread.h"
1055b047a7SKonrad Sztyber #include "spdk_internal/init.h"
1155b047a7SKonrad Sztyber 
1255b047a7SKonrad Sztyber static void
1355b047a7SKonrad Sztyber iobuf_subsystem_initialize(void)
1455b047a7SKonrad Sztyber {
1555b047a7SKonrad Sztyber 	int rc;
1655b047a7SKonrad Sztyber 
1755b047a7SKonrad Sztyber 	rc = spdk_iobuf_initialize();
1855b047a7SKonrad Sztyber 	if (rc != 0) {
1955b047a7SKonrad Sztyber 		SPDK_ERRLOG("Failed to initialize iobuf\n");
2055b047a7SKonrad Sztyber 	}
21d040ae7eSKonrad Sztyber 
2255b047a7SKonrad Sztyber 	spdk_subsystem_init_next(rc);
2355b047a7SKonrad Sztyber }
2455b047a7SKonrad Sztyber 
2555b047a7SKonrad Sztyber static void
2655b047a7SKonrad Sztyber iobuf_finish_cb(void *ctx)
2755b047a7SKonrad Sztyber {
2855b047a7SKonrad Sztyber 	spdk_subsystem_fini_next();
2955b047a7SKonrad Sztyber }
3055b047a7SKonrad Sztyber 
3155b047a7SKonrad Sztyber static void
3255b047a7SKonrad Sztyber iobuf_subsystem_finish(void)
3355b047a7SKonrad Sztyber {
3455b047a7SKonrad Sztyber 	spdk_iobuf_finish(iobuf_finish_cb, NULL);
3555b047a7SKonrad Sztyber }
3655b047a7SKonrad Sztyber 
3755b047a7SKonrad Sztyber static void
3855b047a7SKonrad Sztyber iobuf_write_config_json(struct spdk_json_write_ctx *w)
3955b047a7SKonrad Sztyber {
4055b047a7SKonrad Sztyber 	struct spdk_iobuf_opts opts;
4155b047a7SKonrad Sztyber 
42194983eeSJohn Levon 	spdk_iobuf_get_opts(&opts, sizeof(opts));
4355b047a7SKonrad Sztyber 
4455b047a7SKonrad Sztyber 	spdk_json_write_array_begin(w);
45d040ae7eSKonrad Sztyber 
4655b047a7SKonrad Sztyber 	spdk_json_write_object_begin(w);
4755b047a7SKonrad Sztyber 	spdk_json_write_named_string(w, "method", "iobuf_set_options");
4855b047a7SKonrad Sztyber 
4955b047a7SKonrad Sztyber 	spdk_json_write_named_object_begin(w, "params");
5055b047a7SKonrad Sztyber 	spdk_json_write_named_uint64(w, "small_pool_count", opts.small_pool_count);
5155b047a7SKonrad Sztyber 	spdk_json_write_named_uint64(w, "large_pool_count", opts.large_pool_count);
5255b047a7SKonrad Sztyber 	spdk_json_write_named_uint32(w, "small_bufsize", opts.small_bufsize);
5355b047a7SKonrad Sztyber 	spdk_json_write_named_uint32(w, "large_bufsize", opts.large_bufsize);
54*42d1bd28SJim Harris 	spdk_json_write_named_bool(w, "enable_numa", opts.enable_numa);
5555b047a7SKonrad Sztyber 	spdk_json_write_object_end(w);
5655b047a7SKonrad Sztyber 	spdk_json_write_object_end(w);
57d040ae7eSKonrad Sztyber 
5855b047a7SKonrad Sztyber 	spdk_json_write_array_end(w);
5955b047a7SKonrad Sztyber }
6055b047a7SKonrad Sztyber 
6155b047a7SKonrad Sztyber static struct spdk_subsystem g_subsystem_iobuf = {
6255b047a7SKonrad Sztyber 	.name = "iobuf",
6355b047a7SKonrad Sztyber 	.init = iobuf_subsystem_initialize,
6455b047a7SKonrad Sztyber 	.fini = iobuf_subsystem_finish,
6555b047a7SKonrad Sztyber 	.write_config_json = iobuf_write_config_json,
6655b047a7SKonrad Sztyber };
6755b047a7SKonrad Sztyber 
6855b047a7SKonrad Sztyber SPDK_SUBSYSTEM_REGISTER(g_subsystem_iobuf);
69