LCOV - code coverage report
Current view: top level - src - ft_system.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 80.0 % 5 4
Test Date: 2025-10-15 21:43:52 Functions: 100.0 % 1 1

            Line data    Source code
       1              : /**
       2              :  * @file ft_system.c
       3              :  * @brief Implementation of system-related utility functions.
       4              :  * @ingroup Utilities
       5              :  */
       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              : 
      33           18 : unsigned int ft_get_cpu_cores(void)
      34              : {
      35              : #if defined(_SC_NPROCESSORS_ONLN)
      36              :     /* POSIX systems (Linux, macOS, BSD) */
      37           18 :     long nprocs = sysconf(_SC_NPROCESSORS_ONLN);
      38           18 :     if (nprocs > 0) {
      39           18 :         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            0 :     return 4;
      54              : }
        

Generated by: LCOV version 2.0-1