status_t _user_get_disk_system_info(disk_system_id id, user_disk_system_info *_info) { if (_info == NULL) return B_BAD_VALUE; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); if (ManagerLocker locker = manager) { KDiskSystem *diskSystem = manager->FindDiskSystem(id); if (diskSystem != NULL) { user_disk_system_info info; diskSystem->GetInfo(&info); return copy_to_user_value(_info, info); } } return B_ENTRY_NOT_FOUND; }
status_t _user_get_disk_system_info(disk_system_id id, user_disk_system_info *_info) { if (!_info) return B_BAD_VALUE; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); if (ManagerLocker locker = manager) { if (KDiskSystem *diskSystem = manager->FindDiskSystem(id)) { user_disk_system_info info; diskSystem->GetInfo(&info); user_memcpy(_info, &info, sizeof(info)); return B_OK; } } return B_ENTRY_NOT_FOUND; }
status_t _user_find_disk_system(const char *_name, user_disk_system_info *_info) { if (!_name || !_info) return B_BAD_VALUE; char name[B_DISK_SYSTEM_NAME_LENGTH]; status_t error = ddm_strlcpy(name, _name, B_DISK_SYSTEM_NAME_LENGTH); if (error) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); if (ManagerLocker locker = manager) { if (KDiskSystem *diskSystem = manager->FindDiskSystem(name)) { user_disk_system_info info; diskSystem->GetInfo(&info); user_memcpy(_info, &info, sizeof(info)); return B_OK; } } return B_ENTRY_NOT_FOUND; }
status_t _user_find_disk_system(const char *_name, user_disk_system_info *_info) { if (_name == NULL || _info == NULL) return B_BAD_VALUE; if (!IS_USER_ADDRESS(_name) || !IS_USER_ADDRESS(_info)) return B_BAD_ADDRESS; char name[B_DISK_SYSTEM_NAME_LENGTH]; status_t error = ddm_strlcpy(name, _name, B_DISK_SYSTEM_NAME_LENGTH); if (error != B_OK) return error; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); if (ManagerLocker locker = manager) { KDiskSystem *diskSystem = manager->FindDiskSystem(name); if (diskSystem != NULL) { user_disk_system_info info; diskSystem->GetInfo(&info); return copy_to_user_value(_info, info); } } return B_ENTRY_NOT_FOUND; }