summaryrefslogtreecommitdiff
path: root/include/linux/sched.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r--include/linux/sched.h32
1 files changed, 25 insertions, 7 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 21a1c416594c..a504b6a92ccf 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -264,6 +264,15 @@ struct signal_struct {
/* thread group stop support, overloads group_exit_code too */
int group_stop_count;
+
+ /* job control IDs */
+ pid_t pgrp;
+ pid_t tty_old_pgrp;
+ pid_t session;
+ /* boolean value for session group leader */
+ int leader;
+
+ struct tty_struct *tty; /* NULL if no tty */
};
/*
@@ -366,12 +375,7 @@ struct task_struct {
unsigned long personality;
int did_exec:1;
pid_t pid;
- pid_t __pgrp; /* Accessed via process_group() */
- pid_t tty_old_pgrp;
- pid_t session;
pid_t tgid;
- /* boolean value for session group leader */
- int leader;
/*
* pointers to (original) parent process, youngest child, younger sibling,
* older sibling, respectively. (p->father can be replaced with
@@ -415,7 +419,6 @@ struct task_struct {
char comm[16];
/* file system info */
int link_count, total_link_count;
- struct tty_struct *tty; /* NULL if no tty */
unsigned int locks; /* How many file locks are being held */
/* ipc stuff */
struct sysv_sem sysvsem;
@@ -469,7 +472,22 @@ struct task_struct {
static inline pid_t process_group(struct task_struct *tsk)
{
- return tsk->group_leader->__pgrp;
+ return tsk->signal->pgrp;
+}
+
+static inline pid_t process_session(struct task_struct *tsk)
+{
+ return tsk->signal->session;
+}
+
+static inline int process_session_leader(struct task_struct *tsk)
+{
+ return tsk->signal->leader;
+}
+
+static inline struct tty_struct *process_tty(struct task_struct *tsk)
+{
+ return tsk->signal->tty;
}
extern void __put_task_struct(struct task_struct *tsk);