[Debian-med-packaging] Bug#1068573: libmaus2: fix error caused by sysconf function
wuruilong
wuruilong at loongson.cn
Sun Apr 7 12:41:20 BST 2024
Source: libmaus2
Severity: normal
X-Debbugs-Cc: wuruilong at loongson.cn
Dear Maintainer,
Some architectures in glibc do not define the sysconf.c file, and using the generic posix sysconf.c file to call the _SC_LEVEL1_DCACHE_LINESIZE variable returns 0 by default, which leads to failure of the test in loongarch, ia64, s390x and other architectures, the detailed error link is as follows: https://buildd.debian.org/status/fetch.php?pkg=libmaus2&arch=loong64&ver=2.0.813%2Bds-1%2Bb1&stamp=1710143471&raw=0
This patch reference lscpu code to read the data in coherency_line_size file directly can fix the above error, and it passes the test on x86 and loongarch.
wuruilong
-- System Information:
Debian Release: trixie/sid
APT prefers unreleased
APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: loong64 (loongarch64)
Kernel: Linux 5.10.0-60.96.0.126.oe2203.loongarch64 (SMP w/32 CPU threads)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: unable to detect
-------------- next part --------------
Description: <short summary of the patch>
TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.
.
libmaus2 (2.0.813+ds-1) unstable; urgency=medium
.
* New upstream version
* Standards-Version: 4.6.2 (routine-update)
* Set upstream metadata fields: Bug-Database.
* d/copyright: bump copyright year.
Author: ?tienne Mollier <emollier at debian.org>
---
The information above should follow the Patch Tagging Guidelines, please
checkout https://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:
Origin: (upstream|backport|vendor|other), (<patch-url>|commit:<commit-id>)
Bug: <upstream-bugtracker-url>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: (no|not-needed|<patch-forwarded-url>)
Applied-Upstream: <version>, (<commit-url>|commit:<commid-id>)
Reviewed-By: <name and email of someone who approved/reviewed the patch>
Last-Update: 2024-04-07
--- libmaus2-2.0.813+ds.orig/src/libmaus2/arch/CacheLineSize.cpp
+++ libmaus2-2.0.813+ds/src/libmaus2/arch/CacheLineSize.cpp
@@ -17,6 +17,7 @@
*/
#include <libmaus2/arch/CacheLineSize.hpp>
#include <stdexcept>
+#include <stdio.h>
#include <libmaus2/LibMausConfig.hpp>
@@ -39,10 +40,18 @@ std::atomic<unsigned int> libmaus2::arch
/**
* @return size of a (level 1) cache line in bytes
**/
-#if defined(LIBMAUS2_HAVE_SYSCONF) && defined(_SC_LEVEL1_DCACHE_LINESIZE)
+#if defined(__linux__)
static uint64_t getCacheLineSizeLocal()
{
- return sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+ FILE *fp = NULL;
+ fp = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r");
+ uint64_t i = 0;
+ if(fp){
+ fscanf(fp, "%d", &i);
+ fclose(fp);
+ }
+ return i;
}
#elif defined(_WIN32)
static uint64_t getCacheLineSizeLocal()
More information about the Debian-med-packaging
mailing list