Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright (C) 2021 Intel Corporation. 3 : : * All rights reserved. 4 : : */ 5 : : 6 : : #include "spdk/stdinc.h" 7 : : #include "spdk/env.h" 8 : : #include "spdk/scheduler.h" 9 : : 10 : : #include "spdk_internal/event.h" 11 : : #include "spdk_internal/init.h" 12 : : 13 : : static void 14 : 856 : scheduler_subsystem_init(void) 15 : : { 16 : 856 : int rc = 0; 17 : : 18 : : /* Set the defaults */ 19 [ + + ]: 856 : if (spdk_scheduler_get() == NULL) { 20 : 794 : rc = spdk_scheduler_set("static"); 21 : : } 22 : : 23 : 856 : spdk_subsystem_init_next(rc); 24 : 856 : } 25 : : 26 : : static void 27 : 856 : scheduler_subsystem_fini(void) 28 : : { 29 : 856 : spdk_scheduler_set_period(0); 30 : 856 : spdk_scheduler_set(NULL); 31 : : 32 : 856 : spdk_subsystem_fini_next(); 33 : 856 : } 34 : : 35 : : static void 36 : 108 : scheduler_write_config_json(struct spdk_json_write_ctx *w) 37 : : { 38 : : struct spdk_scheduler *scheduler; 39 : : uint64_t scheduler_period; 40 : : 41 [ - + ]: 108 : assert(w != NULL); 42 : : 43 : 108 : scheduler = spdk_scheduler_get(); 44 [ - + ]: 108 : if (scheduler == NULL) { 45 : 0 : SPDK_ERRLOG("Unable to get scheduler info\n"); 46 : 0 : return; 47 : : } 48 : : 49 : 108 : scheduler_period = spdk_scheduler_get_period(); 50 : : 51 : 108 : spdk_json_write_array_begin(w); 52 : : 53 : 108 : spdk_json_write_object_begin(w); 54 : 108 : spdk_json_write_named_string(w, "method", "framework_set_scheduler"); 55 : 108 : spdk_json_write_named_object_begin(w, "params"); 56 : 108 : spdk_json_write_named_string(w, "name", scheduler->name); 57 [ + + ]: 108 : if (scheduler_period != 0) { 58 : 2 : spdk_json_write_named_uint32(w, "period", scheduler_period); 59 : : } 60 : 108 : spdk_json_write_object_end(w); 61 : 108 : spdk_json_write_object_end(w); 62 : : 63 : 108 : spdk_json_write_array_end(w); 64 : : } 65 : : 66 : : static struct spdk_subsystem g_spdk_subsystem_scheduler = { 67 : : .name = "scheduler", 68 : : .init = scheduler_subsystem_init, 69 : : .fini = scheduler_subsystem_fini, 70 : : .write_config_json = scheduler_write_config_json, 71 : : }; 72 : : 73 : 934 : SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_scheduler);