diff --git a/base_c/src/core_set.c b/base_c/src/core_set.c index d2e2e2e..81e419a 100644 --- a/base_c/src/core_set.c +++ b/base_c/src/core_set.c @@ -94,12 +94,22 @@ void embb_core_set_init(embb_core_set_t* core_set, int initializer) { #ifdef EMBB_HAS_HEADER_SYSINFO #include #endif +#ifdef __FreeBSD__ +#include +#include +#endif unsigned int embb_core_count_available() { #ifdef EMBB_HAS_HEADER_SYSINFO return get_nprocs(); +#elif defined __FreeBSD__ + const size_t bs = sizeof(unsigned int); + char buf[bs]; + size_t len = bs; + sysctlbyname("hw.ncpu", buf, &len, NULL, 0); + return *(unsigned int*)&buf; #else -#error "No header sysinfo available!" +#error "No implementation for embb_core_count_available()!" #endif }