linux/include/uapi/linux/nvme_ioctl.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2/*
   3 * Definitions for the NVM Express ioctl interface
   4 * Copyright (c) 2011-2014, Intel Corporation.
   5 *
   6 * This program is free software; you can redistribute it and/or modify it
   7 * under the terms and conditions of the GNU General Public License,
   8 * version 2, as published by the Free Software Foundation.
   9 *
  10 * This program is distributed in the hope it will be useful, but WITHOUT
  11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  13 * more details.
  14 */
  15
  16#ifndef _UAPI_LINUX_NVME_IOCTL_H
  17#define _UAPI_LINUX_NVME_IOCTL_H
  18
  19#include <linux/types.h>
  20
  21struct nvme_user_io {
  22        __u8    opcode;
  23        __u8    flags;
  24        __u16   control;
  25        __u16   nblocks;
  26        __u16   rsvd;
  27        __u64   metadata;
  28        __u64   addr;
  29        __u64   slba;
  30        __u32   dsmgmt;
  31        __u32   reftag;
  32        __u16   apptag;
  33        __u16   appmask;
  34};
  35
  36struct nvme_passthru_cmd {
  37        __u8    opcode;
  38        __u8    flags;
  39        __u16   rsvd1;
  40        __u32   nsid;
  41        __u32   cdw2;
  42        __u32   cdw3;
  43        __u64   metadata;
  44        __u64   addr;
  45        __u32   metadata_len;
  46        __u32   data_len;
  47        __u32   cdw10;
  48        __u32   cdw11;
  49        __u32   cdw12;
  50        __u32   cdw13;
  51        __u32   cdw14;
  52        __u32   cdw15;
  53        __u32   timeout_ms;
  54        __u32   result;
  55};
  56
  57#define nvme_admin_cmd nvme_passthru_cmd
  58
  59#define NVME_IOCTL_ID           _IO('N', 0x40)
  60#define NVME_IOCTL_ADMIN_CMD    _IOWR('N', 0x41, struct nvme_admin_cmd)
  61#define NVME_IOCTL_SUBMIT_IO    _IOW('N', 0x42, struct nvme_user_io)
  62#define NVME_IOCTL_IO_CMD       _IOWR('N', 0x43, struct nvme_passthru_cmd)
  63#define NVME_IOCTL_RESET        _IO('N', 0x44)
  64#define NVME_IOCTL_SUBSYS_RESET _IO('N', 0x45)
  65#define NVME_IOCTL_RESCAN       _IO('N', 0x46)
  66
  67#endif /* _UAPI_LINUX_NVME_IOCTL_H */
  68