zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

nvme_ioctl.h (2489B) - Raw


      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 
      7 #ifndef _LINUX_NVME_IOCTL_H
      8 #define _LINUX_NVME_IOCTL_H
      9 
     10 #include <linux/types.h>
     11 
     12 struct nvme_user_io {
     13 	__u8	opcode;
     14 	__u8	flags;
     15 	__u16	control;
     16 	__u16	nblocks;
     17 	__u16	rsvd;
     18 	__u64	metadata;
     19 	__u64	addr;
     20 	__u64	slba;
     21 	__u32	dsmgmt;
     22 	__u32	reftag;
     23 	__u16	apptag;
     24 	__u16	appmask;
     25 };
     26 
     27 struct nvme_passthru_cmd {
     28 	__u8	opcode;
     29 	__u8	flags;
     30 	__u16	rsvd1;
     31 	__u32	nsid;
     32 	__u32	cdw2;
     33 	__u32	cdw3;
     34 	__u64	metadata;
     35 	__u64	addr;
     36 	__u32	metadata_len;
     37 	__u32	data_len;
     38 	__u32	cdw10;
     39 	__u32	cdw11;
     40 	__u32	cdw12;
     41 	__u32	cdw13;
     42 	__u32	cdw14;
     43 	__u32	cdw15;
     44 	__u32	timeout_ms;
     45 	__u32	result;
     46 };
     47 
     48 struct nvme_passthru_cmd64 {
     49 	__u8	opcode;
     50 	__u8	flags;
     51 	__u16	rsvd1;
     52 	__u32	nsid;
     53 	__u32	cdw2;
     54 	__u32	cdw3;
     55 	__u64	metadata;
     56 	__u64	addr;
     57 	__u32	metadata_len;
     58 	union {
     59 		__u32	data_len; /* for non-vectored io */
     60 		__u32	vec_cnt; /* for vectored io */
     61 	};
     62 	__u32	cdw10;
     63 	__u32	cdw11;
     64 	__u32	cdw12;
     65 	__u32	cdw13;
     66 	__u32	cdw14;
     67 	__u32	cdw15;
     68 	__u32	timeout_ms;
     69 	__u32   rsvd2;
     70 	__u64	result;
     71 };
     72 
     73 /* same as struct nvme_passthru_cmd64, minus the 8b result field */
     74 struct nvme_uring_cmd {
     75 	__u8	opcode;
     76 	__u8	flags;
     77 	__u16	rsvd1;
     78 	__u32	nsid;
     79 	__u32	cdw2;
     80 	__u32	cdw3;
     81 	__u64	metadata;
     82 	__u64	addr;
     83 	__u32	metadata_len;
     84 	__u32	data_len;
     85 	__u32	cdw10;
     86 	__u32	cdw11;
     87 	__u32	cdw12;
     88 	__u32	cdw13;
     89 	__u32	cdw14;
     90 	__u32	cdw15;
     91 	__u32	timeout_ms;
     92 	__u32   rsvd2;
     93 };
     94 
     95 #define nvme_admin_cmd nvme_passthru_cmd
     96 
     97 #define NVME_IOCTL_ID		_IO('N', 0x40)
     98 #define NVME_IOCTL_ADMIN_CMD	_IOWR('N', 0x41, struct nvme_admin_cmd)
     99 #define NVME_IOCTL_SUBMIT_IO	_IOW('N', 0x42, struct nvme_user_io)
    100 #define NVME_IOCTL_IO_CMD	_IOWR('N', 0x43, struct nvme_passthru_cmd)
    101 #define NVME_IOCTL_RESET	_IO('N', 0x44)
    102 #define NVME_IOCTL_SUBSYS_RESET	_IO('N', 0x45)
    103 #define NVME_IOCTL_RESCAN	_IO('N', 0x46)
    104 #define NVME_IOCTL_ADMIN64_CMD	_IOWR('N', 0x47, struct nvme_passthru_cmd64)
    105 #define NVME_IOCTL_IO64_CMD	_IOWR('N', 0x48, struct nvme_passthru_cmd64)
    106 #define NVME_IOCTL_IO64_CMD_VEC	_IOWR('N', 0x49, struct nvme_passthru_cmd64)
    107 
    108 /* io_uring async commands: */
    109 #define NVME_URING_CMD_IO	_IOWR('N', 0x80, struct nvme_uring_cmd)
    110 #define NVME_URING_CMD_IO_VEC	_IOWR('N', 0x81, struct nvme_uring_cmd)
    111 #define NVME_URING_CMD_ADMIN	_IOWR('N', 0x82, struct nvme_uring_cmd)
    112 #define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
    113 
    114 #endif /* _LINUX_NVME_IOCTL_H */