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
}
}