1/* 2 * Copyright 2003-2008, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _DISK_DEVICE_DEFS_H 6#define _DISK_DEVICE_DEFS_H 7 8 9#include <SupportDefs.h> 10 11 12typedef int32 partition_id; 13typedef int32 disk_system_id; 14typedef int32 disk_job_id; 15 16// partition flags 17enum { 18 B_PARTITION_IS_DEVICE = 0x01, 19 B_PARTITION_FILE_SYSTEM = 0x02, 20 B_PARTITION_PARTITIONING_SYSTEM = 0x04, 21 B_PARTITION_READ_ONLY = 0x08, 22 B_PARTITION_MOUNTED = 0x10, // needed? 23 B_PARTITION_BUSY = 0x20, 24}; 25 26// partition statuses 27enum { 28 B_PARTITION_VALID, 29 B_PARTITION_CORRUPT, 30 B_PARTITION_UNRECOGNIZED, 31 B_PARTITION_UNINITIALIZED, // Only when uninitialized manually. 32 // When not recognized while scanning it's 33 // B_PARTITION_UNRECOGNIZED. 34}; 35 36// partition change flags 37enum { 38 B_PARTITION_CHANGED_OFFSET = 0x000001, 39 B_PARTITION_CHANGED_SIZE = 0x000002, 40 B_PARTITION_CHANGED_CONTENT_SIZE = 0x000004, 41 B_PARTITION_CHANGED_BLOCK_SIZE = 0x000008, 42 B_PARTITION_CHANGED_STATUS = 0x000010, 43 B_PARTITION_CHANGED_FLAGS = 0x000020, 44 B_PARTITION_CHANGED_VOLUME = 0x000040, 45 B_PARTITION_CHANGED_NAME = 0x000080, 46 B_PARTITION_CHANGED_CONTENT_NAME = 0x000100, 47 B_PARTITION_CHANGED_TYPE = 0x000200, 48 B_PARTITION_CHANGED_CONTENT_TYPE = 0x000400, 49 B_PARTITION_CHANGED_PARAMETERS = 0x000800, 50 B_PARTITION_CHANGED_CONTENT_PARAMETERS = 0x001000, 51 B_PARTITION_CHANGED_CHILDREN = 0x002000, 52 B_PARTITION_CHANGED_DESCENDANTS = 0x004000, 53 B_PARTITION_CHANGED_DEFRAGMENTATION = 0x008000, 54 B_PARTITION_CHANGED_CHECK = 0x010000, 55 B_PARTITION_CHANGED_REPAIR = 0x020000, 56 B_PARTITION_CHANGED_INITIALIZATION = 0x040000, 57}; 58 59// disk device flags 60enum { 61 B_DISK_DEVICE_REMOVABLE = 0x01, 62 B_DISK_DEVICE_HAS_MEDIA = 0x02, 63 B_DISK_DEVICE_READ_ONLY = 0x04, 64 B_DISK_DEVICE_WRITE_ONCE = 0x08, 65 B_DISK_DEVICE_IS_FILE = 0x10, 66}; 67 68// disk system flags 69enum { 70 B_DISK_SYSTEM_IS_FILE_SYSTEM = 0x000001, 71 72 // flags common for both file and partitioning systems 73 B_DISK_SYSTEM_SUPPORTS_CHECKING = 0x000002, 74 B_DISK_SYSTEM_SUPPORTS_REPAIRING = 0x000004, 75 B_DISK_SYSTEM_SUPPORTS_RESIZING = 0x000008, 76 B_DISK_SYSTEM_SUPPORTS_MOVING = 0x000010, 77 B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME = 0x000020, 78 B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS = 0x000040, 79 B_DISK_SYSTEM_SUPPORTS_INITIALIZING = 0x000080, 80 B_DISK_SYSTEM_SUPPORTS_CONTENT_NAME = 0x000100, 81 82 // file system specific flags 83 B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING = 0x001000, 84 B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING_WHILE_MOUNTED = 0x002000, 85 B_DISK_SYSTEM_SUPPORTS_CHECKING_WHILE_MOUNTED = 0x004000, 86 B_DISK_SYSTEM_SUPPORTS_REPAIRING_WHILE_MOUNTED = 0x008000, 87 B_DISK_SYSTEM_SUPPORTS_RESIZING_WHILE_MOUNTED = 0x010000, 88 B_DISK_SYSTEM_SUPPORTS_MOVING_WHILE_MOUNTED = 0x020000, 89 B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME_WHILE_MOUNTED = 0x040000, 90 B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS_WHILE_MOUNTED = 0x080000, 91 B_DISK_SYSTEM_SUPPORTS_WRITING = 0x100000, 92 93 // partitioning system specific flags 94 B_DISK_SYSTEM_SUPPORTS_RESIZING_CHILD = 0x001000, 95 B_DISK_SYSTEM_SUPPORTS_MOVING_CHILD = 0x002000, 96 B_DISK_SYSTEM_SUPPORTS_SETTING_NAME = 0x004000, 97 B_DISK_SYSTEM_SUPPORTS_SETTING_TYPE = 0x008000, 98 B_DISK_SYSTEM_SUPPORTS_SETTING_PARAMETERS = 0x010000, 99 B_DISK_SYSTEM_SUPPORTS_CREATING_CHILD = 0x020000, 100 B_DISK_SYSTEM_SUPPORTS_DELETING_CHILD = 0x040000, 101 B_DISK_SYSTEM_SUPPORTS_NAME = 0x080000, 102}; 103 104// disk device job types 105enum { 106 B_DISK_DEVICE_JOB_BAD_TYPE, 107 B_DISK_DEVICE_JOB_DEFRAGMENT, 108 B_DISK_DEVICE_JOB_REPAIR, 109 B_DISK_DEVICE_JOB_RESIZE, 110 B_DISK_DEVICE_JOB_MOVE, 111 B_DISK_DEVICE_JOB_SET_NAME, 112 B_DISK_DEVICE_JOB_SET_CONTENT_NAME, 113 B_DISK_DEVICE_JOB_SET_TYPE, 114 B_DISK_DEVICE_JOB_SET_PARAMETERS, 115 B_DISK_DEVICE_JOB_SET_CONTENT_PARAMETERS, 116 B_DISK_DEVICE_JOB_INITIALIZE, 117 B_DISK_DEVICE_JOB_UNINITIALIZE, 118 B_DISK_DEVICE_JOB_CREATE, 119 B_DISK_DEVICE_JOB_DELETE, 120 B_DISK_DEVICE_JOB_SCAN, 121}; 122 123// disk device job statuses 124enum { 125 B_DISK_DEVICE_JOB_UNINITIALIZED, 126 B_DISK_DEVICE_JOB_SCHEDULED, 127 B_DISK_DEVICE_JOB_IN_PROGRESS, 128 B_DISK_DEVICE_JOB_SUCCEEDED, 129 B_DISK_DEVICE_JOB_FAILED, 130 B_DISK_DEVICE_JOB_CANCELED, 131}; 132 133// disk device job progress info 134typedef struct disk_device_job_progress_info { 135 uint32 status; 136 uint32 interrupt_properties; 137 int32 task_count; 138 int32 completed_tasks; 139 float current_task_progress; 140 char current_task_description[256]; 141} disk_device_job_progress_info; 142 143// disk device job interrupt properties 144enum { 145 B_DISK_DEVICE_JOB_CAN_CANCEL = 0x01, 146 B_DISK_DEVICE_JOB_STOP_ON_CANCEL = 0x02, 147 B_DISK_DEVICE_JOB_REVERSE_ON_CANCEL = 0x04, 148 B_DISK_DEVICE_JOB_CAN_PAUSE = 0x08, 149}; 150 151enum B_PARAMETER_EDITOR_TYPE { 152 B_CREATE_PARAMETER_EDITOR = 0x01, 153 B_INITIALIZE_PARAMETER_EDITOR = 0x04, 154 B_DELETE_PARAMETER_EDITOR = 0x08, 155 B_PROPERTIES_PARAMETER_EDITOR = 0x10 156}; 157 158// string length constants, all of which include the NULL terminator 159#define B_DISK_DEVICE_TYPE_LENGTH B_FILE_NAME_LENGTH 160#define B_DISK_DEVICE_NAME_LENGTH B_FILE_NAME_LENGTH 161#define B_DISK_SYSTEM_NAME_LENGTH B_PATH_NAME_LENGTH 162 163// max size of parameter string buffers, including NULL terminator 164#define B_DISK_DEVICE_MAX_PARAMETER_SIZE (32 * 1024) 165 166#endif // _DISK_DEVICE_DEFS_H 167