From 896f7fdb75a5ffc4a0aa3c94076b6b266bc9fbf4 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 3 Dec 2024 12:31:20 -0500 Subject: [PATCH] kernel/disk_device_manager: Cleanup code style, fix some minor TODOs. --- .../kernel/disk_device_manager/KDiskDevice.h | 11 ++----- .../disk_device_manager/KFileDiskDevice.h | 17 +++++++--- .../kernel/disk_device_manager/KPartition.h | 8 +++++ .../disk_device_manager/KDiskDevice.cpp | 33 +++---------------- .../disk_device_manager/KFileDiskDevice.cpp | 28 +++++----------- 5 files changed, 35 insertions(+), 62 deletions(-) diff --git a/headers/private/kernel/disk_device_manager/KDiskDevice.h b/headers/private/kernel/disk_device_manager/KDiskDevice.h index 799e7f038d..3fde68441b 100644 --- a/headers/private/kernel/disk_device_manager/KDiskDevice.h +++ b/headers/private/kernel/disk_device_manager/KDiskDevice.h @@ -27,8 +27,6 @@ public: status_t SetTo(const char *path); void Unset(); - virtual status_t InitCheck() const; - // TODO: probably superfluous // A read lock owner can be sure that the device (incl. all of its // partitions won't be changed). @@ -60,16 +58,11 @@ public: void UpdateGeometry(); - status_t SetPath(const char *path); - // TODO: Remove this method or make it private. Once initialized the - // path must not be changed. const char *Path() const; virtual status_t GetFileName(char* buffer, size_t size) const; virtual status_t GetPath(KPath *path) const; - // File descriptor: Set only from a kernel thread, valid only for - // kernel threads. - void SetFD(int fd); + // File descriptor: valid only for kernel threads. int FD() const; // access to C style device data @@ -101,6 +94,8 @@ private: } // namespace DiskDevice } // namespace BPrivate + using BPrivate::DiskDevice::KDiskDevice; + #endif // _K_DISK_DEVICE_H diff --git a/headers/private/kernel/disk_device_manager/KFileDiskDevice.h b/headers/private/kernel/disk_device_manager/KFileDiskDevice.h index 4490dbaa93..1eb8a61586 100644 --- a/headers/private/kernel/disk_device_manager/KFileDiskDevice.h +++ b/headers/private/kernel/disk_device_manager/KFileDiskDevice.h @@ -1,26 +1,30 @@ -// KFileDiskDevice.h - +/* + * Copyright 2003-2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Distributed under the terms of the MIT License. + */ #ifndef _K_FILE_DISK_DEVICE_H #define _K_FILE_DISK_DEVICE_H + #include #include "KDiskDevice.h" + namespace BPrivate { namespace DiskDevice { + class KPath; -class KFileDiskDevice : public KDiskDevice { + +class KFileDiskDevice final : public KDiskDevice { public: KFileDiskDevice(partition_id id = -1); virtual ~KFileDiskDevice(); status_t SetTo(const char *filePath, const char *devicePath = NULL); void Unset(); - virtual status_t InitCheck() const; - // TODO: probably superfluous const char *FilePath() const; @@ -40,9 +44,12 @@ private: char *fFilePath; }; + } // namespace DiskDevice } // namespace BPrivate + using BPrivate::DiskDevice::KFileDiskDevice; + #endif // _K_FILE_DISK_DEVICE_H diff --git a/headers/private/kernel/disk_device_manager/KPartition.h b/headers/private/kernel/disk_device_manager/KPartition.h index fe7aec1f7a..fc12eb4a5b 100644 --- a/headers/private/kernel/disk_device_manager/KPartition.h +++ b/headers/private/kernel/disk_device_manager/KPartition.h @@ -8,14 +8,18 @@ #ifndef _K_DISK_DEVICE_PARTITION_H #define _K_DISK_DEVICE_PARTITION_H + #include #include + struct user_partition_data; + namespace BPrivate { namespace DiskDevice { + class UserDataWriter; class KDiskDevice; @@ -25,6 +29,7 @@ class KPartitionVisitor; class KPath; class KPhysicalPartition; + //! \brief Class representing a single partition. class KPartition { public: @@ -235,9 +240,12 @@ protected: static int32 sNextID; }; + } // namespace DiskDevice } // namespace BPrivate + using BPrivate::DiskDevice::KPartition; + #endif // _K_DISK_DEVICE_PARTITION_H diff --git a/src/system/kernel/disk_device_manager/KDiskDevice.cpp b/src/system/kernel/disk_device_manager/KDiskDevice.cpp index a2c71cb983..4e1aca2906 100644 --- a/src/system/kernel/disk_device_manager/KDiskDevice.cpp +++ b/src/system/kernel/disk_device_manager/KDiskDevice.cpp @@ -51,17 +51,14 @@ KDiskDevice::~KDiskDevice() status_t KDiskDevice::SetTo(const char* path) { - // check initialization and parameter - status_t error = InitCheck(); - if (error != B_OK) - return error; if (!path) return B_BAD_VALUE; Unset(); - // set the path - error = set_string(fDeviceData.path, path); + + status_t error = set_string(fDeviceData.path, path); if (error != B_OK) return error; + // open the device fFD = open(path, O_RDONLY); if (fFD < 0) @@ -72,6 +69,7 @@ KDiskDevice::SetTo(const char* path) return error; if (fMediaStatus == B_DEV_MEDIA_CHANGED) fMediaStatus = B_OK; + // get device geometry if (fMediaStatus == B_OK) { error = GetGeometry(&fDeviceData.geometry); @@ -82,9 +80,7 @@ KDiskDevice::SetTo(const char* path) _ResetGeometry(); } - // set device flags _UpdateDeviceFlags(); - // update partition data _InitPartitionData(); return B_OK; } @@ -108,13 +104,6 @@ KDiskDevice::Unset() } -status_t -KDiskDevice::InitCheck() const -{ - return B_OK; -} - - bool KDiskDevice::ReadLock() { @@ -257,13 +246,6 @@ KDiskDevice::UpdateGeometry() } -status_t -KDiskDevice::SetPath(const char* path) -{ - return set_string(fDeviceData.path, path); -} - - const char* KDiskDevice::Path() const { @@ -291,13 +273,6 @@ KDiskDevice::GetPath(KPath* path) const } -void -KDiskDevice::SetFD(int fd) -{ - fFD = fd; -} - - int KDiskDevice::FD() const { diff --git a/src/system/kernel/disk_device_manager/KFileDiskDevice.cpp b/src/system/kernel/disk_device_manager/KFileDiskDevice.cpp index db025dfa34..c294d8d721 100644 --- a/src/system/kernel/disk_device_manager/KFileDiskDevice.cpp +++ b/src/system/kernel/disk_device_manager/KFileDiskDevice.cpp @@ -40,11 +40,11 @@ KFileDiskDevice::~KFileDiskDevice() status_t KFileDiskDevice::SetTo(const char* filePath, const char* devicePath) { - // check params if (!filePath || strlen(filePath) > B_PATH_NAME_LENGTH || (devicePath && strlen(devicePath) > B_PATH_NAME_LENGTH)) { return B_BAD_VALUE; } + // normalize the file path // (should actually not be necessary, since this method is only invoked // by the DDM, which has already normalized the path) @@ -52,35 +52,32 @@ KFileDiskDevice::SetTo(const char* filePath, const char* devicePath) status_t error = tmpFilePath.SetTo(filePath, KPath::NORMALIZE); if (error != B_OK) return error; + // check the file struct stat st; if (stat(filePath, &st) != 0) return errno; if (!S_ISREG(st.st_mode)) return B_BAD_VALUE; + // create the device, if requested KPath tmpDevicePath; if (devicePath == NULL) { // no device path: we shall create a new device entry if (tmpDevicePath.InitCheck() != B_OK) return tmpDevicePath.InitCheck(); -// TODO: Cleanup. The directory creation is done automatically by the devfs. -// // make the file devices dir -// if (mkdir(kFileDevicesDir, 0777) != 0) { -// if (errno != B_FILE_EXISTS) -// return errno; -// } + // make the directory status_t error = _GetDirectoryPath(ID(), &tmpDevicePath); if (error != B_OK) return error; -// if (mkdir(tmpDevicePath.Path(), 0777) != 0) -// return errno; + // get the device path name error = tmpDevicePath.Append("raw"); if (error != B_OK) return error; devicePath = tmpDevicePath.Path(); + // register the file as virtual disk device error = _RegisterDevice(filePath, devicePath); if (error != B_OK) @@ -94,8 +91,7 @@ KFileDiskDevice::SetTo(const char* filePath, const char* devicePath) if (error != B_OK) return error; - // reset the B_DISK_DEVICE_IS_FILE flag -- KDiskDevice::SetTo() has cleared - // it + // reset the B_DISK_DEVICE_IS_FILE flag -- KDiskDevice::SetTo() has cleared it SetDeviceFlags(DeviceFlags() | B_DISK_DEVICE_IS_FILE); return B_OK; @@ -113,19 +109,12 @@ KFileDiskDevice::Unset() // if (_GetDirectoryPath(ID(), &dirPath) == B_OK) // rmdir(dirPath.Path()); } - // free file path + free(fFilePath); fFilePath = NULL; } -status_t -KFileDiskDevice::InitCheck() const -{ - return KDiskDevice::InitCheck(); -} - - const char* KFileDiskDevice::FilePath() const { @@ -211,4 +200,3 @@ KFileDiskDevice::_GetDirectoryPath(partition_id id, KPath* path) } return error; } -