using System; namespace DiscImageChef.Devices.Linux { [Flags] enum FileFlags : int { /// /// O_RDONLY /// Readonly = 00000000, /// /// O_WRONLY /// Writeonly = 00000001, /// /// O_RDWR /// ReadWrite = 00000002, /// /// O_CREAT /// OpenOrCreate = 00000100, /// /// O_EXCL /// CreateNew = 00000200, /// /// O_NOCTTY /// NoControlTTY = 00000400, /// /// O_TRUNC /// Truncate = 00001000, /// /// O_APPEND /// Append = 00002000, /// /// O_NONBLOCK /// NonBlocking = 00004000, /// /// O_DSYNC /// Synchronous = 00010000, /// /// O_ASYNC /// Async = 00020000, /// /// O_DIRECT /// Direct = 00040000, /// /// O_LARGEFILE /// LargeFile = 00100000, /// /// O_DIRECTORY /// Directory = 00200000, /// /// O_NOFOLLOW /// NoFollowSymlink = 00400000, /// /// O_NOATIME /// NoAccessTime = 01000000, /// /// O_CLOEXEC /// CloseOnExec = 02000000 } /// /// Direction of SCSI transfer /// enum ScsiIoctlDirection : int { /// /// No data transfer happens /// SG_DXFER_NONE /// None = -1, /// /// From host to device /// SG_DXFER_TO_DEV /// Out = -2, /// /// From device to host /// SG_DXFER_FROM_DEV /// In = -3, /// /// Bidirectional device/host /// SG_DXFER_TO_FROM_DEV /// Unspecified = -4, /// /// Unspecified /// SG_DXFER_UNKNOWN /// Unknown = -5 } enum LinuxIoctl : ulong { SG_EMULATED_HOST = 0x2203, SG_GET_VERSION_NUM = 0x2282, SG_IO = 0x2285, SG_GET_SCSI_ID = 0x2276, } [Flags] enum SgInfo : uint { /// /// Mask to check OK /// OkMask = 0x01, /// /// No sense or driver noise /// Ok = 0x00, /// /// Check Condition /// CheckCondition = 0x01, /// /// Direct I/O mask /// DirectIoMask = 0x06, /// /// Transfer via kernel buffers (or no transfer) /// IndirectIo = 0x00, /// /// Direct I/O performed /// DirectIo = 0x02, /// /// Partial direct and partial indirect I/O /// MixedIo = 0x04 } }