uapi, posix-timers: provide clockid-related macros and functions to UAPI
RFC PATCH 1/1 uapi, posix-timers: provide clockid-related macros and functions to UAPI
As of now, there is no interface exposed for converting pid/fd into clockid and vice versa; linuxptp, for example, has been carrying these definitions in missing.h header for quite some time[1].
[1] https://sourceforge.net/p/linuxptp/code/ci/af380e86/tree/missing.h
Signed-off-by Eugene Syromiatnikov <[email protected]>
--- include/linux/posix-timers.h | 47 +------------------------------------------- include/uapi/linux/time.h | 47 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 46 deletions(-)
include/linux/posix-timers.h +1 -46
@@ -5,6 +5,7 @@#include <linux/spinlock.h> #include <linux/list.h> #include <linux/sched.h> +#include <linux/time.h> #include <linux/timex.h> #include <linux/alarmtimer.h>
@@ -17,52 +18,6 @@ struct cpu_timer_list {int firing; }; -/* -* 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) ((pid_t) ~((clock) >> 3)) -#define CPUCLOCK_PERTHREAD (clock) \ - (((clock) & (clockid_t) CPUCLOCK_PERTHREAD_MASK) != 0) - -#define CPUCLOCK_PERTHREAD_MASK 4 -#define CPUCLOCK_WHICH (clock) ((clock) & (clockid_t) CPUCLOCK_CLOCK_MASK) -#define CPUCLOCK_CLOCK_MASK 3 -#define CPUCLOCK_PROF 0 -#define CPUCLOCK_VIRT 1 -#define CPUCLOCK_SCHED 2 -#define CPUCLOCK_MAX 3 -#define CLOCKFD CPUCLOCK_MAX -#define CLOCKFD_MASK (CPUCLOCK_PERTHREAD_MASK|CPUCLOCK_CLOCK_MASK) - -static inline clockid_t make_process_cpuclock (const unsigned int pid, -const clockid_t clock) -{ -return ((~pid) <<3 ) | clock; -} -static inline clockid_t make_thread_cpuclock (const unsigned int tid, -const clockid_t clock) -{ -return make_process_cpuclock (tid, clock |CPUCLOCK_PERTHREAD_MASK ); -} - -static inline clockid_t fd_to_clockid (const int fd) -{ -return make_process_cpuclock ((unsigned int ) fd,CLOCKFD ); -} - -static inline int clockid_to_fd (const clockid_t clk) -{ -return ~(clk >>3 ); -} -#define REQUEUE_PENDING 1/**
include/uapi/linux/time.h +47 -0
51 lines not on this page · raw message
Signature · 1 line
2.1.4