|
@@ -18,6 +18,17 @@ 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)
|
|
@@ -29,6 +40,8 @@ struct cpu_timer_list {
|
|
|
#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)
|
|
|
|
|
|
#define MAKE_PROCESS_CPUCLOCK(pid, clock) \
|
|
|
((~(clockid_t) (pid) << 3) | (clockid_t) (clock))
|