Skip to content

Commit 69148ae

Browse files
authored
Guard against sysconf returning zero processors
1 parent e9260f5 commit 69148ae

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

driver/others/memory.c

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -252,23 +252,23 @@ int get_num_procs(void) {
252252
ret = omp_get_num_places();
253253
if (ret >0 ) nums = ret;
254254
#endif
255-
return nums;
255+
return (nums > 0 ? nums : 2);
256256
#endif
257257

258258
#if !defined(OS_LINUX)
259-
return nums;
259+
return (nums > 0 ? nums : 2);
260260
#endif
261261

262262
#if !defined(__GLIBC_PREREQ)
263-
return nums;
263+
return (nums > 0 ? nums :2);
264264
#else
265265
#if !__GLIBC_PREREQ(2, 3)
266-
return nums;
266+
return (nums > 0 ? nums :2);
267267
#endif
268268

269269
#if !__GLIBC_PREREQ(2, 7)
270270
ret = sched_getaffinity(0,sizeof(cpuset), &cpuset);
271-
if (ret!=0) return nums;
271+
if (ret!=0) return (nums > 0 ? nums :2);
272272
n=0;
273273
#if !__GLIBC_PREREQ(2, 6)
274274
for (i=0;i<nums;i++)
@@ -277,31 +277,31 @@ int get_num_procs(void) {
277277
#else
278278
nums = CPU_COUNT(sizeof(cpuset),&cpuset);
279279
#endif
280-
return nums;
280+
return (nums > 0 ? nums :2);
281281
#else
282282
if (nums >= CPU_SETSIZE) {
283283
cpusetp = CPU_ALLOC(nums);
284284
if (cpusetp == NULL) {
285-
return nums;
285+
return (nums > 0 ? nums :2);
286286
}
287287
size = CPU_ALLOC_SIZE(nums);
288288
ret = sched_getaffinity(0,size,cpusetp);
289289
if (ret!=0) {
290290
CPU_FREE(cpusetp);
291-
return nums;
291+
return (nums > 0 ? nums :2);
292292
}
293293
ret = CPU_COUNT_S(size,cpusetp);
294294
if (ret > 0 && ret < nums) nums = ret;
295295
CPU_FREE(cpusetp);
296-
return nums;
296+
return (nums > 0 ? nums :2);
297297
} else {
298298
ret = sched_getaffinity(0,sizeof(cpuset),&cpuset);
299299
if (ret!=0) {
300-
return nums;
300+
return (nums > 0 ? nums :2);
301301
}
302302
ret = CPU_COUNT(&cpuset);
303303
if (ret > 0 && ret < nums) nums = ret;
304-
return nums;
304+
return (nums > 0 ? nums :2);
305305
}
306306
#endif
307307
#endif
@@ -1823,56 +1823,56 @@ int get_num_procs(void) {
18231823
ret = omp_get_num_places();
18241824
if (ret >0 ) nums = ret;
18251825
#endif
1826-
return nums;
1826+
return (nums > 0 ? nums :2);
18271827
#endif
18281828

18291829
#if !defined(OS_LINUX)
1830-
return nums;
1830+
return (nums > 0 ? nums :2);
18311831
#endif
18321832

18331833
#if !defined(__GLIBC_PREREQ)
1834-
return nums;
1834+
return (nums > 0 ? nums :2);
18351835
#else
18361836
#if !__GLIBC_PREREQ(2, 3)
1837-
return nums;
1837+
return (nums > 0 ? nums :2);
18381838
#endif
18391839

18401840
#if !__GLIBC_PREREQ(2, 7)
18411841
ret = sched_getaffinity(0,sizeof(cpuset), &cpuset);
1842-
if (ret!=0) return nums;
1842+
if (ret!=0) return (nums > 0 ? nums :2);
18431843
n=0;
18441844
#if !__GLIBC_PREREQ(2, 6)
1845-
for (i=0;i<nums;i++)
1845+
for (i=0;i<(nums > 0 ? nums :2);i++)
18461846
if (CPU_ISSET(i,&cpuset)) n++;
18471847
nums=n;
18481848
#else
18491849
nums = CPU_COUNT(sizeof(cpuset),&cpuset);
18501850
#endif
1851-
return nums;
1851+
return (nums > 0 ? nums :2);
18521852
#else
18531853
if (nums >= CPU_SETSIZE) {
18541854
cpusetp = CPU_ALLOC(nums);
18551855
if (cpusetp == NULL) {
1856-
return nums;
1856+
return (nums > 0 ? nums :2);
18571857
}
18581858
size = CPU_ALLOC_SIZE(nums);
18591859
ret = sched_getaffinity(0,size,cpusetp);
18601860
if (ret!=0) {
18611861
CPU_FREE(cpusetp);
1862-
return nums;
1862+
return (nums > 0 ? nums :2);
18631863
}
18641864
ret = CPU_COUNT_S(size,cpusetp);
18651865
if (ret > 0 && ret < nums) nums = ret;
18661866
CPU_FREE(cpusetp);
1867-
return nums;
1867+
return (nums > 0 ? nums :2);
18681868
} else {
18691869
ret = sched_getaffinity(0,sizeof(cpuset),&cpuset);
18701870
if (ret!=0) {
1871-
return nums;
1871+
return (nums > 0 ? nums :2);
18721872
}
18731873
ret = CPU_COUNT(&cpuset);
18741874
if (ret > 0 && ret < nums) nums = ret;
1875-
return nums;
1875+
return (nums > 0 ? nums :2);
18761876
}
18771877
#endif
18781878
#endif

0 commit comments

Comments
 (0)