12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include <linux/syscalls.h>
- #include <linux/membarrier.h>
- #include <linux/tick.h>
- #define MEMBARRIER_CMD_BITMASK (MEMBARRIER_CMD_SHARED)
- SYSCALL_DEFINE2(membarrier, int, cmd, int, flags)
- {
-
- if (tick_nohz_full_enabled())
- return -ENOSYS;
- if (unlikely(flags))
- return -EINVAL;
- switch (cmd) {
- case MEMBARRIER_CMD_QUERY:
- return MEMBARRIER_CMD_BITMASK;
- case MEMBARRIER_CMD_SHARED:
- if (num_online_cpus() > 1)
- synchronize_sched();
- return 0;
- default:
- return -EINVAL;
- }
- }
|