#include "types.hh" #include "util.hh" #include "affinity.hh" #if HAVE_SCHED_H #include #endif namespace nix { #if HAVE_SCHED_SETAFFINITY static bool didSaveAffinity = false; static cpu_set_t savedAffinity; #endif void setAffinityTo(int cpu) { #if HAVE_SCHED_SETAFFINITY if (sched_getaffinity(0, sizeof(cpu_set_t), &savedAffinity) == -1) return; didSaveAffinity = true; printMsg(lvlDebug, format("locking this thread to CPU %1%") % cpu); cpu_set_t newAffinity; CPU_ZERO(&newAffinity); CPU_SET(cpu, &newAffinity); if (sched_setaffinity(0, sizeof(cpu_set_t), &newAffinity) == -1) printMsg(lvlError, format("failed to lock thread to CPU %1%") % cpu); #endif } int lockToCurrentCPU() { #if HAVE_SCHED_SETAFFINITY int cpu = sched_getcpu(); if (cpu != -1) setAffinityTo(cpu); return cpu; #else return -1; #endif } void restoreAffinity() { #if HAVE_SCHED_SETAFFINITY if (!didSaveAffinity) return; if (sched_setaffinity(0, sizeof(cpu_set_t), &savedAffinity) == -1) printMsg(lvlError, "failed to restore affinity %1%"); #endif } } f='/guix/refs/?id=58e48c64cf653024fc4e34f8c18c517b3c7e3e59'>refslogtreecommitdiff
path: root/gnu/machine
AgeCommit message (Expand)Author
2024-06-04file-systems: Add support for mounting CIFS file systems...Richard Sent
2024-02-19machine/ssh: Refresh parameterization of %CURRENT-SYSTEM....Ricardo Wurmus
2023-08-08system: Do not check initrd modules for pseudo file systems....Ludovic Courtès
2022-11-17machine: ssh: Validate 'system' field....Ludovic Courtès
2022-11-09machine/digital-ocean: Pull operating system definition out of string....Ricardo Wurmus
2022-11-09machine/digital-ocean: Set load path to Guile 3.0 directories....Ricardo Wurmus
2022-11-09machine/digital-ocean: Use static-networking-service-type....Ricardo Wurmus
2022-11-09machine/digital-ocean: Use nightly Guix....Ricardo Wurmus
2022-10-17guix: Fix typos....Julien Lepiller
2022-09-26machine: ssh: Parameterize '%current-system' early on....Ludovic Courtès
2022-09-04Fix misspelling of GUIX_DIGITAL_OCEAN_TOKEN....Matthew James Kraai