From b0b1b524f83b323a430156fa171348494170f849 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 16 Oct 2024 14:10:36 -0400 Subject: [PATCH] tests: Fix build & link of the DiskDeviceManagerTest. --- src/system/kernel/disk_device_manager/Jamfile | 1 - .../disk_device_manager/UserDataWriter.cpp | 27 ++++---- .../add-ons/kernel/kernelland_emu/Jamfile | 8 ++- .../kernelland_emu/MessagingService.cpp | 14 ++++ .../kernel/kernelland_emu/device_manager.cpp | 25 ++++++++ .../add-ons/kernel/kernelland_emu/module.cpp | 16 +++++ .../kernel/kernelland_emu/node_monitor.cpp | 21 ++++++ .../add-ons/kernel/kernelland_emu/vfs.cpp | 36 +++++++++++ src/tests/system/kernel/Jamfile | 2 +- .../DiskDeviceManagerTest.cpp | 2 + .../system/kernel/disk_device_manager/Jamfile | 64 +++++-------------- 11 files changed, 150 insertions(+), 66 deletions(-) create mode 100644 src/tests/add-ons/kernel/kernelland_emu/MessagingService.cpp create mode 100644 src/tests/add-ons/kernel/kernelland_emu/node_monitor.cpp create mode 100644 src/tests/add-ons/kernel/kernelland_emu/vfs.cpp diff --git a/src/system/kernel/disk_device_manager/Jamfile b/src/system/kernel/disk_device_manager/Jamfile index 58414707b1..51e8136a35 100644 --- a/src/system/kernel/disk_device_manager/Jamfile +++ b/src/system/kernel/disk_device_manager/Jamfile @@ -1,6 +1,5 @@ SubDir HAIKU_TOP src system kernel disk_device_manager ; -SEARCH_SOURCE += [ FDirName $(SUBDIR) jobs ] ; SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits storage disk_device ] ; # DiskDeviceTypes.cpp diff --git a/src/system/kernel/disk_device_manager/UserDataWriter.cpp b/src/system/kernel/disk_device_manager/UserDataWriter.cpp index 4b76ffd758..a9fc46d903 100644 --- a/src/system/kernel/disk_device_manager/UserDataWriter.cpp +++ b/src/system/kernel/disk_device_manager/UserDataWriter.cpp @@ -9,7 +9,7 @@ // RelocationEntryList struct UserDataWriter::RelocationEntryList : Vector {}; -// constructor + UserDataWriter::UserDataWriter() : fBuffer(NULL), fBufferSize(0), @@ -18,7 +18,7 @@ UserDataWriter::UserDataWriter() { } -// constructor + UserDataWriter::UserDataWriter(user_disk_device_data *buffer, size_t bufferSize) : fBuffer(NULL), @@ -29,13 +29,13 @@ UserDataWriter::UserDataWriter(user_disk_device_data *buffer, SetTo(buffer, bufferSize); } -// destructor + UserDataWriter::~UserDataWriter() { delete fRelocationEntries; } -// SetTo + status_t UserDataWriter::SetTo(user_disk_device_data *buffer, size_t bufferSize) { @@ -44,14 +44,14 @@ UserDataWriter::SetTo(user_disk_device_data *buffer, size_t bufferSize) fBufferSize = bufferSize; fAllocatedSize = 0; if (fBuffer && fBufferSize > 0) { - fRelocationEntries = new(nothrow) RelocationEntryList; + fRelocationEntries = new(std::nothrow) RelocationEntryList; if (!fRelocationEntries) return B_NO_MEMORY; } return B_OK; } -// Unset + void UserDataWriter::Unset() { @@ -62,7 +62,7 @@ UserDataWriter::Unset() fRelocationEntries = NULL; } -// AllocateData + void * UserDataWriter::AllocateData(size_t size, size_t align) { @@ -80,7 +80,7 @@ UserDataWriter::AllocateData(size_t size, size_t align) return result; } -// AllocatePartitionData + user_partition_data * UserDataWriter::AllocatePartitionData(size_t childCount) { @@ -90,7 +90,7 @@ UserDataWriter::AllocatePartitionData(size_t childCount) sizeof(int)); } -// AllocateDeviceData + user_disk_device_data * UserDataWriter::AllocateDeviceData(size_t childCount) { @@ -100,7 +100,7 @@ UserDataWriter::AllocateDeviceData(size_t childCount) sizeof(int)); } -// PlaceString + char * UserDataWriter::PlaceString(const char *str) { @@ -113,14 +113,14 @@ UserDataWriter::PlaceString(const char *str) return data; } -// AllocatedSize + size_t UserDataWriter::AllocatedSize() const { return fAllocatedSize; } -// AddRelocationEntry + status_t UserDataWriter::AddRelocationEntry(void *address) { @@ -131,7 +131,7 @@ UserDataWriter::AddRelocationEntry(void *address) return B_ERROR; } -// Relocate + status_t UserDataWriter::Relocate(void *address) { @@ -145,4 +145,3 @@ UserDataWriter::Relocate(void *address) } return B_OK; } - diff --git a/src/tests/add-ons/kernel/kernelland_emu/Jamfile b/src/tests/add-ons/kernel/kernelland_emu/Jamfile index 4ed5b43ed6..7fd73ccc2f 100644 --- a/src/tests/add-ons/kernel/kernelland_emu/Jamfile +++ b/src/tests/add-ons/kernel/kernelland_emu/Jamfile @@ -12,20 +12,22 @@ SharedLibrary libkernelland_emu.so : KPath.cpp lock.cpp low_resource_manager.cpp + MessagingService.cpp misc.cpp module.cpp + node_monitor.cpp slab.cpp smp.cpp team.cpp + vfs.cpp vm.cpp list.cpp + StringHash.cpp : be [ TargetLibstdc++ ] ; -AbsSymLink libkernelland_emu.so : libkernelland_emu.so - : /boot/home/config/lib : false ; - SEARCH on [ FGristFiles list.cpp + StringHash.cpp ] = [ FDirName $(HAIKU_TOP) src system kernel util ] ; diff --git a/src/tests/add-ons/kernel/kernelland_emu/MessagingService.cpp b/src/tests/add-ons/kernel/kernelland_emu/MessagingService.cpp new file mode 100644 index 0000000000..9cc6f22b34 --- /dev/null +++ b/src/tests/add-ons/kernel/kernelland_emu/MessagingService.cpp @@ -0,0 +1,14 @@ +/* + * Copyright 2024, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license. + */ + +#include + + +extern "C" status_t +send_message(const void *message, int32 messageSize, + const messaging_target *targets, int32 targetCount) +{ + return B_NOT_SUPPORTED; +} diff --git a/src/tests/add-ons/kernel/kernelland_emu/device_manager.cpp b/src/tests/add-ons/kernel/kernelland_emu/device_manager.cpp index c8c24be8d9..ec91d516ce 100644 --- a/src/tests/add-ons/kernel/kernelland_emu/device_manager.cpp +++ b/src/tests/add-ons/kernel/kernelland_emu/device_manager.cpp @@ -12,6 +12,22 @@ #include +extern "C" status_t +devfs_unpublish_file_device(const char* path) +{ + printf("ubpublish file device: path \"%s\"\n", path); + return B_OK; +} + + +extern "C" status_t +devfs_publish_file_device(const char* path, const char* filePath) +{ + printf("publish file device: path \"%s\" (file path \"%s\")\n", path, filePath); + return B_OK; +} + + extern "C" status_t devfs_unpublish_partition(const char *path) { @@ -29,3 +45,12 @@ devfs_publish_partition(const char *path, const partition_info *info) printf("publish partition: %s (device \"%s\", size %lld)\n", path, info->device, info->size); return B_OK; } + + +extern "C" status_t +devfs_rename_partition(const char* devicePath, const char* oldName, const char* newName) +{ + printf("rename partition: %s (oldName \"%s\", newName \"%s\")\n", + devicePath, oldName, newName); + return B_OK; +} diff --git a/src/tests/add-ons/kernel/kernelland_emu/module.cpp b/src/tests/add-ons/kernel/kernelland_emu/module.cpp index 7f5e27c531..aa7f17d8d6 100644 --- a/src/tests/add-ons/kernel/kernelland_emu/module.cpp +++ b/src/tests/add-ons/kernel/kernelland_emu/module.cpp @@ -16,8 +16,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -801,3 +803,17 @@ close_module_list(void *cookie) return ModuleManager::Default()->CloseModuleList( (module_name_list*)cookie); } + + +status_t +start_watching_modules(const char* prefix, NotificationListener& listener) +{ + return B_NOT_SUPPORTED; +} + + +status_t +stop_watching_modules(const char* prefix, NotificationListener& listener) +{ + return B_NOT_SUPPORTED; +} diff --git a/src/tests/add-ons/kernel/kernelland_emu/node_monitor.cpp b/src/tests/add-ons/kernel/kernelland_emu/node_monitor.cpp new file mode 100644 index 0000000000..efcc19e2f3 --- /dev/null +++ b/src/tests/add-ons/kernel/kernelland_emu/node_monitor.cpp @@ -0,0 +1,21 @@ +/* + * Copyright 2024, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license. + */ + +#include + + +status_t +remove_node_listener(dev_t device, ino_t node, NotificationListener& listener) +{ + return B_NOT_SUPPORTED; +} + + +status_t +add_node_listener(dev_t device, ino_t node, uint32 flags, + NotificationListener& listener) +{ + return B_NOT_SUPPORTED; +} diff --git a/src/tests/add-ons/kernel/kernelland_emu/vfs.cpp b/src/tests/add-ons/kernel/kernelland_emu/vfs.cpp new file mode 100644 index 0000000000..c001d8783d --- /dev/null +++ b/src/tests/add-ons/kernel/kernelland_emu/vfs.cpp @@ -0,0 +1,36 @@ +/* + * Copyright 2024, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license. + */ + +#include + + +extern "C" status_t +vfs_stat_node_ref(dev_t device, ino_t inode, struct stat *stat) +{ + return B_NOT_SUPPORTED; +} + + +extern "C" status_t +vfs_normalize_path(const char* path, char* buffer, size_t bufferSize, + bool traverseLink, bool kernel) +{ + return B_NOT_SUPPORTED; +} + + +extern "C" status_t +vfs_entry_ref_to_path(dev_t device, ino_t inode, const char *leaf, + bool kernel, char *path, size_t pathLength) +{ + return B_NOT_SUPPORTED; +} + + +extern "C" status_t +vfs_unmount(dev_t mountID, uint32 flags) +{ + return B_NOT_SUPPORTED; +} diff --git a/src/tests/system/kernel/Jamfile b/src/tests/system/kernel/Jamfile index 04a6754874..5c7c7e4303 100644 --- a/src/tests/system/kernel/Jamfile +++ b/src/tests/system/kernel/Jamfile @@ -93,7 +93,7 @@ SimpleTest sigsuspend_test : sigsuspend_test.cpp ; SubInclude HAIKU_TOP src tests system kernel cache ; SubInclude HAIKU_TOP src tests system kernel fs ; -#SubInclude HAIKU_TOP src tests system kernel disk_device_manager ; +SubInclude HAIKU_TOP src tests system kernel disk_device_manager ; SubInclude HAIKU_TOP src tests system kernel device_manager ; SubInclude HAIKU_TOP src tests system kernel file_corruption ; SubInclude HAIKU_TOP src tests system kernel scheduler ; diff --git a/src/tests/system/kernel/disk_device_manager/DiskDeviceManagerTest.cpp b/src/tests/system/kernel/disk_device_manager/DiskDeviceManagerTest.cpp index 402b6d8c78..3a1fd675c9 100644 --- a/src/tests/system/kernel/disk_device_manager/DiskDeviceManagerTest.cpp +++ b/src/tests/system/kernel/disk_device_manager/DiskDeviceManagerTest.cpp @@ -31,6 +31,7 @@ main(int argc, char **argv) if (id < B_OK) printf("creating the file device failed: %s\n", strerror(id)); +#if 0 // wait for scanning jobs to finish // (that's hopefully a hack :-)) for (;;) { @@ -40,6 +41,7 @@ main(int argc, char **argv) } snooze(50000); } +#endif // print devices for (int32 cookie = 0; diff --git a/src/tests/system/kernel/disk_device_manager/Jamfile b/src/tests/system/kernel/disk_device_manager/Jamfile index 4022b1a6dc..b6b8040956 100644 --- a/src/tests/system/kernel/disk_device_manager/Jamfile +++ b/src/tests/system/kernel/disk_device_manager/Jamfile @@ -1,36 +1,27 @@ SubDir HAIKU_TOP src tests system kernel disk_device_manager ; -SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src system kernel disk_device_manager jobs ] ; SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src system kernel disk_device_manager ] ; SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src system kernel fs ] ; -SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits storage ] ; +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits storage disk_device ] ; # DiskDeviceTypes.cpp -#UsePrivateHeaders $(DOT) ; -UsePrivateHeaders shared ; +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src system kernel events ] ; + # Notifications.cpp + +UsePrivateKernelHeaders ; UsePrivateHeaders [ FDirName kernel boot platform $(TARGET_KERNEL_PLATFORM) ] ; UsePrivateHeaders [ FDirName kernel disk_device_manager ] ; -UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH_DIR) ] ; UsePrivateHeaders [ FDirName kernel fs ] ; -UsePrivateHeaders [ FDirName kernel ] ; UsePrivateHeaders [ FDirName kernel util ] ; UsePrivateHeaders storage ; -UsePrivateHeaders kernel ; UseHeaders [ FDirName $(HAIKU_TOP) src system kernel disk_device_manager ] ; -# 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 ] ; +DEFINES += _KERNEL_MODE ; -SharedLibrary libdisk_device_manager.so : - ddm_operation_validation.cpp +SharedLibrary test_disk_device_manager.so : # ddm_userland_interface.cpp disk_device_manager.cpp KDiskDevice.cpp - KDiskDeviceJob.cpp - KDiskDeviceJobFactory.cpp - KDiskDeviceJobGenerator.cpp - KDiskDeviceJobQueue.cpp KDiskDeviceManager.cpp KFileDiskDevice.cpp KDiskSystem.cpp @@ -39,53 +30,32 @@ SharedLibrary libdisk_device_manager.so : KPartitioningSystem.cpp KPartitionListener.cpp KPartitionVisitor.cpp - KPhysicalPartition.cpp - KShadowPartition.cpp UserDataWriter.cpp + # disk device types + DiskDeviceTypes.cpp + # fs KPath.cpp - # jobs - KCreateChildJob.cpp - KDefragmentJob.cpp - KDeleteChildJob.cpp - KInitializeJob.cpp - KMoveJob.cpp - KRepairJob.cpp - KResizeJob.cpp - KScanPartitionJob.cpp - KSetParametersJob.cpp - KUninitializeJob.cpp + # notifications + Notifications.cpp - # utilities - Locker.cpp - RWLocker.cpp - - # disk device types - DiskDeviceTypes.cpp + : be libkernelland_emu.so [ TargetLibsupc++ ] ; -LinkAgainst libdisk_device_manager.so - : libkernelland_emu.so ; - -AbsSymLink libdisk_device_manager.so - : libdisk_device_manager.so : /boot/home/config/lib ; - -SimpleTest DiskDeviceManagerTest - : DiskDeviceManagerTest.cpp - : libdisk_device_manager.so be +SimpleTest DiskDeviceManagerTest : + DiskDeviceManagerTest.cpp + : test_disk_device_manager.so be ; -Depends DiskDeviceManagerTest : libkernelland_emu.so ; - # Also build all modules: Depends DiskDeviceManagerTest : userland_disk_system_modules ; # Pseudo target for disk system modules. NotFile userland_disk_system_modules ; Depends userland_disk_system_modules : - libkernelland_emu.so + libkernelland_emu.so bfs intel amiga_rdb