diff options
author | Rich Felker <dalias@aerifal.cx> | 2019-02-22 02:56:10 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2019-02-22 03:25:39 -0500 |
commit | ba18c1ecc6a18203ad8496791154af86f706f632 (patch) | |
tree | d1e407e0b4f3fbe9e4463e66c960473112159981 /include/sys | |
parent | 7865d569de7b29dd90b94b5680ec7a2a86ed27af (diff) | |
download | musl-ba18c1ecc6a18203ad8496791154af86f706f632.tar.gz musl-ba18c1ecc6a18203ad8496791154af86f706f632.tar.bz2 musl-ba18c1ecc6a18203ad8496791154af86f706f632.tar.xz musl-ba18c1ecc6a18203ad8496791154af86f706f632.zip |
add membarrier syscall wrapper, refactor dynamic tls install to use it
the motivation for this change is twofold. first, it gets the fallback
logic out of the dynamic linker, improving code readability and
organization. second, it provides application code that wants to use
the membarrier syscall, which depends on preregistration of intent
before the process becomes multithreaded unless unbounded latency is
acceptable, with a symbol that, when linked, ensures that this
registration happens.
Diffstat (limited to 'include/sys')
-rw-r--r-- | include/sys/membarrier.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/sys/membarrier.h b/include/sys/membarrier.h new file mode 100644 index 00000000..10cb3108 --- /dev/null +++ b/include/sys/membarrier.h @@ -0,0 +1,17 @@ +#ifndef _SYS_MEMBARRIER_H +#define _SYS_MEMBARRIER_H + +#define MEMBARRIER_CMD_QUERY 0 +#define MEMBARRIER_CMD_GLOBAL 1 +#define MEMBARRIER_CMD_GLOBAL_EXPEDITED 2 +#define MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED 4 +#define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 +#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16 +#define MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE 32 +#define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE 64 + +#define MEMBARRIER_CMD_SHARED MEMBARRIER_CMD_GLOBAL + +int membarrier(int, int); + +#endif |