1/* This software is part of the Haiku distribution and is covered 2** by the MIT License. 3*/ 4#ifndef VIRTUAL_DRIVE_H 5#define VIRTUAL_DRIVE_H 6 7#include <Drivers.h> 8 9// virtualdrive device directory and control device, "/dev" relative 10#define VIRTUAL_DRIVE_DIRECTORY_REL "misc/virtualdrive" 11#define VIRTUAL_DRIVE_CONTROL_DEVICE_REL VIRTUAL_DRIVE_DIRECTORY_REL \ 12 "/control" 13// virtualdrive device directory and control device, absolute 14#define VIRTUAL_DRIVE_DIRECTORY "/dev/" \ 15 VIRTUAL_DRIVE_DIRECTORY_REL 16#define VIRTUAL_DRIVE_CONTROL_DEVICE "/dev/" \ 17 VIRTUAL_DRIVE_CONTROL_DEVICE_REL 18 19#define VIRTUAL_DRIVE_IOCTL_BASE (B_DEVICE_OP_CODES_END + 10001) 20 21enum { 22 VIRTUAL_DRIVE_REGISTER_FILE = VIRTUAL_DRIVE_IOCTL_BASE, 23 // on control device: virtual_drive_info*, fills in device_name 24 VIRTUAL_DRIVE_UNREGISTER_FILE, 25 // on data device: none 26 VIRTUAL_DRIVE_GET_INFO, 27 // on data device: virtual_drive_info* 28}; 29 30#define VIRTUAL_DRIVE_MAGIC 'VdIn' 31 32typedef struct virtual_drive_info { 33 uint32 magic; 34 size_t drive_info_size; 35 char file_name[B_PATH_NAME_LENGTH]; 36 char device_name[B_PATH_NAME_LENGTH]; 37 device_geometry geometry; 38 bool use_geometry; 39 bool halted; // only valid for VIRTUAL_DRIVE_GET_INFO 40} virtual_drive_info; 41 42#endif // VIRTUAL_DRIVE_H 43