NetBSD various support improvements

This commit is contained in:
David Carlier
2019-09-29 12:30:10 +01:00
parent fb31a3bf2e
commit 2109d37298
4 changed files with 35 additions and 5 deletions

View File

@ -52,15 +52,18 @@
#include "types.h"
#include "debug.h"
#if defined(__linux__) || defined(__FreeBSD__)
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
#define HAVE_AFFINITY 1
# if defined(__FreeBSD__)
# include <pthread.h>
# include <pthread_np.h>
# include <sys/cpuset.h>
# define cpu_set_t cpuset_t
# elif defined(__NetBSD__)
# include <pthread.h>
# include <sched.h>
# endif
#endif /* __linux__ || __FreeBSD__ */
#endif /* __linux__ || __FreeBSD__ || __NetBSD__ */
/* Get unix time in microseconds. */
@ -160,17 +163,34 @@ int main(int argc, char** argv) {
if (!fr) {
cpu_set_t c;
u32 util_perc;
#if defined(__linux__) || defined(__FreeBSD__)
cpu_set_t c;
CPU_ZERO(&c);
CPU_SET(i, &c);
#elif defined(__NetBSD__)
cpuset_t *c;
c = cpuset_create();
if (c == NULL)
PFATAL("cpuset_create failed");
cpuset_set(i, c);
#endif
#if defined(__FreeBSD__)
if (pthread_setaffinity_np(pthread_self(), sizeof(c), &c))
PFATAL("pthread_setaffinity_np failed");
#endif
#if defined(__NetBSD__)
if (pthread_setaffinity_np(pthread_self(), cpuset_size(c), c))
PFATAL("pthread_setaffinity_np failed");
cpuset_destroy(c);
#endif
#if defined(__linux__)
if (sched_setaffinity(0, sizeof(c), &c))
PFATAL("sched_setaffinity failed");