diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-24 03:02:43 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-24 03:02:43 +0100 |
| commit | 83d870e58457a1d335a1d9b9966a6a1887cc297b (patch) | |
| tree | 72888f88c7728c82f3f6df1f4f70591de15eab36 /dev/misc/BenchKit | |
| parent | ab37adbacf0f33845804c788b39680cd754752a8 (diff) | |
feat! breaking changes on kernel sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/misc/BenchKit')
| -rw-r--r-- | dev/misc/BenchKit/Chronometer.h | 40 | ||||
| -rw-r--r-- | dev/misc/BenchKit/HWChronometer.h | 66 |
2 files changed, 0 insertions, 106 deletions
diff --git a/dev/misc/BenchKit/Chronometer.h b/dev/misc/BenchKit/Chronometer.h deleted file mode 100644 index 8a1fa3ab..00000000 --- a/dev/misc/BenchKit/Chronometer.h +++ /dev/null @@ -1,40 +0,0 @@ -/* ======================================== - -Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - -======================================== */ - -#ifndef BENCHKIT_CHRONO_H -#define BENCHKIT_CHRONO_H - -#include <CompilerKit/CompilerKit.h> -#include <NeKit/Defines.h> - -/// @author Amlal El Mahrouss -/// @brief BenchKit Chrono contract. - -#define BENCHKIT_INTERFACE : public ::Kernel::ChronoInterface - -namespace Kernel { -class ChronoInterface; - -/// @brief a Chronometer interface used for benchmarking. -class ChronoInterface { - public: - ChronoInterface() = default; - virtual ~ChronoInterface() = default; - - NE_COPY_DEFAULT(ChronoInterface) - - virtual Void Start() = 0; - virtual Void Stop() = 0; - virtual Void Reset() = 0; - virtual UInt64 GetElapsedTime() const = 0; -}; -} // namespace Kernel - -namespace BenchKit { -using namespace Kernel; -} - -#endif // BENCHKIT_CHRONO_H diff --git a/dev/misc/BenchKit/HWChronometer.h b/dev/misc/BenchKit/HWChronometer.h deleted file mode 100644 index 331f9a7d..00000000 --- a/dev/misc/BenchKit/HWChronometer.h +++ /dev/null @@ -1,66 +0,0 @@ -/* ======================================== - -Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - -======================================== */ - -#pragma once - -#include <misc/BenchKit/Chronometer.h> - -namespace Kernel { -struct HWChronoTraits; - -template <typename ChronoTraits = HWChronoTraits> -class HWChrono; - -/// @brief BenchKit chrono logic for x64/ARM64. -struct HWChronoTraits final { - private: - STATIC UInt64 TickImpl_(void) { -#ifdef __NE_AMD64__ - UInt64 a = 0, d = 0; - - asm volatile("rdtsc" : "=a"(a), "=d"(d)); - - return (d << 32) | a; -#elif defined(__NE_ARM64__) - UInt64 result; - - asm volatile("mrs %0, cntvct_el1" : "=r"(result)); - - return result; -#else -#error !!! no backend defined !!! -#endif - } - - friend HWChrono<HWChronoTraits>; -}; - -/// @brief hardware chronometer implementation using a trait to extract the data. -template <typename ChronoTraits> -class HWChrono BENCHKIT_INTERFACE { - public: - HWChrono() = default; - virtual ~HWChrono() override = default; - - NE_COPY_DEFAULT(HWChrono) - - public: - Void Start() override { fStart = ChronoTraits::TickImpl_(); } - - Void Stop() override { fStop = ChronoTraits::TickImpl_(); } - - Void Reset() override { - fStart = 0; - fStop = 0; - } - - UInt64 GetElapsedTime() const override { return fStop - fStart; } - - private: - UInt64 fStart{}; - UInt64 fStop{}; -}; -} // namespace Kernel |
