summaryrefslogtreecommitdiff
path: root/jobs.h
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2016-09-15 16:59:08 -0400
committerChet Ramey <chet.ramey@case.edu>2016-09-15 16:59:08 -0400
commita0c0a00fc419b7bc08202a79134fcd5bc0427071 (patch)
treecfde1549b35d73504bb539008de4b00e44e8f8fb /jobs.h
parent30a978b7d808c067219c95be88c4979b6a7aa251 (diff)
downloadbash-a0c0a00fc419b7bc08202a79134fcd5bc0427071.tar.gz
Bash-4.4 distribution sources and documentationbash-4.4
Diffstat (limited to 'jobs.h')
-rw-r--r--jobs.h37
1 files changed, 28 insertions, 9 deletions
diff --git a/jobs.h b/jobs.h
index bec95273..4ba3513c 100644
--- a/jobs.h
+++ b/jobs.h
@@ -1,6 +1,6 @@
/* jobs.h -- structures and definitions used by the jobs.c file. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -61,6 +61,11 @@ typedef struct process {
char *command; /* The particular program that is running. */
} PROCESS;
+struct pipeline_saver {
+ struct process *pipeline;
+ struct pipeline_saver *next;
+};
+
/* PALIVE really means `not exited' */
#define PSTOPPED(p) (WIFSTOPPED((p)->status))
#define PRUNNING(p) ((p)->running == PS_RUNNING)
@@ -137,18 +142,28 @@ struct jobstats {
JOB *j_lastasync; /* last async job allocated by stop_pipeline */
};
+/* Revised to accommodate new hash table bgpids implementation. */
+typedef pid_t ps_index_t;
+
struct pidstat {
- struct pidstat *next;
- pid_t pid;
- int status;
+ ps_index_t bucket_next;
+ ps_index_t bucket_prev;
+
+ pid_t pid;
+ bits16_t status; /* only 8 bits really needed */
};
struct bgpids {
- struct pidstat *list;
- struct pidstat *end;
+ struct pidstat *storage; /* storage arena */
+
+ ps_index_t head;
+ ps_index_t nalloc;
+
int npid;
};
+#define NO_PIDSTAT (ps_index_t)-1
+
#define NO_JOB -1 /* An impossible job array index. */
#define DUP_JOB -2 /* A possible return value for get_job_spec (). */
#define BAD_JOBSPEC -3 /* Bad syntax for job spec. */
@@ -176,9 +191,10 @@ extern void making_children __P((void));
extern void stop_making_children __P((void));
extern void cleanup_the_pipeline __P((void));
extern void save_pipeline __P((int));
-extern void restore_pipeline __P((int));
+extern PROCESS *restore_pipeline __P((int));
extern void start_pipeline __P((void));
extern int stop_pipeline __P((int, COMMAND *));
+extern int discard_pipeline __P((PROCESS *));
extern void append_process __P((char *, pid_t, int, int));
extern void delete_job __P((int, int));
@@ -214,12 +230,14 @@ extern int set_tty_state __P((void));
extern int job_exit_status __P((int));
extern int job_exit_signal __P((int));
-extern int wait_for_single_pid __P((pid_t));
+extern int wait_for_single_pid __P((pid_t, int));
extern void wait_for_background_pids __P((void));
extern int wait_for __P((pid_t));
extern int wait_for_job __P((int));
extern int wait_for_any_job __P((void));
+extern void wait_sigint_cleanup __P((void));
+
extern void notify_and_cleanup __P((void));
extern void reap_dead_jobs __P((void));
extern int start_job __P((int, int));
@@ -230,7 +248,7 @@ extern int give_terminal_to __P((pid_t, int));
extern void run_sigchld_trap __P((int));
-extern void freeze_jobs_list __P((void));
+extern int freeze_jobs_list __P((void));
extern void unfreeze_jobs_list __P((void));
extern int set_job_control __P((int));
extern void without_job_control __P((void));
@@ -239,6 +257,7 @@ extern void restart_job_control __P((void));
extern void set_sigchld_handler __P((void));
extern void ignore_tty_job_signals __P((void));
extern void default_tty_job_signals __P((void));
+extern void get_original_tty_job_signals __P((void));
extern void init_job_stats __P((void));