Annotation of embedaddon/nginx/src/os/unix/ngx_setaffinity.c, revision 1.1.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>