User Managed Concurrency Groups (UMCG) is an M:N threading subsystem/toolkit that lets user space application developers implement in-process user space schedulers. Key changes from the previous patchset https://lore.kernel.org/all/20210917180323.278250-1-posk@xxxxxxxxxx/ : - userspace atomic helpers moved into mm/ - UMCG task states are now tagged with timestamps - cross-mm interactions (wakeups) are not permitted - several smaller fixes and refactorings These big things remain to be addressed (in no particular order): - support tracing/debugging - make context switches faster (see umcg_do_context_switch in umcg.c) - support other architectures - cleanup and post userspace support in tools/lib/umcg/ - cleanup and post selftests in tools/testing/selftests/umcg/ - allow cross-mm wakeups (securely) I'm working on finalizing libumcg and kselftests. Signed-off-by: Peter Oskolkov <posk@xxxxxxxxxx> Peter Oskolkov (5): sched/umcg: add WF_CURRENT_CPU and externise ttwu mm, x86/uaccess: add userspace atomic helpers sched/umcg: implement UMCG syscalls sched/umcg: add Documentation/userspace-api/umcg.rst sched/umcg: add Documentation/userspace-api/umcg.txt Documentation/userspace-api/umcg.rst | 611 ++++++++++++++++ Documentation/userspace-api/umcg.txt | 594 ++++++++++++++++ arch/x86/entry/syscalls/syscall_64.tbl | 2 + arch/x86/include/asm/uaccess_64.h | 93 +++ fs/exec.c | 1 + include/linux/sched.h | 71 ++ include/linux/syscalls.h | 3 + include/linux/uaccess.h | 46 ++ include/uapi/asm-generic/unistd.h | 6 +- include/uapi/linux/umcg.h | 137 ++++ init/Kconfig | 10 + kernel/entry/common.c | 4 +- kernel/exit.c | 5 + kernel/sched/Makefile | 1 + kernel/sched/core.c | 12 +- kernel/sched/fair.c | 4 + kernel/sched/sched.h | 15 +- kernel/sched/umcg.c | 926 +++++++++++++++++++++++++ kernel/sys_ni.c | 4 + mm/maccess.c | 264 +++++++ 20 files changed, 2797 insertions(+), 12 deletions(-) create mode 100644 Documentation/userspace-api/umcg.rst create mode 100644 Documentation/userspace-api/umcg.txt create mode 100644 include/uapi/linux/umcg.h create mode 100644 kernel/sched/umcg.c -- 2.25.1