xref: /haiku/src/tests/kits/storage/virtualdrive/virtualdrive.h (revision 4c8e85b316c35a9161f5a1c50ad70bc91c83a76f)
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 
21 enum {
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 
32 typedef 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