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>