text: /*
   * Copyright (c) 2016 Intel Corporation.
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  /**
   * @file
   * @brief Disk Access layer API
   *
   * This file contains APIs for disk access.
   */
  
  #ifndef ZEPHYR_INCLUDE_STORAGE_DISK_ACCESS_H_
  #define ZEPHYR_INCLUDE_STORAGE_DISK_ACCESS_H_
  
  /**
   * @brief Disk Access APIs
   * @defgroup disk_access_interface Disk Access Interface
   * @{
   */
  
  #include <drivers/disk.h>
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /**
   * @brief perform any initialization
   *
   * This call is made by the consumer before doing any IO calls so that the
   * disk or the backing device can do any initialization.
   *
   * @param[in] pdrv          Disk name
   *
   * @return 0 on success, negative errno code on fail
   */
  int disk_access_init(const char *pdrv);
  
  /**
   * @brief Get the status of disk
   *
   * This call is used to get the status of the disk
   *
   * @param[in] pdrv          Disk name
   *
   * @return DISK_STATUS_OK or other DISK_STATUS_*s
   */
  int disk_access_status(const char *pdrv);
  
  /**
   * @brief read data from disk
   *
   * Function to read data from disk to a memory buffer.
   *
   * @param[in] pdrv          Disk name
   * @param[in] data_buf      Pointer to the memory buffer to put data.
   * @param[in] start_sector  Start disk sector to read from
   * @param[in] num_sector    Number of disk sectors to read
   *
   * @return 0 on success, negative errno code on fail
   */
  int disk_access_read(const char *pdrv, uint8_t *data_buf,
  		     uint32_t start_sector, uint32_t num_sector);
  
  /**
   * @brief write data to disk
   *
   * Function write data from memory buffer to disk.
   *
   * @param[in] pdrv          Disk name
   * @param[in] data_buf      Pointer to the memory buffer
   * @param[in] start_sector  Start disk sector to write to
   * @param[in] num_sector    Number of disk sectors to write
   *
   * @return 0 on success, negative errno code on fail
   */
  int disk_access_write(const char *pdrv, const uint8_t *data_buf,
  		      uint32_t start_sector, uint32_t num_sector);
  
  /**
   * @brief Get/Configure disk parameters
   *
   * Function to get disk parameters and make any special device requests.
   *
   * @param[in] pdrv          Disk name
   * @param[in] cmd           DISK_IOCTL_* code describing the request
   * @param[in] buff          Command data buffer
   *
   * @return 0 on success, negative errno code on fail
   */
  int disk_access_ioctl(const char *pdrv, uint8_t cmd, void *buff);
  
  #ifdef __cplusplus
  }
  #endif
  
  /**
   * @}
   */
  
  #endif /* ZEPHYR_INCLUDE_STORAGE_DISK_ACCESS_H_ */
  