Server IP : 13.213.54.232 / Your IP : 216.73.216.72 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ip-172-31-17-110 6.8.0-1029-aws #31~22.04.1-Ubuntu SMP Thu Apr 24 21:16:18 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.1.33-67+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/lib/modules/6.8.0-1031-aws/build/arch/sparc/include/asm/ |
Upload File : |
/* * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved. */ #ifndef _ASM_SPARC_VVAR_DATA_H #define _ASM_SPARC_VVAR_DATA_H #include <asm/clocksource.h> #include <asm/processor.h> #include <asm/barrier.h> #include <linux/time.h> #include <linux/types.h> struct vvar_data { unsigned int seq; int vclock_mode; struct { /* extract of a clocksource struct */ u64 cycle_last; u64 mask; int mult; int shift; } clock; /* open coded 'struct timespec' */ u64 wall_time_sec; u64 wall_time_snsec; u64 monotonic_time_snsec; u64 monotonic_time_sec; u64 monotonic_time_coarse_sec; u64 monotonic_time_coarse_nsec; u64 wall_time_coarse_sec; u64 wall_time_coarse_nsec; int tz_minuteswest; int tz_dsttime; }; extern struct vvar_data *vvar_data; extern int vdso_fix_stick; static inline unsigned int vvar_read_begin(const struct vvar_data *s) { unsigned int ret; repeat: ret = READ_ONCE(s->seq); if (unlikely(ret & 1)) { cpu_relax(); goto repeat; } smp_rmb(); /* Finish all reads before we return seq */ return ret; } static inline int vvar_read_retry(const struct vvar_data *s, unsigned int start) { smp_rmb(); /* Finish all reads before checking the value of seq */ return unlikely(s->seq != start); } static inline void vvar_write_begin(struct vvar_data *s) { ++s->seq; smp_wmb(); /* Makes sure that increment of seq is reflected */ } static inline void vvar_write_end(struct vvar_data *s) { smp_wmb(); /* Makes the value of seq current before we increment */ ++s->seq; } #endif /* _ASM_SPARC_VVAR_DATA_H */