1//---------------------------------------------------------------------- 2// This software is part of the Haiku distribution and is covered 3// by the MIT License. 4//--------------------------------------------------------------------- 5 6#include <stdio.h> 7#include <string.h> 8 9#include <OS.h> 10 11#include <KDiskDevice.h> 12#include <KFileDiskDevice.h> 13#include <KDiskDeviceManager.h> 14#include <KDiskDeviceUtils.h> 15 16const char *kTestFileDevice = "/boot/home/tmp/test-file-device"; 17 18// main 19int 20main(int argc, char **argv) 21{ 22 const char *testFileDevice = kTestFileDevice; 23 24 if (argc > 1) 25 testFileDevice = argv[1]; 26 27 KDiskDeviceManager::CreateDefault(); 28 KDiskDeviceManager *manager = KDiskDeviceManager::Default(); 29 manager->InitialDeviceScan(); 30 partition_id id = manager->CreateFileDevice(testFileDevice); 31 if (id < B_OK) 32 printf("creating the file device failed: %s\n", strerror(id)); 33 34 // wait for scanning jobs to finish 35 // (that's hopefully a hack :-)) 36 for (;;) { 37 if (ManagerLocker locker = manager) { 38 if (manager->CountJobs() == 0) 39 break; 40 } 41 snooze(50000); 42 } 43 44 // print devices 45 for (int32 cookie = 0; 46 KDiskDevice *device = manager->RegisterNextDevice(&cookie); ) { 47 PartitionRegistrar _(device, true); 48 if (DeviceReadLocker locker = device) { 49 device->Dump(); 50 printf("\n"); 51 } 52 } 53 54// error = manager->DeleteFileDevice(kTestFileDevice); 55// if (error != B_OK) 56// printf("deleting the file device failed: %s\n", strerror(error)); 57 58 59 KDiskDeviceManager::DeleteDefault(); 60 return 0; 61} 62 63