From ec11d85709965521ba7151fa18d0f71ea9c2eae2 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Tue, 25 Mar 2025 20:07:48 +0100 Subject: cli(diutil): moved CommandLine.cc to src/ ahci(generic): set err_global_get() when probing or command fails, use HbaMemRef when refering to HbaMem* Signed-off-by: Amlal El Mahrouss --- public/tools/diutil/src/CommandLine.cc | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 public/tools/diutil/src/CommandLine.cc (limited to 'public/tools/diutil/src/CommandLine.cc') diff --git a/public/tools/diutil/src/CommandLine.cc b/public/tools/diutil/src/CommandLine.cc new file mode 100644 index 00000000..c0388611 --- /dev/null +++ b/public/tools/diutil/src/CommandLine.cc @@ -0,0 +1,68 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal EL Mahrouss, all rights reserved. + + FILE: CommandLine.cc + PURPOSE: DIUTIL CLI. + + ------------------------------------------- */ + +#include + +static const Char kDiskName[kDIDiskNameLen] = "Disk"; +static SInt32 kDiskSectorSz = 512; +static const SInt32 kDiskBlockCnt = 1; +static SizeT kDiskSz = gib_cast(4); +static const Char kOutDisk[kDIOutNameLen] = "disk.eimg"; + +/// @brief Filesystem tool entrypoint. +int main(int argc, char** argv) +{ + for (SizeT arg = 0; arg < argc; ++arg) + { + const Char* arg_s = argv[arg]; + + if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-output-name", MmStrLen("--disk-output-name") == 0)) + { + if ((arg + 1) < argc) + { + MmCopyMemory((VoidPtr)kOutDisk, argv[arg + 1], kDIDiskNameLen); + } + } + else if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-output-size", MmStrLen("--disk-output-size") == 0)) + { + if ((arg + 1) < argc) + { + kDiskSz = MathToNumber(argv[arg + 1], nullptr, 10); + } + } + else if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-sector-size", MmStrLen("--disk-sector-size") == 0)) + { + if ((arg + 1) < argc) + { + kDiskSectorSz = MathToNumber(argv[arg + 1], nullptr, 10); + } + } + else if (MmCmpMemory((VoidPtr)arg_s, (VoidPtr) "--disk-part-name", MmStrLen("--disk-part-name") == 0)) + { + if ((arg + 1) < argc) + { + MmCopyMemory((VoidPtr)kDiskName, argv[arg + 1], kDIDiskNameLen); + } + } + } + + // create disk image. + + DI_DISK_IMAGE img{}; + + img.disk_sz = kDiskSz; + img.sector_sz = kDiskSectorSz; + img.block_cnt = 0; + + MmCopyMemory((VoidPtr)img.disk_name, (VoidPtr)kDiskName, kDIDiskNameLen); + MmCopyMemory((VoidPtr)img.out_name, (VoidPtr)kOutDisk, kDIDiskNameLen); + + // format disk image. + return DIFormatPartitionEPM(img); +} \ No newline at end of file -- cgit v1.2.3