diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/delivery.c | 10 | ||||
| -rw-r--r-- | src/utils.c | 7 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/delivery.c b/src/delivery.c index fdc2516..5c507bf 100644 --- a/src/delivery.c +++ b/src/delivery.c @@ -353,7 +353,17 @@ int delivery_init_platform(struct Delivery *ctx) { tolower_s(ctx->system.platform[DELIVERY_PLATFORM_RELEASE]); } + long cpu_count = get_cpu_count(); + if (!cpu_count) { + fprintf(stderr, "Unable to determine CPU count. Falling back to 1.\n"); + cpu_count = 1; + } + char ncpus[100] = {0}; + sprintf(ncpus, "%ld", cpu_count); + // Declare some important bits as environment variables + setenv("CPU_COUNT", ncpus, 1); + setenv("STASIS_CPU_COUNT", ncpus, 1); setenv("STASIS_ARCH", ctx->system.arch, 1); setenv("STASIS_PLATFORM", ctx->system.platform[DELIVERY_PLATFORM], 1); setenv("STASIS_CONDA_ARCH", ctx->system.arch, 1); diff --git a/src/utils.c b/src/utils.c index fb22f59..2143c52 100644 --- a/src/utils.c +++ b/src/utils.c @@ -758,3 +758,10 @@ struct StrList *listdir(const char *path) { return node; } +long get_cpu_count() { +#if defined(STASIS_OS_LINUX) || defined(STASIS_OS_DARWIN) + return sysconf(_SC_NPROCESSORS_ONLN); +#else + return 0; +#endif +}
\ No newline at end of file |
