VirtualBox

source: kBuild/trunk/src/gmake/job.h@ 503

Last change on this file since 503 was 503, checked in by bird, 18 years ago

Untested merge with GNU Make v3.81 (vendor/gnumake/2005-05-16 -> vendor/gnumake/current).

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

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