#define _GNU_SOURCE #include <sched.h> #include <sys/types.h> #include <sys/resource.h> #include <unistd.h> #include <string.h> #include <errno.h> #include "proc.h" #include "die.h" void cpu_affinity(int cpu) { int ret; cpu_set_t cpu_bitmask; CPU_ZERO(&cpu_bitmask); CPU_SET(cpu, &cpu_bitmask); ret = sched_setaffinity(getpid(), sizeof(cpu_bitmask), &cpu_bitmask); if (ret) panic("Can't set this cpu affinity!\n"); } int set_proc_prio(int priority) { int ret = setpriority(PRIO_PROCESS, getpid(), priority); if (ret) panic("Can't set nice val to %i!\n", priority); return 0; } int set_sched_status(int policy, int priority) { int ret, min_prio, max_prio; struct sched_param sp; max_prio = sched_get_priority_max(policy); min_prio = sched_get_priority_min(policy); if (max_prio == -1 || min_prio == -1) printf("Cannot determine scheduler prio limits!\n"); else if (priority < min_prio) priority = min_prio; else if (priority > max_prio) priority = max_prio; memset(&sp, 0, sizeof(sp)); sp.sched_priority = priority; ret = sched_setscheduler(getpid(), policy, &sp); if (ret) { printf("Cannot set scheduler policy!\n"); return -EINVAL; } ret = sched_setparam(getpid(), &sp); if (ret) { printf("Cannot set scheduler prio!\n"); return -EINVAL; } return 0; } ssize_t proc_get_cmdline(unsigned int pid, char *cmdline, size_t len) { ssize_t ret; char path[1024]; snprintf(path, sizeof(path), "/proc/%u/exe", pid); ret = readlink(path, cmdline, len - 1); if (ret < 0) cmdline[0] = '\0'; else cmdline[ret] = '\0'; return ret; } refs/?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>refs</a><a class='active' href='/cgit.cgi/linux/net-next.git/log/include/acpi/acexcep.h'>log</a><a href='/cgit.cgi/linux/net-next.git/tree/include/acpi/acexcep.h?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/include/acpi/acexcep.h?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/include/acpi/acexcep.h?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/include/acpi/acexcep.h'> <input type='hidden' name='id' value='0eb7b85c9669fce5ebf22915ee5f93b6d721256e'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/include?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>include</a>/<a href='/cgit.cgi/linux/net-next.git/log/include/acpi?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>acpi</a>/<a href='/cgit.cgi/linux/net-next.git/log/include/acpi/acexcep.h?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e'>acexcep.h</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/include/acpi/acexcep.h?id=0eb7b85c9669fce5ebf22915ee5f93b6d721256e&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>