LCOV - code coverage report
Current view: top level - module/event/subsystems/vmd - vmd_rpc.c (source / functions) Hit Total Coverage
Test: ut_cov_unit.info Lines: 0 42 0.0 %
Date: 2024-07-13 01:03:17 Functions: 0 7 0.0 %

          Line data    Source code
       1             : /*   SPDX-License-Identifier: BSD-3-Clause
       2             :  *   Copyright (C) 2019 Intel Corporation.
       3             :  *   All rights reserved.
       4             :  */
       5             : 
       6             : #include "spdk/vmd.h"
       7             : 
       8             : #include "spdk/env.h"
       9             : #include "spdk/rpc.h"
      10             : #include "spdk/string.h"
      11             : #include "spdk/util.h"
      12             : 
      13             : #include "spdk/log.h"
      14             : #include "event_vmd.h"
      15             : 
      16             : static void
      17           0 : rpc_vmd_enable(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params)
      18             : {
      19           0 :         vmd_subsystem_enable();
      20             : 
      21           0 :         spdk_jsonrpc_send_bool_response(request, true);
      22           0 : }
      23           0 : SPDK_RPC_REGISTER("vmd_enable", rpc_vmd_enable, SPDK_RPC_STARTUP)
      24           0 : SPDK_RPC_REGISTER_ALIAS_DEPRECATED(vmd_enable, enable_vmd)
      25             : 
      26             : struct rpc_vmd_remove_device {
      27             :         char *addr;
      28             : };
      29             : 
      30             : static const struct spdk_json_object_decoder rpc_vmd_remove_device_decoders[] = {
      31             :         {"addr", offsetof(struct rpc_vmd_remove_device, addr), spdk_json_decode_string},
      32             : };
      33             : 
      34             : static void
      35           0 : rpc_vmd_remove_device(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params)
      36             : {
      37           0 :         struct rpc_vmd_remove_device req = {};
      38           0 :         struct spdk_pci_addr addr;
      39             :         int rc;
      40             : 
      41           0 :         if (!vmd_subsystem_is_enabled()) {
      42           0 :                 spdk_jsonrpc_send_error_response(request, -EPERM, "VMD subsystem is disabled");
      43           0 :                 return;
      44             :         }
      45             : 
      46           0 :         rc = spdk_json_decode_object(params, rpc_vmd_remove_device_decoders,
      47             :                                      SPDK_COUNTOF(rpc_vmd_remove_device_decoders),
      48             :                                      &req);
      49           0 :         if (rc != 0) {
      50           0 :                 spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
      51             :                                                  "spdk_json_decode_object failed");
      52           0 :                 return;
      53             :         }
      54             : 
      55           0 :         rc = spdk_pci_addr_parse(&addr, req.addr);
      56           0 :         if (rc != 0) {
      57           0 :                 spdk_jsonrpc_send_error_response(request, -EINVAL, "Failed to parse PCI address");
      58           0 :                 goto out;
      59             :         }
      60             : 
      61           0 :         rc = spdk_vmd_remove_device(&addr);
      62           0 :         if (rc != 0) {
      63           0 :                 spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc));
      64           0 :                 goto out;
      65             :         }
      66             : 
      67           0 :         spdk_jsonrpc_send_bool_response(request, true);
      68           0 : out:
      69           0 :         free(req.addr);
      70             : }
      71           0 : SPDK_RPC_REGISTER("vmd_remove_device", rpc_vmd_remove_device, SPDK_RPC_RUNTIME)
      72             : 
      73             : static void
      74           0 : rpc_vmd_rescan(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params)
      75             : {
      76             :         struct spdk_json_write_ctx *w;
      77             :         int rc;
      78             : 
      79           0 :         if (!vmd_subsystem_is_enabled()) {
      80           0 :                 spdk_jsonrpc_send_error_response(request, -EPERM, "VMD subsystem is disabled");
      81           0 :                 return;
      82             :         }
      83             : 
      84           0 :         rc = spdk_vmd_rescan();
      85           0 :         if (rc < 0) {
      86           0 :                 spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc));
      87           0 :                 return;
      88             :         }
      89             : 
      90           0 :         w = spdk_jsonrpc_begin_result(request);
      91           0 :         spdk_json_write_object_begin(w);
      92           0 :         spdk_json_write_named_uint32(w, "count", (uint32_t)rc);
      93           0 :         spdk_json_write_object_end(w);
      94           0 :         spdk_jsonrpc_end_result(request, w);
      95             : }
      96           0 : SPDK_RPC_REGISTER("vmd_rescan", rpc_vmd_rescan, SPDK_RPC_RUNTIME)

Generated by: LCOV version 1.15