Demo entry 6658571



Submitted by anonymous on Nov 07, 2017 at 10:20
Language: C. Code size: 4.5 kB.

struct signal_struct {
atomic_t sigcnt;
atomic_t live;
int nr_threads;
struct list_head thread_head;

wait_queue_head_t wait_chldexit; /* for wait4() */
/* current thread group signal load-balancing target: 
struct task_struct *curr_target; //当前线程组信号装载平衡目标进程

/* shared signal handling: */
struct sigpending shared_pending;//共享的信号处理结构体sinpending

/* thread group exit support */
int group_exit_code;
/* overloaded: //线程数量过载处理机制 - group_exit_task
* - notify group_exit_task when ->count is equal to notify_count
* - everyone except group_exit_task is stopped during signal delivery
* of fatal signals, group_exit_task processes the signal.
int notify_count;
struct task_struct *group_exit_task;

/* thread group stop support, overloads group_exit_code too */
int group_stop_count;
unsigned int flags; /* see SIGNAL_* flags below */

* PR_SET_CHILD_SUBREAPER marks a process, like a service
* manager, to re-parent orphan (double-forking) child processes
* to this process instead of 'init'. The service manager is
* able to receive SIGCHLD signals and is able to investigate
* the process until it calls wait(). All children of this
* process will inherit a flag if they should look for a
* child_subreaper process at exit.
unsigned int is_child_subreaper:1;
unsigned int has_child_subreaper:1;


/* POSIX.1b Interval Timers */
int posix_timer_id;
struct list_head posix_timers;

/* ITIMER_REAL timer for the process */
struct hrtimer real_timer;
ktime_t it_real_incr;

* ITIMER_PROF and ITIMER_VIRTUAL timers for the process, we use
* CPUCLOCK_PROF and CPUCLOCK_VIRT for indexing array as these
* values are defined to 0 and 1 respectively
struct cpu_itimer it[2];

* Thread group totals for process CPU timers.
* See thread_group_cputimer(), et al, for details.
struct thread_group_cputimer cputimer;

/* Earliest-expiration cache. */
struct task_cputime cputime_expires;

struct list_head cpu_timers[3];


struct pid *leader_pid;

atomic_t tick_dep_mask;

struct pid *tty_old_pgrp;

/* boolean value for session group leader */
int leader;

struct tty_struct *tty; /* NULL if no tty */

struct autogroup *autogroup;
* Cumulative resource counters for dead threads in the group,
* and for reaped dead child processes forked by this group.
* Live threads maintain their own counters and add to these
* in __exit_signal, except for the group leader.
seqlock_t stats_lock;
u64 utime, stime, cutime, cstime;
u64 gtime;
u64 cgtime;
struct prev_cputime prev_cputime;
unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
unsigned long inblock, oublock, cinblock, coublock;
unsigned long maxrss, cmaxrss;
struct task_io_accounting ioac;

* Cumulative ns of schedule CPU time fo dead threads in the
* group, not including a zombie group leader, (This only differs
* from jiffies_to_ns(utime + stime) if sched_clock uses something
* other than jiffies.)
unsigned long long sum_sched_runtime;

* We don't bother to synchronize most readers of this at all,
* because there is no reader checking a limit that actually needs
* to get both rlim_cur and rlim_max atomically, and either one
* alone is a single word that can safely be read normally.
* getrlimit/setrlimit use task_lock(current->group_leader) to
* protect this instead of the siglock, because they really
* have no need to disable irqs.
struct rlimit rlim[RLIM_NLIMITS];

struct pacct_struct pacct; /* per-process accounting information */
struct taskstats *stats;
unsigned audit_tty;
struct tty_audit_buf *tty_audit_buf;

* Thread is the potential origin of an oom condition; kill first on
* oom
bool oom_flag_origin;
short oom_score_adj; /* OOM kill score adjustment */
short oom_score_adj_min; /* OOM kill score adjustment min value.
* Only settable by CAP_SYS_RESOURCE. */
struct mm_struct *oom_mm; /* recorded mm when the thread group got
* killed by the oom killer */

struct mutex cred_guard_mutex; /* guard against foreign influences on
* credential calculations
* (notably. ptrace) */
} __randomize_layout;

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).