brintos

brintos / linux-shallow public Read only

0
0
Text · 2.4 KiB · 2f76cba Raw
115 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2/*3 * Definitions for the NVM Express ioctl interface4 * Copyright (c) 2011-2014, Intel Corporation.5 */6 7#ifndef _UAPI_LINUX_NVME_IOCTL_H8#define _UAPI_LINUX_NVME_IOCTL_H9 10#include <linux/types.h>11 12struct 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 27struct 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 48struct 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 */74struct 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_cmd96 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 /* _UAPI_LINUX_NVME_IOCTL_H */115