/* Copyright (C) 2008 Emmanuel Varoquaux This file is part of XOS. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef JOB_H #define JOB_H #include enum {RF_NORMAL, RF_LONG, RF_ONLY_LEADER}; struct running_pipeline_struct { int foreground; struct proc_struct *first_proc; struct proc_struct *last_proc; pid_t pgid; }; struct job_struct; void init_job_control(); void end_job_control(); void init_running_pipeline(struct running_pipeline_struct *running_pipeline, int foreground); pid_t make_child(struct running_pipeline_struct *running_pipeline, char *command); int start_job(struct running_pipeline_struct *running_pipeline); void kill_running_pipeline(struct running_pipeline_struct *running_pipeline); int exit_pseudo_job(int exit_status); struct job_struct *get_job(int n); struct job_struct *get_current_job(); struct job_struct *get_previous_job(); struct job_struct *get_job_by_pid(pid_t pid); void display_job(struct job_struct *job, int format); void display_jobs(int format); void display_unreported_jobs(); int run_job_in_foreground(struct job_struct *job, int *status); int run_job_in_background(struct job_struct *job); int kill_job(struct job_struct *job, int sig); void wait_job(struct job_struct *job, int *status); void wait_jobs(); #endif