1: /* Definitions for asynchronous process control in GNU Emacs.
2: Copyright (C) 1985 Richard M. Stallman.
3:
4: This file is part of GNU Emacs.
5:
6: GNU Emacs is distributed in the hope that it will be useful,
7: but WITHOUT ANY WARRANTY. No author or distributor
8: accepts responsibility to anyone for the consequences of using it
9: or for whether it serves any particular purpose or works at all,
10: unless he says so in writing. Refer to the GNU Emacs General Public
11: License for full details.
12:
13: Everyone is granted permission to copy, modify and redistribute
14: GNU Emacs, but only under the conditions described in the
15: GNU Emacs General Public License. A copy of this license is
16: supposed to have been given to you along with GNU Emacs so you
17: can know your rights and responsibilities. It should be in a
18: file named COPYING. Among other things, the copyright notice
19: and this notice must be preserved on all copies. */
20:
21:
22: /*
23: * Structure records pertinent information about open channels.
24: * There is one channel associated with each process.
25: */
26:
27: struct Lisp_Process
28: {
29: int size;
30: struct Lisp_Vector *v_next;
31: /* Descriptor by which we read from this process */
32: Lisp_Object infd;
33: /* Descriptor by which we write to this process */
34: Lisp_Object outfd;
35: /* Name of this process */
36: Lisp_Object name;
37: /* List of command arguments that this process was run with */
38: Lisp_Object command;
39: /* (funcall FILTER PROC STRING) (if FILTER is non-nil)
40: to dispose of a bunch of chars from the process all at once */
41: Lisp_Object filter;
42: /* (funcall SENTINEL PROCESS) when process state changes */
43: Lisp_Object sentinel;
44: /* Buffer that output is going to */
45: Lisp_Object buffer;
46: /* Number of this process */
47: Lisp_Object pid;
48: /* Non-nil if this is really a command channel */
49: Lisp_Object command_channel_p;
50: /* Non-nil if this is really a child process */
51: Lisp_Object childp;
52: /* The state of the process, expressed by flags
53: (RUNNING, STOPPED, etc.) */
54: Lisp_Object flags;
55: /* # of signal that the process got, that stopped it,
56: or code it exited with. */
57: Lisp_Object reason;
58: /* Marker set to end of last buffer-inserted output from this process */
59: Lisp_Object mark;
60: /* Non-nil means kill silently if Emacs is exited. */
61: Lisp_Object kill_without_query;
62: };
63:
64: /* Process status, found in the flags component */
65: #define PROC_STATUS 3
66:
67: /* Values of process status */
68: #define RUNNING 0 /* process is running */
69: #define STOPPED 1 /* process has stopped */
70: #define EXITED 2 /* process has exited */
71: #define SIGNALED 3 /* process was signalled */
72:
73: /* Additional bits in the flags component */
74: #define CHANGED 4 /* This bit is set when state changes;
75: cleared when a change message has been given */
76: #define COREDUMPED 8 /* This bit is set if core was dumped */
77:
78:
79: #define ChannelMask(n) (1<<(n))
Defined struct's
Defined macros
Usage of this include