blocked and real_blocked instances in the task structure are bit masks of blocked signals; these queues are per-process. Each LWP in a thread group thus has its own blocked signal mask. The pending instance of the task structure is used to queue private pending signals; all signals queued to a normal process and a specific LWP in a thread group are queued into this list:
struct sigpending {
struct list_head list; // head to double linked list of struct sigqueue
sigset_t signal; // bit mask of pending signals
};
The following figure represents the data structures involved in maintaining private pending signals: