* Added shadow_id field to user_partition_data.

* Implemented several new syscalls (_kern_find_{disk_device,partition}(),
  {prepare,cancel}_disk_device_modifications(),
  [un]register_file_device()),
* Fixed some details in existing syscalls.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3976 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2003-07-15 01:10:32 +00:00
parent 2438192b6c
commit dd43c7769f
@@ -13,6 +13,7 @@ extern "C" {
// userland partition representation // userland partition representation
struct user_partition_data { struct user_partition_data {
partition_id id; partition_id id;
partition_id shadow_id;
off_t offset; off_t offset;
off_t size; off_t size;
uint32 block_size; uint32 block_size;
@@ -65,8 +66,12 @@ struct user_disk_device_job_info {
// iterating, retrieving device/partition data // iterating, retrieving device/partition data
partition_id _kern_get_next_disk_device_id(int32 *cookie, partition_id _kern_get_next_disk_device_id(int32 *cookie,
size_t *neededSize = NULL); size_t *neededSize = NULL);
status_t _kern_get_disk_device_data(partition_id deviceID, bool shadow, partition_id _kern_find_disk_device(const char *filename,
user_disk_device_data *buffer, size_t *neededSize = NULL);
partition_id _kern_find_partition(const char *filename,
size_t *neededSize = NULL);
status_t _kern_get_disk_device_data(partition_id deviceID, bool deviceOnly,
bool shadow, user_disk_device_data *buffer,
size_t bufferSize, size_t *neededSize); size_t bufferSize, size_t *neededSize);
status_t _kern_get_partition_data(partition_id partitionID, bool shadow, status_t _kern_get_partition_data(partition_id partitionID, bool shadow,
user_partition_data *buffer, user_partition_data *buffer,
@@ -78,6 +83,12 @@ status_t _kern_get_partitionable_spaces(partition_id partitionID, bool shadow,
// Pass the partition change counter? If GetPartitionInfo() is only // Pass the partition change counter? If GetPartitionInfo() is only
// allowed, when the device is locked, then we wouldn't need it. // allowed, when the device is locked, then we wouldn't need it.
partition_id _kern_register_file_device(const char *filename);
status_t _kern_unregister_file_device(partition_id deviceID,
const char *filename);
// Only a valid deviceID or filename need to be passed. The other one
// is -1/NULL. If both is given only filename is ignored.
// disk systems // disk systems
status_t _kern_get_disk_system_info(disk_system_id id, status_t _kern_get_disk_system_info(disk_system_id id,
user_disk_system_info *info); user_disk_system_info *info);
@@ -93,12 +104,17 @@ bool validate_partition_operation(uint32 operation, void *parameters);
// for kernel internal use. There needs to be something similar for these // for kernel internal use. There needs to be something similar for these
// functions. // functions.
// partition modification #endif // 0
status_t prepare_disk_device_modifications(partition_id device);
status_t commit_disk_device_modifications(partition_id device, port_id port, // disk device modification
int32 token, bool completeProgress); status_t _kern_prepare_disk_device_modifications(partition_id deviceID);
status_t cancel_disk_device_modifications(partition_id device); status_t _kern_commit_disk_device_modifications(partition_id deviceID,
bool is_disk_device_modified(partition_id device); port_id port, int32 token,
bool completeProgress);
status_t _kern_cancel_disk_device_modifications(partition_id deviceID);
bool _kern_is_disk_device_modified(partition_id deviceID);
#if 0
status_t defragment_partition(partition_id partition); status_t defragment_partition(partition_id partition);
status_t repair_partition(partition_id partition, bool checkOnly); status_t repair_partition(partition_id partition, bool checkOnly);