aboutsummaryrefslogtreecommitdiff
#include "types.hh"
#include "util.hh"
#include "affinity.hh"

#if HAVE_SCHED_H
#include <sched.h>
#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
}


}
> 2020-07-25services: nix: Add extra-options.Oleg Pykhalov * gnu/services/nix.scm (<nix-configuration>)[extra-options]: New field. (nix-shepherd-service): Add this. (nix-activation): Add new line to the end of /etc/nix/nix.conf file. * doc/guix.texi (Miscellaneous Services)[Nix service]: Document this. 2020-07-25services: nix: Fix typo.Oleg Pykhalov * gnu/services/nix.scm (<nix-configuration>): Fix typo. 2020-07-25services: nix: Export nix-configuration.Peng Mei Yu * gnu/services/nix.scm (nix-configuration, nix-configuration?): Export. Signed-off-by: Oleg Pykhalov <go.wigust@gmail.com> 2020-07-25services: nix: Provide nix commands.Peng Mei Yu via Guix-patches via * gnu/services/nix.scm (nix-service-type): Extend profile-service-type to provide nix commands. Signed-off-by: Oleg Pykhalov <go.wigust@gmail.com> 2020-07-22services: nix: Fix sandbox.Oleg Pykhalov * gnu/tests/package-management.scm: New file. * gnu/local.mk: Add this. * gnu/services/nix.scm (<nix-configuration>): New record. (nix-activation): Generate Nix config file which fixes sandbox. (nix-service-type): Add default value. (nix-shepherd-service): Allow provide Nix package. * doc/guix.texi (Miscellaneous Services)[Nix service]<nix-configuration>: Document record. 2020-06-25services: Add missing (ice-9 format) import.Ludovic Courtès These issues were reported by -Wformat, though they were harmless in practice because importing (ice-9 format) changes the global 'format' binding currently. * gnu/services/nix.scm: Import (ice-9 format). * gnu/services/web.scm: Likewise. * gnu/system/mapped-devices.scm: Likewise. 2019-06-12services: Import (srfi srfi-26) from the build side.Tobias Geerinckx-Rice See <https://lists.gnu.org/archive/html/guix-devel/2019-06/msg00119.html>. * gnu/services/nix.scm (nix-activation): Remove (srfi srfi-26) from (host-) imported modules. 2019-06-11services: Add SRFI-26 to Nix activation gexp.Tobias Geerinckx-Rice Fix the following fatal error on ‘guix system reconfigure’: Backtrace: 18 (primitive-load "/home/nckx/.config/guix/current/bin/guix") In guix/ui.scm: 1620:12 17 (run-guix-command _ . _) In ice-9/boot-9.scm: 829:9 16 (catch _ _ #<procedure 7a7caa2d4c80 at guix/ui.scm:587:2 (key c)> _) 829:9 15 (catch _ _ #<procedure 7a7caa2d4c98 at guix/ui.scm:710:6 (key proc format-string format-args . …> …) In guix/scripts/system.scm: 1325:8 14 (_) In guix/status.scm: 768:4 13 (call-with-status-report _ _) In guix/scripts/system.scm: 1181:4 12 (process-action _ _ _) In guix/store.scm: 623:10 11 (call-with-store _) 1800:24 10 (run-with-store _ _ #:guile-for-build _ #:system _ #:target _) In guix/scripts/system.scm: 920:13 9 (_ _) 409:8 8 (_ _) In unknown file: 7 (primitive-load "/gnu/store/dha7j9gcz3vgb8cy7vfvvaswwsywrrzj-activate") In ice-9/boot-9.scm: 260:13 6 (for-each #<procedure primitive-load (_)> _) In unknown file: 5 (primitive-load "/gnu/store/ql1xjxrssxm51z2bn2v6l3mlrncij84h-activate-service") In ice-9/eval.scm: 619:8 4 (_ #f) 196:35 3 (_ #f) 196:27 2 (_ #f) 223:20 1 (proc #<directory (guile-user) 1fa4140>) In unknown file: 0 (%resolve-variable (7 . cut) #<directory (guile-user) 1fa4140>) ERROR: In procedure %resolve-variable: error: cut: unbound variable Reported-by: Alex McGrath on #guix. * gnu/services/nix.scm (nix-activation): Import and use (srfi srfi-26). 2019-06-10services: Add 'nix-service-type'.Oleg Pykhalov * gnu/services/nix.scm: New file. * gnu/local.mk: Add this. * doc/guix.texi (Miscellaneous Services): Document this.