1*d1c34fb1Sdlg /* $OpenBSD: vscsivar.h,v 1.5 2011/04/05 15:28:49 dlg Exp $ */ 2bfea8c94Sdlg 3bfea8c94Sdlg /* 4bfea8c94Sdlg * Copyright (c) 2008 David Gwynne <dlg@openbsd.org> 5bfea8c94Sdlg * 6bfea8c94Sdlg * Permission to use, copy, modify, and distribute this software for any 7bfea8c94Sdlg * purpose with or without fee is hereby granted, provided that the above 8bfea8c94Sdlg * copyright notice and this permission notice appear in all copies. 9bfea8c94Sdlg * 10bfea8c94Sdlg * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11bfea8c94Sdlg * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12bfea8c94Sdlg * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13bfea8c94Sdlg * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14bfea8c94Sdlg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15bfea8c94Sdlg * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16bfea8c94Sdlg * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17bfea8c94Sdlg */ 18bfea8c94Sdlg 19bfea8c94Sdlg #ifndef _SYS_DEV_VSCSIVAR_H 20bfea8c94Sdlg #define _SYS_DEV_VSCSIVAR_H 21bfea8c94Sdlg 22bfea8c94Sdlg struct vscsi_ioc_i2t { 23bfea8c94Sdlg int tag; 24bfea8c94Sdlg 25bfea8c94Sdlg u_int target; 26bfea8c94Sdlg u_int lun; 27bfea8c94Sdlg 28bfea8c94Sdlg struct scsi_generic cmd; 29bfea8c94Sdlg size_t cmdlen; 30bfea8c94Sdlg 31bfea8c94Sdlg size_t datalen; 32bfea8c94Sdlg int direction; 33bfea8c94Sdlg #define VSCSI_DIR_NONE 0 34bfea8c94Sdlg #define VSCSI_DIR_READ 1 35bfea8c94Sdlg #define VSCSI_DIR_WRITE 2 36bfea8c94Sdlg }; 37bfea8c94Sdlg 38bfea8c94Sdlg #define VSCSI_I2T _IOR('I', 0, struct vscsi_ioc_i2t) 39bfea8c94Sdlg 40bfea8c94Sdlg struct vscsi_ioc_data { 41bfea8c94Sdlg int tag; 42bfea8c94Sdlg 43bfea8c94Sdlg void * data; 44bfea8c94Sdlg size_t datalen; 45bfea8c94Sdlg }; 46bfea8c94Sdlg 47bfea8c94Sdlg #define VSCSI_DATA_READ _IOW('I', 1, struct vscsi_ioc_data) 48bfea8c94Sdlg #define VSCSI_DATA_WRITE _IOW('I', 2, struct vscsi_ioc_data) 49bfea8c94Sdlg 50bfea8c94Sdlg struct vscsi_ioc_t2i { 51bfea8c94Sdlg int tag; 52bfea8c94Sdlg 53bfea8c94Sdlg int status; 54bfea8c94Sdlg #define VSCSI_STAT_DONE 0 55bfea8c94Sdlg #define VSCSI_STAT_SENSE 1 56*d1c34fb1Sdlg #define VSCSI_STAT_RESET 2 57*d1c34fb1Sdlg #define VSCSI_STAT_ERR 3 58bfea8c94Sdlg struct scsi_sense_data sense; 59bfea8c94Sdlg }; 60bfea8c94Sdlg 61bfea8c94Sdlg #define VSCSI_T2I _IOW('I', 3, struct vscsi_ioc_t2i) 62bfea8c94Sdlg 63ee9d3df0Sdlg struct vscsi_ioc_devevent { 6414497defSdlg int target; 6514497defSdlg int lun; 66ee9d3df0Sdlg }; 67ee9d3df0Sdlg 68ee9d3df0Sdlg #define VSCSI_REQPROBE _IOW('I', 4, struct vscsi_ioc_devevent) 69ee9d3df0Sdlg #define VSCSI_REQDETACH _IOW('I', 5, struct vscsi_ioc_devevent) 70ee9d3df0Sdlg 71bfea8c94Sdlg #endif /* _SYS_DEV_VSCSIVAR_H */ 72