From d8fa44d583b3531df31c193470ee4c6602f8acf5 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Thu, 5 Jun 2014 09:35:34 +0000 Subject: [PATCH] fixed warning with invalid cast to cpu_set_t git-svn-id: https://zerberus.eonerc.rwth-aachen.de:8443/svn/s2ss/trunk@56 8ec27952-4edc-4aab-86aa-e87bb2611832 --- src/utils.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/utils.c b/src/utils.c index 46426b761..72c4852ee 100644 --- a/src/utils.c +++ b/src/utils.c @@ -90,6 +90,18 @@ int resolve_addr(const char *addr, struct sockaddr_in *sa, int flags) return 0; } +static cpu_set_t to_cpu_set_t(int set) +{ + cpu_set_t cset; + + for (int i = 0; i < sizeof(int) * 8; i++) { + if (set & (1L << i)) + CPU_SET(i, &cset); + } + + return cset; +} + void init_realtime(struct config *g) { /* Prefault stack */ @@ -119,9 +131,9 @@ void init_realtime(struct config *g) debug(3, "Set task priority to %u", g->priority); /* Pin threads to CPUs by setting the affinity */ - size_t cset = g->affinity; + cpu_set_t cset = to_cpu_set_t(g->affinity); pid_t pid = getpid(); - if (sched_setaffinity(pid, sizeof(cset), (const struct cpu_set_t *) &cset)) + if (sched_setaffinity(pid, sizeof(cset), &cset)) perror("Failed to set CPU affinity"); else debug(3, "Set affinity to %#x", g->affinity);