1/* 2 * Copyright 2003-2009, Haiku Inc. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Ingo Weinhold, bonefish@users.sf.net 7 */ 8#ifndef _DISK_DEVICE_MANAGER_USERLAND_INTERFACE_H 9#define _DISK_DEVICE_MANAGER_USERLAND_INTERFACE_H 10 11 12#include <OS.h> 13 14#include <DiskDeviceDefs.h> 15 16#include <ddm_userland_interface_defs.h> 17#include <disk_device_manager.h> 18 19 20#ifdef __cplusplus 21extern "C" { 22#endif 23 24/*! Syscalls entries */ 25 26// iterating, retrieving device/partition data 27partition_id _user_get_next_disk_device_id(int32 *cookie, size_t *neededSize); 28partition_id _user_find_disk_device(const char *filename, size_t *neededSize); 29partition_id _user_find_partition(const char *filename, size_t *neededSize); 30partition_id _user_find_file_disk_device(const char *filename, 31 size_t *neededSize); 32status_t _user_get_disk_device_data(partition_id deviceID, bool deviceOnly, 33 user_disk_device_data *buffer, size_t bufferSize, 34 size_t *neededSize); 35 36partition_id _user_register_file_device(const char *filename); 37status_t _user_unregister_file_device(partition_id deviceID, 38 const char *filename); 39 // Only a valid deviceID or filename need to be passed. The other one 40 // is -1/NULL. If both is given only filename is ignored. 41status_t _user_get_file_disk_device_path(partition_id id, char* buffer, 42 size_t bufferSize); 43 44// disk systems 45status_t _user_get_disk_system_info(disk_system_id id, 46 user_disk_system_info *info); 47status_t _user_get_next_disk_system_info(int32 *cookie, 48 user_disk_system_info *info); 49status_t _user_find_disk_system(const char *name, user_disk_system_info *info); 50 51// disk device modification 52status_t _user_defragment_partition(partition_id partitionID, 53 int32* changeCounter); 54status_t _user_repair_partition(partition_id partitionID, int32* changeCounter, 55 bool checkOnly); 56status_t _user_resize_partition(partition_id partitionID, int32* changeCounter, 57 partition_id childID, int32* childChangeCounter, off_t size, 58 off_t contentSize); 59status_t _user_move_partition(partition_id partitionID, int32* changeCounter, 60 partition_id childID, int32* childChangeCounter, 61 off_t newOffset, partition_id* descendantIDs, 62 int32* descendantChangeCounters, int32 descendantCount); 63status_t _user_set_partition_name(partition_id partitionID, 64 int32* changeCounter, partition_id childID, 65 int32* childChangeCounter, const char* name); 66status_t _user_set_partition_content_name(partition_id partitionID, 67 int32* changeCounter, const char* name); 68status_t _user_set_partition_type(partition_id partitionID, 69 int32* changeCounter, partition_id childID, 70 int32* childChangeCounter, const char* type); 71status_t _user_set_partition_parameters(partition_id partitionID, 72 int32* changeCounter, partition_id childID, 73 int32* childChangeCounter, const char* parameters); 74status_t _user_set_partition_content_parameters(partition_id partitionID, 75 int32* changeCounter, const char* parameters); 76status_t _user_initialize_partition(partition_id partitionID, 77 int32* changeCounter, const char* diskSystemName, 78 const char* name, const char* parameters); 79status_t _user_uninitialize_partition(partition_id partitionID, 80 int32* changeCounter, partition_id parentID, 81 int32* parentChangeCounter); 82 83status_t _user_create_child_partition(partition_id partitionID, 84 int32* changeCounter, off_t offset, off_t size, 85 const char* type, const char* name, const char* parameters, 86 partition_id* childID, int32* childChangeCounter); 87status_t _user_delete_child_partition(partition_id partitionID, 88 int32* changeCounter, partition_id childID, 89 int32 childChangeCounter); 90 91// change notification 92status_t _user_start_watching_disks(uint32 eventMask, port_id port, 93 int32 token); 94status_t _user_stop_watching_disks(port_id port, int32 token); 95 96#ifdef __cplusplus 97} 98#endif 99 100#endif // _DISK_DEVICE_MANAGER_USERLAND_INTERFACE_H 101