mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
[PATCH] add process_session() helper routine: deprecate old field
Add an anonymous union and ((deprecated)) to catch direct usage of the session field. [akpm@osdl.org: fix various missed conversions] [jdike@addtoit.com: fix UML bug] Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Cedric Le Goater <clg@fr.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
937949d9ed
commit
1ec320afdc
6 changed files with 27 additions and 11 deletions
|
@ -3855,7 +3855,7 @@ EXPORT_SYMBOL(proc_clear_tty);
|
||||||
void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
|
void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
if (tty) {
|
if (tty) {
|
||||||
tty->session = tsk->signal->session;
|
tty->session = process_session(tsk);
|
||||||
tty->pgrp = process_group(tsk);
|
tty->pgrp = process_group(tsk);
|
||||||
}
|
}
|
||||||
tsk->signal->tty = tty;
|
tsk->signal->tty = tty;
|
||||||
|
|
|
@ -381,7 +381,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
|
||||||
stime = cputime_add(stime, sig->stime);
|
stime = cputime_add(stime, sig->stime);
|
||||||
}
|
}
|
||||||
|
|
||||||
sid = sig->session;
|
sid = signal_session(sig);
|
||||||
pgid = process_group(task);
|
pgid = process_group(task);
|
||||||
ppid = rcu_dereference(task->real_parent)->tgid;
|
ppid = rcu_dereference(task->real_parent)->tgid;
|
||||||
|
|
||||||
|
|
|
@ -57,17 +57,18 @@
|
||||||
.cpu_vm_mask = CPU_MASK_ALL, \
|
.cpu_vm_mask = CPU_MASK_ALL, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define INIT_SIGNALS(sig) { \
|
#define INIT_SIGNALS(sig) { \
|
||||||
.count = ATOMIC_INIT(1), \
|
.count = ATOMIC_INIT(1), \
|
||||||
.wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\
|
.wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\
|
||||||
.shared_pending = { \
|
.shared_pending = { \
|
||||||
.list = LIST_HEAD_INIT(sig.shared_pending.list), \
|
.list = LIST_HEAD_INIT(sig.shared_pending.list), \
|
||||||
.signal = {{0}}}, \
|
.signal = {{0}}}, \
|
||||||
.posix_timers = LIST_HEAD_INIT(sig.posix_timers), \
|
.posix_timers = LIST_HEAD_INIT(sig.posix_timers), \
|
||||||
.cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \
|
.cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \
|
||||||
.rlim = INIT_RLIMITS, \
|
.rlim = INIT_RLIMITS, \
|
||||||
.pgrp = 1, \
|
.pgrp = 1, \
|
||||||
.session = 1, \
|
.tty_old_pgrp = 0, \
|
||||||
|
{ .__session = 1}, \
|
||||||
}
|
}
|
||||||
|
|
||||||
extern struct nsproxy init_nsproxy;
|
extern struct nsproxy init_nsproxy;
|
||||||
|
|
|
@ -436,7 +436,12 @@ struct signal_struct {
|
||||||
/* job control IDs */
|
/* job control IDs */
|
||||||
pid_t pgrp;
|
pid_t pgrp;
|
||||||
pid_t tty_old_pgrp;
|
pid_t tty_old_pgrp;
|
||||||
pid_t session;
|
|
||||||
|
union {
|
||||||
|
pid_t session __deprecated;
|
||||||
|
pid_t __session;
|
||||||
|
};
|
||||||
|
|
||||||
/* boolean value for session group leader */
|
/* boolean value for session group leader */
|
||||||
int leader;
|
int leader;
|
||||||
|
|
||||||
|
@ -1047,9 +1052,19 @@ static inline pid_t process_group(struct task_struct *tsk)
|
||||||
return tsk->signal->pgrp;
|
return tsk->signal->pgrp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline pid_t signal_session(struct signal_struct *sig)
|
||||||
|
{
|
||||||
|
return sig->__session;
|
||||||
|
}
|
||||||
|
|
||||||
static inline pid_t process_session(struct task_struct *tsk)
|
static inline pid_t process_session(struct task_struct *tsk)
|
||||||
{
|
{
|
||||||
return tsk->signal->session;
|
return signal_session(tsk->signal);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void set_signal_session(struct signal_struct *sig, pid_t session)
|
||||||
|
{
|
||||||
|
sig->__session = session;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct pid *task_pid(struct task_struct *task)
|
static inline struct pid *task_pid(struct task_struct *task)
|
||||||
|
|
|
@ -304,7 +304,7 @@ void __set_special_pids(pid_t session, pid_t pgrp)
|
||||||
|
|
||||||
if (process_session(curr) != session) {
|
if (process_session(curr) != session) {
|
||||||
detach_pid(curr, PIDTYPE_SID);
|
detach_pid(curr, PIDTYPE_SID);
|
||||||
curr->signal->session = session;
|
set_signal_session(curr->signal, session);
|
||||||
attach_pid(curr, PIDTYPE_SID, session);
|
attach_pid(curr, PIDTYPE_SID, session);
|
||||||
}
|
}
|
||||||
if (process_group(curr) != pgrp) {
|
if (process_group(curr) != pgrp) {
|
||||||
|
|
|
@ -1259,7 +1259,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
||||||
if (thread_group_leader(p)) {
|
if (thread_group_leader(p)) {
|
||||||
p->signal->tty = current->signal->tty;
|
p->signal->tty = current->signal->tty;
|
||||||
p->signal->pgrp = process_group(current);
|
p->signal->pgrp = process_group(current);
|
||||||
p->signal->session = process_session(current);
|
set_signal_session(p->signal, process_session(current));
|
||||||
attach_pid(p, PIDTYPE_PGID, process_group(p));
|
attach_pid(p, PIDTYPE_PGID, process_group(p));
|
||||||
attach_pid(p, PIDTYPE_SID, process_session(p));
|
attach_pid(p, PIDTYPE_SID, process_session(p));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue