/* vi: set sw=4 ts=4: */ /* * taskset - retrieve or set a processes' CPU affinity * Copyright (c) 2006 Bernhard Fischer * * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ #include #include /* optind */ #include "libbb.h" #if ENABLE_FEATURE_TASKSET_FANCY #define TASKSET_PRINTF_MASK "%s" #define from_cpuset(x) __from_cpuset(&x) /* craft a string from the mask */ static char *__from_cpuset(cpu_set_t *mask) { int i; char *ret = 0, *str = xzalloc(9); for (i = CPU_SETSIZE - 4; i >= 0; i -= 4) { char val = 0; int off; for (off = 0; off <= 3; ++off) if (CPU_ISSET(i+off, mask)) val |= 1< */ aff = p_opt; p_opt = argv[optind]; } argv += optind; /* me -p */ pid = xatoul_range(p_opt, 1, ULONG_MAX); /* -p */ } else aff = *++argv; /* */ if (aff) { unsigned i = 0; unsigned long l = xstrtol_range(aff, 0, 1, LONG_MAX); CPU_ZERO(&new_mask); while (i < CPU_SETSIZE && l >= (1<