aboutsummaryrefslogtreecommitdiffstats
path: root/include/vdso
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2020-08-04 17:01:23 +0200
committerThomas Gleixner <tglx@linutronix.de>2020-08-06 10:57:30 +0200
commit19d0070a2792181f79df01277fe00b83b9f7eda7 (patch)
treee722934929bb2c9a7a9439211a20018c081a564a /include/vdso
parentvdso/treewide: Add vdso_data pointer argument to __arch_get_hw_counter() (diff)
downloadlinux-dev-19d0070a2792181f79df01277fe00b83b9f7eda7.tar.xz
linux-dev-19d0070a2792181f79df01277fe00b83b9f7eda7.zip
timekeeping/vsyscall: Provide vdso_update_begin/end()
Architectures can have the requirement to add additional architecture specific data to the VDSO data page which needs to be updated independent of the timekeeper updates. To protect these updates vs. concurrent readers and a conflicting update through timekeeping, provide helper functions to make such updates safe. vdso_update_begin() takes the timekeeper_lock to protect against a potential update from timekeeper code and increments the VDSO sequence count to signal data inconsistency to concurrent readers. vdso_update_end() makes the sequence count even again to signal data consistency and drops the timekeeper lock. [ Sven: Add interrupt disable handling to the functions ] Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20200804150124.41692-3-svens@linux.ibm.com
Diffstat (limited to 'include/vdso')
-rw-r--r--include/vdso/vsyscall.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/vdso/vsyscall.h b/include/vdso/vsyscall.h
index 2c6134e0c23d..b0fdc9c6bf43 100644
--- a/include/vdso/vsyscall.h
+++ b/include/vdso/vsyscall.h
@@ -6,6 +6,9 @@
#include <asm/vdso/vsyscall.h>
+unsigned long vdso_update_begin(void);
+void vdso_update_end(unsigned long flags);
+
#endif /* !__ASSEMBLY__ */
#endif /* __VDSO_VSYSCALL_H */