From 499b29e3ea205c4887f2e2592db08e84b089299e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 11 Jun 2004 21:03:31 +0000 Subject: [PATCH] Made all necessary changes to build the DiskDeviceManager as part of the kernel. Removed KFileDiskDevice functionality for now (since it would have required more changes). Also disabled actual partition publishing/unpublishing, because this will be done differently. This change will temporarily break the DiskDeviceManagerTest build. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7914 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/disk_device_manager/Jamfile | 17 +++-------------- .../core/disk_device_manager/KDiskDevice.cpp | 3 ++- .../core/disk_device_manager/KDiskDeviceJob.cpp | 3 ++- .../KDiskDeviceJobFactory.cpp | 2 +- .../KDiskDeviceJobGenerator.cpp | 4 +++- .../disk_device_manager/KDiskDeviceJobQueue.cpp | 4 ++-- .../disk_device_manager/KDiskDeviceManager.cpp | 17 ++++++++++++++++- .../core/disk_device_manager/KDiskSystem.cpp | 4 +++- .../disk_device_manager/KFileDiskDevice.cpp | 3 ++- .../core/disk_device_manager/KPartition.cpp | 12 ++++++++++-- .../disk_device_manager/KPartitionListener.cpp | 2 ++ .../disk_device_manager/KPartitionVisitor.cpp | 1 + .../disk_device_manager/KPhysicalPartition.cpp | 10 ++++++++-- .../disk_device_manager/KShadowPartition.cpp | 4 ++-- .../core/disk_device_manager/RWLocker.cpp | 2 +- .../core/disk_device_manager/UserDataWriter.cpp | 3 +-- .../disk_device_manager/disk_device_manager.cpp | 3 ++- .../disk_device_manager/jobs/KResizeJob.cpp | 3 ++- .../jobs/KScanPartitionJob.cpp | 2 +- .../jobs/KUninitializeJob.cpp | 3 ++- 20 files changed, 66 insertions(+), 36 deletions(-) diff --git a/src/kernel/core/disk_device_manager/Jamfile b/src/kernel/core/disk_device_manager/Jamfile index fe0c15d5c2..2d3ecfe068 100644 --- a/src/kernel/core/disk_device_manager/Jamfile +++ b/src/kernel/core/disk_device_manager/Jamfile @@ -7,14 +7,11 @@ SEARCH_SOURCE += [ FDirName $(OBOS_TOP) src kits storage ] ; UsePrivateHeaders [ FDirName kernel boot platform $(OBOS_BOOT_PLATFORM) ] ; UsePrivateHeaders [ FDirName kernel disk_device_manager ] ; UsePrivateHeaders [ FDirName kernel util ] ; +UsePrivateHeaders [ FDirName kernel ] ; UsePrivateHeaders shared ; UsePrivateHeaders storage ; -# As long as we compile for R5 userland, we define the following macros. -SubDirCcFlags [ FDefines USER R5_MEMORY_LAYOUT ] ; -SubDirC++Flags [ FDefines USER R5_MEMORY_LAYOUT ] ; - -SharedLibrary disk_device_manager : +KernelStaticLibrary libdisk_device_manager : ddm_operation_validation.cpp ddm_userland_interface.cpp disk_device_manager.cpp @@ -24,7 +21,7 @@ SharedLibrary disk_device_manager : KDiskDeviceJobGenerator.cpp KDiskDeviceJobQueue.cpp KDiskDeviceManager.cpp - KFileDiskDevice.cpp +# KFileDiskDevice.cpp KDiskSystem.cpp KFileSystem.cpp KPartition.cpp @@ -55,14 +52,6 @@ SharedLibrary disk_device_manager : DiskDeviceTypes.cpp ; -LinkSharedOSLibs libdisk_device_manager.so - : libkernelland_emu.so ; - -# Hack to enable ddm_userland_interface.cpp to include vm.h but not make -# kernel/stdio.h shadow the real stdio.h -ObjectHdrs [ FGristFiles ddm_userland_interface$(SUFOBJ) ] - : [ PrivateHeaders kernel [ FDirName kernel arch $(OBOS_ARCH) ] ] ; - # KFileDiskDevice.cpp needs the virtualdrive.h Header. Add it here to not # contaminate the include paths for the other files. ObjectHdrs [ FGristFiles KFileDiskDevice$(SUFOBJ) ] diff --git a/src/kernel/core/disk_device_manager/KDiskDevice.cpp b/src/kernel/core/disk_device_manager/KDiskDevice.cpp index e1e62aad71..ab447b80d7 100644 --- a/src/kernel/core/disk_device_manager/KDiskDevice.cpp +++ b/src/kernel/core/disk_device_manager/KDiskDevice.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include "ddm_userland_interface.h" @@ -16,7 +17,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KDiskDevice::KDiskDevice(partition_id id) diff --git a/src/kernel/core/disk_device_manager/KDiskDeviceJob.cpp b/src/kernel/core/disk_device_manager/KDiskDeviceJob.cpp index 07b0c676b3..b28fb4f15c 100644 --- a/src/kernel/core/disk_device_manager/KDiskDeviceJob.cpp +++ b/src/kernel/core/disk_device_manager/KDiskDeviceJob.cpp @@ -4,13 +4,14 @@ #include "ddm_userland_interface.h" +#include #include #include // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KDiskDeviceJob::KDiskDeviceJob(uint32 type, partition_id partitionID, diff --git a/src/kernel/core/disk_device_manager/KDiskDeviceJobFactory.cpp b/src/kernel/core/disk_device_manager/KDiskDeviceJobFactory.cpp index eb22ea9b84..40bb76cf15 100644 --- a/src/kernel/core/disk_device_manager/KDiskDeviceJobFactory.cpp +++ b/src/kernel/core/disk_device_manager/KDiskDeviceJobFactory.cpp @@ -1,6 +1,6 @@ // KDiskDeviceJobFactory.cpp -#include +#include #include "KDiskDeviceJob.h" #include "KDiskDeviceJobFactory.h" diff --git a/src/kernel/core/disk_device_manager/KDiskDeviceJobGenerator.cpp b/src/kernel/core/disk_device_manager/KDiskDeviceJobGenerator.cpp index fa83dd64c5..d233070b90 100644 --- a/src/kernel/core/disk_device_manager/KDiskDeviceJobGenerator.cpp +++ b/src/kernel/core/disk_device_manager/KDiskDeviceJobGenerator.cpp @@ -453,7 +453,9 @@ KDiskDeviceJobGenerator::_GenerateRemainingJobs(KShadowPartition *parent, } // recurse for (int32 i = 0; KPartition *_child = partition->ChildAt(i); i++) { - KShadowPartition *child = dynamic_cast(_child); +// ToDo: was: +// KShadowPartition *child = dynamic_cast(_child); + KShadowPartition *child = static_cast(_child); if (!child) return B_BAD_VALUE; status_t error = _GenerateRemainingJobs(partition, child); diff --git a/src/kernel/core/disk_device_manager/KDiskDeviceJobQueue.cpp b/src/kernel/core/disk_device_manager/KDiskDeviceJobQueue.cpp index 487364f4b5..313d4f6e29 100644 --- a/src/kernel/core/disk_device_manager/KDiskDeviceJobQueue.cpp +++ b/src/kernel/core/disk_device_manager/KDiskDeviceJobQueue.cpp @@ -1,12 +1,12 @@ // KDiskDeviceJobQueue.cpp -#include #include #include #include #include +#include #include "KDiskDevice.h" #include "KDiskDeviceJob.h" @@ -17,7 +17,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf using namespace std; diff --git a/src/kernel/core/disk_device_manager/KDiskDeviceManager.cpp b/src/kernel/core/disk_device_manager/KDiskDeviceManager.cpp index db785265b2..85a03e7b61 100644 --- a/src/kernel/core/disk_device_manager/KDiskDeviceManager.cpp +++ b/src/kernel/core/disk_device_manager/KDiskDeviceManager.cpp @@ -1,5 +1,8 @@ // KDiskDeviceManager.cpp +#include +#include + #include #include #include @@ -28,7 +31,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // directories for partitioning and file system modules static const char *kPartitioningSystemPrefix = "partitioning_systems"; @@ -305,6 +308,8 @@ KDiskDeviceManager::FindPartition(partition_id id, bool noShadow) KFileDiskDevice * KDiskDeviceManager::FindFileDevice(const char *filePath) { + // ToDo: this solution makes use of dynamic_cast! +#if 0 for (int32 cookie = 0; KDiskDevice *device = NextDevice(&cookie); ) { KFileDiskDevice *fileDevice = dynamic_cast(device); if (fileDevice && fileDevice->FilePath() @@ -312,6 +317,7 @@ KDiskDeviceManager::FindFileDevice(const char *filePath) return fileDevice; } } +#endif return NULL; } @@ -487,6 +493,9 @@ KDiskDeviceManager::WriteLockPartition(partition_id id) partition_id KDiskDeviceManager::CreateFileDevice(const char *filePath) { +// ToDo! + return B_ERROR; +#if 0 if (!filePath) return B_BAD_VALUE; status_t error = B_ERROR; @@ -517,12 +526,14 @@ KDiskDeviceManager::CreateFileDevice(const char *filePath) delete device; } return error; +#endif } // DeleteFileDevice status_t KDiskDeviceManager::DeleteFileDevice(const char *filePath) { +#if 0 if (KFileDiskDevice *device = RegisterFileDevice(filePath)) { PartitionRegistrar _(device, true); if (DeviceWriteLocker locker = device) { @@ -530,6 +541,7 @@ KDiskDeviceManager::DeleteFileDevice(const char *filePath) return B_OK; } } +#endif return B_ERROR; } @@ -537,6 +549,8 @@ KDiskDeviceManager::DeleteFileDevice(const char *filePath) status_t KDiskDeviceManager::DeleteFileDevice(partition_id id) { + // ToDo: there is no dynamic_cast in the kernel! +#if 0 if (KDiskDevice *device = RegisterDevice(id)) { PartitionRegistrar _(device, true); if (!dynamic_cast(device) || id != device->ID()) @@ -546,6 +560,7 @@ KDiskDeviceManager::DeleteFileDevice(partition_id id) return B_OK; } } +#endif return B_ERROR; } diff --git a/src/kernel/core/disk_device_manager/KDiskSystem.cpp b/src/kernel/core/disk_device_manager/KDiskSystem.cpp index 66c5c27406..cffaf6b8fe 100644 --- a/src/kernel/core/disk_device_manager/KDiskSystem.cpp +++ b/src/kernel/core/disk_device_manager/KDiskSystem.cpp @@ -3,6 +3,8 @@ #include #include +#include + #include "ddm_userland_interface.h" #include "KDiskDeviceManager.h" #include "KDiskDeviceUtils.h" @@ -11,7 +13,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KDiskSystem::KDiskSystem(const char *name) diff --git a/src/kernel/core/disk_device_manager/KFileDiskDevice.cpp b/src/kernel/core/disk_device_manager/KFileDiskDevice.cpp index 86ef5c03e7..48338a5d6b 100644 --- a/src/kernel/core/disk_device_manager/KFileDiskDevice.cpp +++ b/src/kernel/core/disk_device_manager/KFileDiskDevice.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -15,7 +16,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf static const char *kFileDevicesDir = "/dev/disk/virtual/files"; diff --git a/src/kernel/core/disk_device_manager/KPartition.cpp b/src/kernel/core/disk_device_manager/KPartition.cpp index 1df0487fe8..298311594a 100644 --- a/src/kernel/core/disk_device_manager/KPartition.cpp +++ b/src/kernel/core/disk_device_manager/KPartition.cpp @@ -2,13 +2,14 @@ #include #include -#include #include #include #include +#include #include #include +#include #include #include @@ -27,7 +28,7 @@ using namespace std; // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // ListenerSet struct KPartition::ListenerSet : VectorSet {}; @@ -163,6 +164,8 @@ status_t KPartition::PublishDevice() { // prepare a partition_info + // ToDo! +#if 0 partition_info info; info.offset = Offset(); info.size = Size(); @@ -187,12 +190,16 @@ KPartition::PublishDevice() error = errno; close(fd); return error; +#endif + return B_ERROR; } // UnpublishDevice status_t KPartition::UnpublishDevice() { + return B_OK; +#if 0 // get the entry path char path[B_PATH_NAME_LENGTH]; status_t error = GetPath(path); @@ -202,6 +209,7 @@ KPartition::UnpublishDevice() if (remove(path) < 0) return errno; return B_OK; +#endif } // SetBusy diff --git a/src/kernel/core/disk_device_manager/KPartitionListener.cpp b/src/kernel/core/disk_device_manager/KPartitionListener.cpp index 0f7ba378d3..78a109d5aa 100644 --- a/src/kernel/core/disk_device_manager/KPartitionListener.cpp +++ b/src/kernel/core/disk_device_manager/KPartitionListener.cpp @@ -1,6 +1,8 @@ // KPartitionListener.cpp #include +#include + // constructor KPartitionListener::KPartitionListener() diff --git a/src/kernel/core/disk_device_manager/KPartitionVisitor.cpp b/src/kernel/core/disk_device_manager/KPartitionVisitor.cpp index 6c59540608..2edd12b89e 100644 --- a/src/kernel/core/disk_device_manager/KPartitionVisitor.cpp +++ b/src/kernel/core/disk_device_manager/KPartitionVisitor.cpp @@ -1,6 +1,7 @@ // KPartitionVisitor.cpp #include "KPartitionVisitor.h" +#include // constructor KPartitionVisitor::KPartitionVisitor() diff --git a/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp b/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp index 50740ae045..75233ace8f 100644 --- a/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp +++ b/src/kernel/core/disk_device_manager/KPhysicalPartition.cpp @@ -2,13 +2,13 @@ #include #include -#include #include #include #include #include #include +#include #include "KDiskDevice.h" #include "KDiskDeviceManager.h" @@ -21,7 +21,7 @@ using namespace std; // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KPhysicalPartition::KPhysicalPartition(partition_id id) @@ -70,6 +70,9 @@ KPhysicalPartition::Open(int flags, int *fd) status_t KPhysicalPartition::PublishDevice() { +// ToDo! + return B_ERROR; +#if 0 // prepare a partition_info partition_info info; info.offset = Offset(); @@ -95,12 +98,14 @@ KPhysicalPartition::PublishDevice() error = errno; close(fd); return error; +#endif } // UnpublishDevice status_t KPhysicalPartition::UnpublishDevice() { +#if 0 // get the entry path char path[B_PATH_NAME_LENGTH]; status_t error = GetPath(path); @@ -109,6 +114,7 @@ KPhysicalPartition::UnpublishDevice() // remove the entry if (remove(path) < 0) return errno; +#endif return B_OK; } diff --git a/src/kernel/core/disk_device_manager/KShadowPartition.cpp b/src/kernel/core/disk_device_manager/KShadowPartition.cpp index 312715576c..797da3d397 100644 --- a/src/kernel/core/disk_device_manager/KShadowPartition.cpp +++ b/src/kernel/core/disk_device_manager/KShadowPartition.cpp @@ -2,13 +2,13 @@ #include #include -#include #include #include #include #include #include +#include #include "ddm_userland_interface.h" #include "KDiskDevice.h" @@ -21,7 +21,7 @@ using namespace std; // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KShadowPartition::KShadowPartition(KPhysicalPartition *partition) diff --git a/src/kernel/core/disk_device_manager/RWLocker.cpp b/src/kernel/core/disk_device_manager/RWLocker.cpp index 3517e4387c..e5a1108734 100644 --- a/src/kernel/core/disk_device_manager/RWLocker.cpp +++ b/src/kernel/core/disk_device_manager/RWLocker.cpp @@ -1,6 +1,6 @@ // RWLocker.cpp -#include +#include #include "RWLocker.h" diff --git a/src/kernel/core/disk_device_manager/UserDataWriter.cpp b/src/kernel/core/disk_device_manager/UserDataWriter.cpp index 9053d63adf..7e8d4f700e 100644 --- a/src/kernel/core/disk_device_manager/UserDataWriter.cpp +++ b/src/kernel/core/disk_device_manager/UserDataWriter.cpp @@ -1,7 +1,6 @@ // UserDataWriter.cpp -#include - +#include #include #include diff --git a/src/kernel/core/disk_device_manager/disk_device_manager.cpp b/src/kernel/core/disk_device_manager/disk_device_manager.cpp index f2b3441214..1f8dc57d51 100644 --- a/src/kernel/core/disk_device_manager/disk_device_manager.cpp +++ b/src/kernel/core/disk_device_manager/disk_device_manager.cpp @@ -1,5 +1,6 @@ // disk_device_manager.cpp +#include #include #include "disk_device_manager.h" @@ -14,7 +15,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // write_lock_disk_device disk_device_data * diff --git a/src/kernel/core/disk_device_manager/jobs/KResizeJob.cpp b/src/kernel/core/disk_device_manager/jobs/KResizeJob.cpp index f537992b83..48e8fce06d 100644 --- a/src/kernel/core/disk_device_manager/jobs/KResizeJob.cpp +++ b/src/kernel/core/disk_device_manager/jobs/KResizeJob.cpp @@ -2,6 +2,7 @@ #include +#include #include #include #include @@ -16,7 +17,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KResizeJob::KResizeJob(partition_id parentID, partition_id partitionID, diff --git a/src/kernel/core/disk_device_manager/jobs/KScanPartitionJob.cpp b/src/kernel/core/disk_device_manager/jobs/KScanPartitionJob.cpp index 9a23d59124..36360335a7 100644 --- a/src/kernel/core/disk_device_manager/jobs/KScanPartitionJob.cpp +++ b/src/kernel/core/disk_device_manager/jobs/KScanPartitionJob.cpp @@ -13,7 +13,7 @@ // debugging #define DBG(x) //#define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KScanPartitionJob::KScanPartitionJob(partition_id partitionID) diff --git a/src/kernel/core/disk_device_manager/jobs/KUninitializeJob.cpp b/src/kernel/core/disk_device_manager/jobs/KUninitializeJob.cpp index 2dd99cd207..d4f5eed0bf 100644 --- a/src/kernel/core/disk_device_manager/jobs/KUninitializeJob.cpp +++ b/src/kernel/core/disk_device_manager/jobs/KUninitializeJob.cpp @@ -2,6 +2,7 @@ #include +#include #include #include #include @@ -14,7 +15,7 @@ // debugging //#define DBG(x) #define DBG(x) x -#define OUT printf +#define OUT dprintf // constructor KUninitializeJob::KUninitializeJob(partition_id partitionID)