Annotation of embedaddon/nginx/src/os/unix/ngx_setaffinity.c, revision 1.1
1.1 ! misho 1:
! 2: /*
! 3: * Copyright (C) Nginx, Inc.
! 4: */
! 5:
! 6:
! 7: #include <ngx_config.h>
! 8: #include <ngx_core.h>
! 9:
! 10:
! 11: #if (NGX_HAVE_CPUSET_SETAFFINITY)
! 12:
! 13: #include <sys/cpuset.h>
! 14:
! 15: void
! 16: ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log)
! 17: {
! 18: cpuset_t mask;
! 19: ngx_uint_t i;
! 20:
! 21: ngx_log_error(NGX_LOG_NOTICE, log, 0,
! 22: "cpuset_setaffinity(0x%08Xl)", cpu_affinity);
! 23:
! 24: CPU_ZERO(&mask);
! 25: i = 0;
! 26: do {
! 27: if (cpu_affinity & 1) {
! 28: CPU_SET(i, &mask);
! 29: }
! 30: i++;
! 31: cpu_affinity >>= 1;
! 32: } while (cpu_affinity);
! 33:
! 34: if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1,
! 35: sizeof(cpuset_t), &mask) == -1)
! 36: {
! 37: ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
! 38: "cpuset_setaffinity() failed");
! 39: }
! 40: }
! 41:
! 42: #elif (NGX_HAVE_SCHED_SETAFFINITY)
! 43:
! 44: void
! 45: ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log)
! 46: {
! 47: cpu_set_t mask;
! 48: ngx_uint_t i;
! 49:
! 50: ngx_log_error(NGX_LOG_NOTICE, log, 0,
! 51: "sched_setaffinity(0x%08Xl)", cpu_affinity);
! 52:
! 53: CPU_ZERO(&mask);
! 54: i = 0;
! 55: do {
! 56: if (cpu_affinity & 1) {
! 57: CPU_SET(i, &mask);
! 58: }
! 59: i++;
! 60: cpu_affinity >>= 1;
! 61: } while (cpu_affinity);
! 62:
! 63: if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) == -1) {
! 64: ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
! 65: "sched_setaffinity() failed");
! 66: }
! 67: }
! 68:
! 69: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>