Sha256: 0542eb25e801151abec3bd703ab2a4d052ece823f72e45a74f7400577424b8bd

Contents?: true

Size: 1.37 KB

Versions: 32

Compression:

Stored size: 1.37 KB

Contents

/*
 * Copyright (C) Nginx, Inc.
 */


#include <ngx_config.h>
#include <ngx_core.h>


#if (NGX_HAVE_CPUSET_SETAFFINITY)

#include <sys/cpuset.h>

void
ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log)
{
    cpuset_t    mask;
    ngx_uint_t  i;

    ngx_log_error(NGX_LOG_NOTICE, log, 0,
                  "cpuset_setaffinity(0x%08Xl)", cpu_affinity);

    CPU_ZERO(&mask);
    i = 0;
    do {
        if (cpu_affinity & 1) {
            CPU_SET(i, &mask);
        }
        i++;
        cpu_affinity >>= 1;
    } while (cpu_affinity);

    if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1,
                           sizeof(cpuset_t), &mask) == -1)
    {
        ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
                      "cpuset_setaffinity() failed");
    }
}

#elif (NGX_HAVE_SCHED_SETAFFINITY)

void
ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log)
{
    cpu_set_t   mask;
    ngx_uint_t  i;

    ngx_log_error(NGX_LOG_NOTICE, log, 0,
                  "sched_setaffinity(0x%08Xl)", cpu_affinity);

    CPU_ZERO(&mask);
    i = 0;
    do {
        if (cpu_affinity & 1) {
            CPU_SET(i, &mask);
        }
        i++;
        cpu_affinity >>= 1;
    } while (cpu_affinity);

    if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) == -1) {
        ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
                      "sched_setaffinity() failed");
    }
}

#endif

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
nginxtra-1.8.1.12 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.8.0.11 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.8.0.10 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.8.0.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.6.3.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.6.2.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.6.1.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.6.0.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.7.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.6.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.5.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.4.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.3.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.2.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.1.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.0.9 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.4.0.8 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.2.8.8 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.2.7.8 vendor/nginx/src/os/unix/ngx_setaffinity.c
nginxtra-1.2.6.8 vendor/nginx/src/os/unix/ngx_setaffinity.c