Portál AbcLinuxu, 30. dubna 2025 11:08
zypper ar -f http://download.opensuse.org/source/distribution/leap/$releasever/repo/oss/ repo-source zypper ref zypper si ksysguard5 cp ksysguard5.spec /usr/src/packages/SPECS/ cp CPUINFOBUFSIZE.patch /usr/src/packages/SOURCES/ rpmbuild -ba /usr/src/packages/SPECS/ksysguard5.spec rpm -Uhv --force /usr/src/packages/RPMS/x86_64ksysguard5-5.12.8-lp151.1.1.pf.x86_64.rpm systemctl restart ksysguardd.serviceCPUINFOBUFSIZE.patch
diff -Naur ksysguard-5.12.8.orig/ksysguardd/Linux/cpuinfo.c ksysguard-5.12.8/ksysguardd/Linux/cpuinfo.c --- ksysguard-5.12.8.orig/ksysguardd/Linux/cpuinfo.c 2019-03-05 13:20:46.000000000 +0100 +++ ksysguard-5.12.8/ksysguardd/Linux/cpuinfo.c 2020-01-30 10:53:59.604577796 +0100 @@ -40,7 +40,7 @@ static int HighNumCores = 0; /* Highest # of cores ever seen */ static float* Clocks = 0; /* Array with one entry per core */ -#define CPUINFOBUFSIZE (32 * 1024) +#define CPUINFOBUFSIZE (64 * 1024) static char CpuInfoBuf[ CPUINFOBUFSIZE ]; static int Dirty = 0; static struct SensorModul *CpuInfoSM;V ksysguard5.spec je nutno přidat řádek odkazující na CPUINFOBUFSIZE.patch
Source: https://download.kde.org/stable/plasma/%{version}/ksysguard-%{version}.tar.xz #Source: ksysguard-5.12.8.tar.gz Source1: ksysguardd.service # PATCH-FIX-OPENSUSE 0001-Use-run-for-ksysguardd-s-pid-file.patch Patch0: 0001-Use-run-for-ksysguardd-s-pid-file.patch Patch1: CPUINFOBUFSIZE.patch BuildRequires: extra-cmake-modules >= 1.5.0 BuildRequires: kf5-filesystem BuildRequires: libsensors4-devel BuildRequires: systemd-rpm-macros BuildRequires: xz BuildRequires: cmake(KF5Config) BuildRequires: cmake(KF5CoreAddons) BuildRequires: cmake(KF5I18n) BuildRequires: cmake(KF5IconThemes) BuildRequires: cmake(KF5ItemViews) BuildRequires: cmake(KF5KDELibs4Support) BuildRequires: cmake(KF5NewStuff) BuildRequires: cmake(KF5SysGuard) >= %{_plasma5_version} BuildRequires: cmake(Qt5Core) >= 5.4.0 BuildRequires: cmake(Qt5WebKitWidgets) >= 5.4.0 BuildRequires: cmake(Qt5Widgets) >= 5.4.0 Requires: libksysguard5-helper
Tiskni
Sdílej:
Pokud to měl být návod, jak si udělat upravený balíček pro openSUSE, pak bych spíš doporučil
osc checkout openSUSE:Leap:15.2:ksysguard5 # upravit osc build
nebo to rovnou udělat v OBS (a pak už je submit request otázkou jednoho příkazu navíc). Distribuční balíčky vesměs moc nepočítají s tím, že by někdo chtěl používat přímo rpmbuild, takže můžete narazit na různé záhadné problémy.
Ten první příkaz měl být
osc checkout openSUSE:Leap:15.1:Update ksysguard5
/proc/cpuinfo
, kde něco takového nemá šanci fungovat. Správné řešení je nesnažit se odhadnout velikost a načíst celý soubor najednou, ale zpracovávat ho postupně.
mmap()
, nemusím do detailu vysvětlovat, proč na procfs nepůjde použít.
proc_mmap
celkem v jádře existuje. Já tam vidím celé čtyři kusy - z toho tři jsou věci, které mají k něčemu jako /proc/cpuinfo
zatraceně daleko a jeden navíc existuje jen na powerpc.
linux-2.6$ git describe HEAD
next-20200316
linux-2.6$ git grep '[[:space:]]\.mmap[[:space:]]*=' | wc -l
516
Cely ten proc_* je wrapper okolo genericke implementace virtualniho FS v Linuxu, nad kterou je postaveny i sysfs, debugfs, configfs atd.
To jste si ale vymyslel úplně jinou otázku, než na jakou jsem se ptal.
Zkuste se nad tím trochu zamyslet. Ten soubor vzniká on demand a dopředu nezjistíte ani jeho velikost (dostanete nulu). Jak ho chcete mmapovat? Co tomu mmap()
předáte jako velikost?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.