process_group()

Sukadev Bhattiprolu sukadev at us.ibm.com
Sat Jan 20 12:19:59 PST 2007


We currently have:

	
	static inline pid_t process_group(struct task_struct *tsk)
	{
		return tsk->signal->pgrp;
	}
and

	static inline struct pid *task_pgrp(struct task_struct *task)
	{
		return task->group_leader->pids[PIDTYPE_PGID].pid;
	}

and we are replacing process_group() with task_pgrp() and eventually
plan to remove process_group().

But there are several places in the kernel where we interact with
user space using a pid_t (obvious being sys_setpgid(), sys_getpgid()
do_task_stat(), do_wait() etc).

In all these places, process_group(p) would simply be replaced by
pid_nr(task_pgrp(p)). Rather than do that same replacement in many
places, can we keep the interface and change the implmenation to:

	static inline pid_t process_group(struct task_struct *tsk)
	{
		return pid_nr(task_pgrp(tsk));
	}

i.e our ultimate goal is not really to remove process_group() but
actually to remove the caching of pid_t in signal->pgrp right ?

The above disussion is also valid for process_session()/task_session().



More information about the Containers mailing list