ftwin 0.8.10
ft_system.c
Go to the documentation of this file.
1
6/*
7 * Copyright (C) 2025 François Pesce : francois.pesce (at) gmail (dot) com
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 */
21
22#include "ft_system.h"
23
24#if defined(__unix__) || defined(__unix) || defined(unix) || \
25 (defined(__APPLE__) && defined(__MACH__))
26#include <unistd.h>
27#endif
28
29#ifdef _WIN32
30#include <windows.h>
31#endif
32
33unsigned int ft_get_cpu_cores(void)
34{
35#if defined(_SC_NPROCESSORS_ONLN)
36 /* POSIX systems (Linux, macOS, BSD) */
37 long nprocs = sysconf(_SC_NPROCESSORS_ONLN);
38 if (nprocs > 0) {
39 return (unsigned int) nprocs;
40 }
41 /* Fall through to default if sysconf fails */
42#elif defined(_WIN32)
43 /* Windows */
44 SYSTEM_INFO sysinfo;
45 GetSystemInfo(&sysinfo);
46 if (sysinfo.dwNumberOfProcessors > 0) {
47 return (unsigned int) sysinfo.dwNumberOfProcessors;
48 }
49 /* Fall through to default if GetSystemInfo fails */
50#endif
51
52 /* Fallback to a reasonable default */
53 return 4;
54}
unsigned int ft_get_cpu_cores(void)
Get the number of available CPU cores on the current system.
Definition ft_system.c:33
System-related utility functions.