diff --git a/biology/muscle/files/patch-src__myutils.cpp b/biology/muscle/files/patch-src__myutils.cpp index 68b2a4eacfed..75925719ba97 100644 --- a/biology/muscle/files/patch-src__myutils.cpp +++ b/biology/muscle/files/patch-src__myutils.cpp @@ -1,65 +1,60 @@ --- myutils.cpp.orig 2022-01-13 23:29:59 UTC +++ myutils.cpp -@@ -1050,7 +1050,62 @@ +@@ -1050,6 +1050,57 @@ double GetMemUseBytes() g_PeakMemUseBytes = Bytes; return Bytes; } +#elif defined(__FreeBSD__) + +#include +#include +#include +#include - ++ +double GetMemUseBytes() + { + static int initialized = 0; + static int mib[4]; + static size_t len; + + if (!initialized) + { + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = getpid(); + len = sizeof(struct kinfo_proc); + initialized = 1; + } + + struct kinfo_proc kp; + if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1) + return 0.0; + + // Resident set size in pages → convert to bytes + long page_size = getpagesize(); + double bytes = (double)kp.ki_rssize * page_size; + + if (bytes > g_PeakMemUseBytes) + g_PeakMemUseBytes = bytes; + + return bytes; + + } + +double GetPhysMemBytes() + { -+ #if BITS == 32 -+ unsigned int physmem32 = 0; -+ #else -+ uint64_t physmem = 0; -+ #endif ++ unsigned long physmem = 0; + + size_t len = sizeof(physmem); + + static int mib[2] = { CTL_HW, HW_PHYSMEM }; + if (sysctl(mib, 2, &physmem, &len, NULL, 0) == -1) + return 0.0; + + return (double)physmem; + + } -+ + #elif defined(__MACH__) #include - #include diff --git a/biology/muscle/files/patch-src__myutils.h b/biology/muscle/files/patch-src__myutils.h new file mode 100644 index 000000000000..d39df958137e --- /dev/null +++ b/biology/muscle/files/patch-src__myutils.h @@ -0,0 +1,11 @@ +--- myutils.h.orig 2026-08-29 19:37:51 UTC ++++ myutils.h +@@ -11,7 +11,7 @@ + #define TRACK_ALLOC 0 + #define ALLOC_TOTALS 0 + +-#if defined(__x86_64__) || defined(_M_X64) || defined(__arm64__) ++#if defined(__x86_64__) || defined(_M_X64) || defined(__arm64__) || defined(__LP64__) + #define BITS 64 + #else + #define BITS 32 diff --git a/biology/muscle/files/patch-src__timing.h b/biology/muscle/files/patch-src__timing.h new file mode 100644 index 000000000000..4d48299d0b47 --- /dev/null +++ b/biology/muscle/files/patch-src__timing.h @@ -0,0 +1,21 @@ +--- timing.h.orig 2026-08-29 19:42:39 UTC ++++ timing.h +@@ -17,14 +17,14 @@ __inline__ uint64_t GetClockTicks() + } + + #elif __GNUC__ ++#include + + typedef uint64_t TICKS; + __inline__ uint64_t GetClockTicks() + { +- uint32_t lo, hi; +- /* We cannot use "=A", since this would use %rax on x86_64 */ +- __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi)); +- return (uint64_t)hi << 32 | lo; ++ struct timespec ts; ++ clock_gettime(CLOCK_MONOTONIC, &ts); ++ return (uint64_t)ts.tv_sec * 1000000000 + ts.tv_nsec; + } + + #else