/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _linux_POSIX_TIMERS_TYPES_H #define _linux_POSIX_TIMERS_TYPES_H #include <linux/mutex_types.h> #include <linux/timerqueue_types.h> #include <linux/types.h> /* * Bit fields within a clockid: * * The most significant 29 bits hold either a pid or a file descriptor. * * Bit 2 indicates whether a cpu clock refers to a thread or a process. * * Bits 1 and 0 give the type: PROF=0, VIRT=1, SCHED=2, or FD=3. * * A clockid is invalid if bits 2, 1, and 0 are all set. */ #define CPUCLOCK_PID(clock) … #define CPUCLOCK_PERTHREAD(clock) … #define CPUCLOCK_PERTHREAD_MASK … #define CPUCLOCK_WHICH(clock) … #define CPUCLOCK_CLOCK_MASK … #define CPUCLOCK_PROF … #define CPUCLOCK_VIRT … #define CPUCLOCK_SCHED … #define CPUCLOCK_MAX … #define CLOCKFD … #define CLOCKFD_MASK … #ifdef CONFIG_POSIX_TIMERS /** * posix_cputimer_base - Container per posix CPU clock * @nextevt: Earliest-expiration cache * @tqhead: timerqueue head for cpu_timers */ struct posix_cputimer_base { … }; /** * posix_cputimers - Container for posix CPU timer related data * @bases: Base container for posix CPU clocks * @timers_active: Timers are queued. * @expiry_active: Timer expiry is active. Used for * process wide timers to avoid multiple * task trying to handle expiry concurrently * * Used in task_struct and signal_struct */ struct posix_cputimers { … }; /** * posix_cputimers_work - Container for task work based posix CPU timer expiry * @work: The task work to be scheduled * @mutex: Mutex held around expiry in context of this task work * @scheduled: @work has been scheduled already, no further processing */ struct posix_cputimers_work { … }; #else /* CONFIG_POSIX_TIMERS */ struct posix_cputimers { }; #endif /* CONFIG_POSIX_TIMERS */ #endif /* _linux_POSIX_TIMERS_TYPES_H */