summaryrefslogtreecommitdiff
path: root/src/process.h
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2006-04-08 15:07:35 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2006-04-08 15:07:35 +0000
commit6bfd98e75de5ae13bdceddb7effda6bb41bedf79 (patch)
treef2b62be97f00d1c098052376bf531dddb635dfb7 /src/process.h
parent67438f773f7ac8f651029661ab9b578b80ba0722 (diff)
* process.h (struct Lisp_Process): Replace Lisp_Objects `pid',
`raw_status_high', and `raw_status_low' with plain integers, and move them to the end of the structure. * alloc.c (allocate_process): Use PSEUDOVECSIZE to initialize the pseudovector's size field so only the Lisp_Object fields get GC'd. * process.c (update_status, make_process, Fdelete_process) (Fprocess_status, list_processes_1, start_process_unwind) (create_process, Fmake_network_process, server_accept_connection) (wait_reading_process_output, send_process, Fprocess_running_child_p) (process_send_signal, proc_encode_coding_system, Fprocess_send_eof) (sigchld_handler, status_notify): Adjust to new non-Lisp fields for `pid' and `raw_status'. (Fprocess_id, Fsignal_process): Same, and additionally use floats when representing PIDs that are larger than most-positive-fixnum.
Diffstat (limited to 'src/process.h')
-rw-r--r--src/process.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/process.h b/src/process.h
index 9625556888..c4b4281fed 100644
--- a/src/process.h
+++ b/src/process.h
@@ -51,8 +51,6 @@ struct Lisp_Process
Lisp_Object log;
/* Buffer that output is going to */
Lisp_Object buffer;
- /* Number of this process */
- Lisp_Object pid;
/* t if this is a real child process.
For a net connection, it is a plist based on the arguments to make-network-process. */
Lisp_Object childp;
@@ -63,10 +61,6 @@ struct Lisp_Process
/* Non-nil means kill silently if Emacs is exited.
This is the inverse of the `query-on-exit' flag. */
Lisp_Object kill_without_query;
- /* Record the process status in the raw form in which it comes from `wait'.
- This is to avoid consing in a signal handler. */
- Lisp_Object raw_status_low;
- Lisp_Object raw_status_high;
/* Symbol indicating status of process.
This may be a symbol: run, open, or closed.
Or it may be a list, whose car is stop, exit or signal
@@ -112,6 +106,19 @@ struct Lisp_Process
Lisp_Object read_output_delay;
/* Skip reading this process on next read. */
Lisp_Object read_output_skip;
+
+ /* After this point, there are no Lisp_Objects any more. */
+
+ /* Number of this process.
+ allocate_process assumes this is the first non-Lisp_Object field.
+ A value 0 is used for pseudo-processes such as network connections. */
+ pid_t pid;
+ /* Record the process status in the raw form in which it comes from `wait'.
+ This is to avoid consing in a signal handler. The `raw_status_new'
+ flag indicates that `raw_status' contains a new status that still
+ needs to be synced to `status'. */
+ int raw_status_new : 1;
+ int raw_status;
};
/* Every field in the preceding structure except for the first two