#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 } } my engineering thesis at AGH University of Science and Technology in Kraków, Poland
aboutsummaryrefslogtreecommitdiff
path: root/COPYING
diff options
context:
space:
mode:
authorWojciech Kosior <kwojtus@protonmail.com>2020-09-02 14:20:39 +0200
committerWojciech Kosior <kwojtus@protonmail.com>2020-09-02 14:20:39 +0200
commit5cf95f5885033c04ce26c53a0e10e8f2636eac25 (patch)
treec84c71f242e8260fc84efd46859dd5655601ff99 /COPYING
parent8362f88d38e2baf0dc022e848c8d56b1a6476c5b (diff)
downloadAGH-engineering-thesis-5cf95f5885033c04ce26c53a0e10e8f2636eac25.tar.gz
AGH-engineering-thesis-5cf95f5885033c04ce26c53a0e10e8f2636eac25.zip
add bench for embedded ram wishbone slave
Diffstat (limited to 'COPYING')
0 files changed, 0 insertions, 0 deletions