status_t _user_get_next_disk_system_info(int32 *_cookie, user_disk_system_info *_info) { if (_info == NULL) return B_BAD_VALUE; if (!IS_USER_ADDRESS(_info)) return B_BAD_ADDRESS; int32 cookie; status_t result = copy_from_user_value(cookie, _cookie); if (result != B_OK) return result; result = B_ENTRY_NOT_FOUND; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); if (ManagerLocker locker = manager) { KDiskSystem *diskSystem = manager->NextDiskSystem(&cookie); if (diskSystem != NULL) { user_disk_system_info info; diskSystem->GetInfo(&info); result = copy_to_user_value(_info, info); } } status_t error = copy_to_user_value(_cookie, cookie); if (error != B_OK) result = error; return result; }
status_t _user_get_next_disk_system_info(int32 *_cookie, user_disk_system_info *_info) { if (!_cookie || !_info) return B_BAD_VALUE; int32 cookie; user_memcpy(&cookie, _cookie, sizeof(cookie)); status_t result = B_ENTRY_NOT_FOUND; KDiskDeviceManager *manager = KDiskDeviceManager::Default(); if (ManagerLocker locker = manager) { if (KDiskSystem *diskSystem = manager->NextDiskSystem(&cookie)) { user_disk_system_info info; diskSystem->GetInfo(&info); user_memcpy(_info, &info, sizeof(info)); result = B_OK; } } user_memcpy(_cookie, &cookie, sizeof(cookie)); return result; }