Projects
openEuler:24.03:SP1:Everything:64G
numactl
_service:tar_scm:0004-fix-wrong-nodemask_sz-whe...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:0004-fix-wrong-nodemask_sz-when-CONFIG_NODES_SHIFT-is-les.patch of Package numactl
From eeb3d396ee5401114bf0d486d200dffb03f54ac5 Mon Sep 17 00:00:00 2001 From: Chunsheng Luo <luochunsheng@huawei.com> Date: Tue, 15 Nov 2022 15:21:31 +0800 Subject: [PATCH] fix wrong nodemask_sz when CONFIG_NODES_SHIFT is less than 5 Signed-off-by: buque <wuxu.wu@huawei.com> --- libnuma.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/libnuma.c b/libnuma.c index b8e5603..896e995 100644 --- a/libnuma.c +++ b/libnuma.c @@ -370,13 +370,11 @@ set_configured_nodes(void) } } -/* - * Convert the string length of an ascii hex mask to the number - * of bits represented by that mask. - */ -static int s2nbits(const char *s) +static inline int is_digit(char s) { - return strlen(s) * 32 / 9; + return (s >= '0' && s <= '9') + || (s >= 'a' && s <= 'f') + || (s >= 'A' && s <= 'F'); } /* Is string 'pre' a prefix of string 's'? */ @@ -398,6 +396,8 @@ set_nodemask_size(void) { FILE *fp; char *buf = NULL; + char *tmp_buf = NULL; + int digit_len = 0; size_t bufsize = 0; if ((fp = fopen(mask_size_file, "r")) == NULL) @@ -405,8 +405,14 @@ set_nodemask_size(void) while (getline(&buf, &bufsize, fp) > 0) { if (strprefix(buf, nodemask_prefix)) { - nodemask_sz = s2nbits(buf + strlen(nodemask_prefix)); - break; + tmp_buf = buf; + tmp_buf += strlen(nodemask_prefix); + while (*tmp_buf != '\n' && *tmp_buf != '\0') { + if (is_digit(*tmp_buf)) + digit_len++; + tmp_buf++; + } + nodemask_sz = digit_len * 4; } } free(buf); -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2