From: Stuart Henderson Subject: Re: kinfocenter: replace sysconf with sysctl To: Rafael Sadowski Cc: ports@openbsd.org Date: Sun, 28 Dec 2025 14:31:53 +0000 On 2025/12/28 15:02, Rafael Sadowski wrote: > On Sun Dec 28, 2025 at 01:14:16PM +0000, Stuart Henderson wrote: > > On 2025/12/28 13:55, Rafael Sadowski wrote: > > > Simple diff to replace sysconf with sysctl in > > > MemoryEntry::calculateAvailableRam() and MemoryEntry::calculateTotalRam(). > > > > why? > > > > Oops, that diff was stale. Updated version uses uvmexp for > calculateAvailableRam() and replaces sysconf with sysctl in > calculateTotalRam() - consistent with FreeBSD/NetBSD in all other KDE > parts oh, I missed that it's replacing code added by an existing patch, that makes a bit more sense than if it was upstream code. ok then :) > Rafael > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/x11/kde-plasma/kinfocenter/Makefile,v > diff -u -p -r1.10 Makefile > --- Makefile 22 Feb 2025 14:34:43 -0000 1.10 > +++ Makefile 28 Dec 2025 13:55:44 -0000 > @@ -1,5 +1,6 @@ > COMMENT = core components for the KDE Activity concept > DISTNAME = kinfocenter-${VERSION} > +REVISION = 0 > > WANTLIB += ${COMPILER_LIBCXX} GL KF6AuthCore KF6ColorScheme KF6Completion > WANTLIB += KF6ConfigCore KF6ConfigGui KF6ConfigWidgets KF6CoreAddons > Index: patches/patch-Modules_about-distro_src_MemoryEntry_cpp > =================================================================== > RCS file: /cvs/ports/x11/kde-plasma/kinfocenter/patches/patch-Modules_about-distro_src_MemoryEntry_cpp,v > diff -u -p -r1.5 patch-Modules_about-distro_src_MemoryEntry_cpp > --- patches/patch-Modules_about-distro_src_MemoryEntry_cpp 4 Jul 2025 05:47:07 -0000 1.5 > +++ patches/patch-Modules_about-distro_src_MemoryEntry_cpp 28 Dec 2025 13:55:44 -0000 > @@ -12,15 +12,34 @@ Index: kcms/about-distro/src/MemoryEntry > #include > #include > // clang-format on > -@@ -58,6 +59,11 @@ std::optional MemoryEntry::calculateTotalRa > +@@ -58,6 +59,13 @@ std::optional MemoryEntry::calculateTotalRa > } > > return totalBytes; > +#elif defined(Q_OS_OPENBSD) > -+ long phys_pages = sysconf(_SC_PHYS_PAGES); > -+ long pagesize = sysconf(_SC_PAGESIZE); > -+ if (phys_pages != -1 && pagesize != -1) > -+ return ((uint64_t)phys_pages * (uint64_t)pagesize); > ++ int64_t memSize = 0; > ++ int mib[] = {CTL_HW, HW_PHYSMEM64}; > ++ size_t sz = sizeof(memSize); > ++ if (sysctl(mib, 2, &memSize, &sz, NULL, 0) == 0) { > ++ return memSize; > ++ } > #endif > > /* > +@@ -79,6 +87,16 @@ std::optional MemoryEntry::calculateAvailab > + // manpage: "sizes are given as multiples of mem_unit bytes" > + return qlonglong(info.totalram) * info.mem_unit; > + } > ++#elif defined(Q_OS_OPENBSD) > ++ struct uvmexp uvmexp; > ++ int mib[] = {CTL_VM, VM_UVMEXP}; > ++ size_t sz = sizeof(uvmexp); > ++ if (sysctl(mib, 2, &uvmexp, &sz, NULL, 0) == 0) { > ++ int64_t pagesize = uvmexp.pagesize; > ++ int64_t available = (int64_t)(uvmexp.free + uvmexp.inactive) * pagesize; > ++ return available; > ++ } > ++ > + #elif defined(Q_OS_FREEBSD) > + /* Stuff for sysctl */ > + unsigned long memory; >