[RFC][PATCH 4/7] VPIDs: vpid macros in non-VPID case

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch specifies an "interface" to virtual pids. That is
some macros/inlines to obtain pids from tasks, convert pids
to vpids and vice versa and set pids.

Kirill
--- ./include/linux/pid.h.vpid_macro	2006-01-03 06:21:10.000000000 +0300
+++ ./include/linux/pid.h	2006-02-02 14:32:41.162807472 +0300
@@ -19,6 +19,19 @@ struct pid
 	struct list_head pid_list;
 };
 
+#ifndef CONFIG_VIRTUAL_PIDS
+#define __is_virtual_pid(pid)		0
+#define is_virtual_pid(pid)		0
+#define vpid_to_pid(pid)		(pid)
+#define __vpid_to_pid(pid)		(pid)
+#define pid_type_to_vpid(type, pid)	(pid)
+#define __pid_type_to_vpid(type, pid)	(pid)
+#define comb_vpid_to_pid(pid)		(pid)
+#define comb_pid_to_vpid(pid)		(pid)
+#define alloc_vpid(pid, vpid)		(pid)
+#define free_vpid(vpid)			do { } while (0)
+#endif
+
 #define pid_task(elem, type) \
 	list_entry(elem, struct task_struct, pids[type].pid_list)
 
--- ./include/linux/sched.h.vpid_macro	2006-02-02 14:15:55.455698192 +0300
+++ ./include/linux/sched.h	2006-02-02 14:32:41.164807168 +0300
@@ -1257,6 +1257,78 @@ static inline unsigned long *end_of_stac
 
 #endif
 
+#ifndef CONFIG_VIRTUAL_PIDS
+static inline pid_t virt_pid(struct task_struct *tsk)
+{
+	return tsk->pid;
+}
+
+static inline pid_t virt_tgid(struct task_struct *tsk)
+{
+	return tsk->tgid;
+}
+
+static inline pid_t virt_pgid(struct task_struct *tsk)
+{
+	return tsk->signal->pgrp;
+}
+
+static inline pid_t virt_sid(struct task_struct *tsk)
+{
+	return tsk->signal->session;
+}
+
+static inline pid_t get_task_pid_ve(struct task_struct *tsk,
+		struct task_struct *ve_tsk)
+{
+	return tsk->pid;
+}
+
+static inline pid_t get_task_pid(struct task_struct *tsk)
+{
+	return tsk->pid;
+}
+
+static inline pid_t get_task_tgid(struct task_struct *tsk)
+{
+	return tsk->tgid;
+}
+
+static inline pid_t get_task_pgid(struct task_struct *tsk)
+{
+	return tsk->signal->pgrp;
+}
+
+static inline pid_t get_task_sid(struct task_struct *tsk)
+{
+	return tsk->signal->session;
+}
+
+static inline int set_virt_pid(struct task_struct *tsk, pid_t pid)
+{
+	return 0;
+}
+
+static inline void set_virt_tgid(struct task_struct *tsk, pid_t pid)
+{
+}
+
+static inline void set_virt_pgid(struct task_struct *tsk, pid_t pid)
+{
+}
+
+static inline void set_virt_sid(struct task_struct *tsk, pid_t pid)
+{
+}
+
+static inline pid_t get_task_ppid(struct task_struct *p)
+{
+	if (!pid_alive(p))
+		return 0;
+	return (p->pid > 1 ? p->group_leader->real_parent->tgid : 0);
+}
+#endif
+
 /* set thread flags in other task's structures
  * - see asm/thread_info.h for TIF_xxxx flags available
  */

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux