Commit | Line | Data |
---|---|---|
74cc1f59 MJ |
1 | /* |
2 | * SPDX-License-Identifier: LGPL-2.1-only | |
3 | * | |
4 | * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
5 | */ | |
6 | ||
7 | #ifndef _UST_COMMON_SMP_H | |
8 | #define _UST_COMMON_SMP_H | |
9 | ||
feac7204 MJ |
10 | #define LTTNG_UST_CPUMASK_SIZE 4096 |
11 | ||
66dbdc34 MJ |
12 | /* |
13 | * Get the CPU possible mask string from sysfs. | |
14 | * | |
15 | * buf: the buffer where the mask will be read. | |
16 | * max_bytes: the maximum number of bytes to write in the buffer. | |
17 | * | |
18 | * Returns the number of bytes read or -1 on error. | |
19 | */ | |
20 | int get_possible_cpu_mask_from_sysfs(char *buf, size_t max_bytes) | |
21 | __attribute__((visibility("hidden"))); | |
22 | ||
23 | /* | |
24 | * Get the number of possible CPUs in the system from either | |
25 | * sysconf(_SC_NPROCESSORS_CONF) or some other mechanism depending on the libc. | |
26 | * | |
27 | * Returns the number of possible CPUs in the system or 0 on error. | |
28 | */ | |
29 | int get_num_possible_cpus_fallback(void) | |
30 | __attribute__((visibility("hidden"))); | |
31 | ||
32 | /* | |
33 | * Get the number of CPUs from the possible cpu mask. | |
34 | * | |
35 | * pmask: the mask to parse. | |
36 | * len: the len of the mask excluding '\0'. | |
37 | * | |
38 | * Returns the number of possible CPUs from the mask or 0 on error. | |
39 | */ | |
40 | int get_num_possible_cpus_from_mask(const char *pmask, size_t len) | |
41 | __attribute__((visibility("hidden"))); | |
42 | ||
74cc1f59 MJ |
43 | /* |
44 | * Returns the total number of CPUs in the system. If the cache is not yet | |
66dbdc34 MJ |
45 | * initialized, get the value from "/sys/devices/system/cpu/possible" or |
46 | * fallback to sysconf and cache it. | |
74cc1f59 | 47 | * |
66dbdc34 | 48 | * If all methods fail, don't populate the cache and return 0. |
74cc1f59 | 49 | */ |
95fa2ba4 MJ |
50 | int num_possible_cpus(void) |
51 | __attribute__((visibility("hidden"))); | |
74cc1f59 MJ |
52 | |
53 | #define for_each_possible_cpu(cpu) \ | |
54 | for ((cpu) = 0; (cpu) < num_possible_cpus(); (cpu)++) | |
55 | ||
56 | #endif /* _UST_COMMON_SMP_H */ |