]> git.proxmox.com Git - rustc.git/blame - src/jemalloc/include/jemalloc/internal/spin.h
New upstream version 1.22.1+dfsg1
[rustc.git] / src / jemalloc / include / jemalloc / internal / spin.h
CommitLineData
3b2f2976
XL
1/******************************************************************************/
2#ifdef JEMALLOC_H_TYPES
3
4typedef struct spin_s spin_t;
5
6#endif /* JEMALLOC_H_TYPES */
7/******************************************************************************/
8#ifdef JEMALLOC_H_STRUCTS
9
10struct spin_s {
11 unsigned iteration;
12};
13
14#endif /* JEMALLOC_H_STRUCTS */
15/******************************************************************************/
16#ifdef JEMALLOC_H_EXTERNS
17
18#endif /* JEMALLOC_H_EXTERNS */
19/******************************************************************************/
20#ifdef JEMALLOC_H_INLINES
21
22#ifndef JEMALLOC_ENABLE_INLINE
23void spin_init(spin_t *spin);
24void spin_adaptive(spin_t *spin);
25#endif
26
27#if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_SPIN_C_))
28JEMALLOC_INLINE void
29spin_init(spin_t *spin)
30{
31
32 spin->iteration = 0;
33}
34
35JEMALLOC_INLINE void
36spin_adaptive(spin_t *spin)
37{
38 volatile uint64_t i;
39
40 for (i = 0; i < (KQU(1) << spin->iteration); i++)
41 CPU_SPINWAIT;
42
43 if (spin->iteration < 63)
44 spin->iteration++;
45}
46
47#endif
48
49#endif /* JEMALLOC_H_INLINES */
50/******************************************************************************/
51