VirtualBox

source: kBuild/vendor/gnumake/3.82-cvs/job.h@ 2580

Last change on this file since 2580 was 2580, checked in by bird, 12 years ago

Importing the make-3-82 CVS tag with --auto-props but no keywords.

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1/* Definitions for managing subprocesses in GNU Make.
2Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
32002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
4Foundation, Inc.
5This file is part of GNU Make.
6
7GNU Make is free software; you can redistribute it and/or modify it under the
8terms of the GNU General Public License as published by the Free Software
9Foundation; either version 3 of the License, or (at your option) any later
10version.
11
12GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License along with
17this program. If not, see <http://www.gnu.org/licenses/>. */
18
19#ifndef SEEN_JOB_H
20#define SEEN_JOB_H
21
22#ifdef HAVE_FCNTL_H
23# include <fcntl.h>
24#else
25# include <sys/file.h>
26#endif
27
28/* How to set close-on-exec for a file descriptor. */
29
30#if !defined F_SETFD
31# define CLOSE_ON_EXEC(_d)
32#else
33# ifndef FD_CLOEXEC
34# define FD_CLOEXEC 1
35# endif
36# define CLOSE_ON_EXEC(_d) (void) fcntl ((_d), F_SETFD, FD_CLOEXEC)
37#endif
38
39/* Structure describing a running or dead child process. */
40
41struct child
42 {
43 struct child *next; /* Link in the chain. */
44
45 struct file *file; /* File being remade. */
46
47 char **environment; /* Environment for commands. */
48
49 char **command_lines; /* Array of variable-expanded cmd lines. */
50 unsigned int command_line; /* Index into above. */
51 char *command_ptr; /* Ptr into command_lines[command_line]. */
52
53 pid_t pid; /* Child process's ID number. */
54#ifdef VMS
55 int efn; /* Completion event flag number */
56 int cstatus; /* Completion status */
57 char *comname; /* Temporary command file name */
58#endif
59 char *sh_batch_file; /* Script file for shell commands */
60 unsigned int remote:1; /* Nonzero if executing remotely. */
61
62 unsigned int noerror:1; /* Nonzero if commands contained a `-'. */
63
64 unsigned int good_stdin:1; /* Nonzero if this child has a good stdin. */
65 unsigned int deleted:1; /* Nonzero if targets have been deleted. */
66 unsigned int dontcare:1; /* Saved dontcare flag. */
67 };
68
69extern struct child *children;
70
71int is_bourne_compatible_shell(const char *path);
72void new_job (struct file *file);
73void reap_children (int block, int err);
74void start_waiting_jobs (void);
75
76char **construct_command_argv (char *line, char **restp, struct file *file,
77 int cmd_flags, char** batch_file);
78#ifdef VMS
79int child_execute_job (char *argv, struct child *child);
80#elif defined(__EMX__)
81int child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
82#else
83void child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
84#endif
85#ifdef _AMIGA
86void exec_command (char **argv);
87#elif defined(__EMX__)
88int exec_command (char **argv, char **envp);
89#else
90void exec_command (char **argv, char **envp);
91#endif
92
93extern unsigned int job_slots_used;
94
95void block_sigs (void);
96#ifdef POSIX
97void unblock_sigs (void);
98#else
99#ifdef HAVE_SIGSETMASK
100extern int fatal_signal_mask;
101#define unblock_sigs() sigsetmask (0)
102#else
103#define unblock_sigs()
104#endif
105#endif
106
107extern unsigned int jobserver_tokens;
108
109#endif /* SEEN_JOB_H */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette