diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2006-04-08 15:07:35 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2006-04-08 15:07:35 +0000 |
commit | 6bfd98e75de5ae13bdceddb7effda6bb41bedf79 (patch) | |
tree | f2b62be97f00d1c098052376bf531dddb635dfb7 /src/process.h | |
parent | 67438f773f7ac8f651029661ab9b578b80ba0722 (diff) | |
download | emacs-6bfd98e75de5ae13bdceddb7effda6bb41bedf79.tar.gz |
* 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.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/process.h b/src/process.h index 9625556888c..c4b4281fedf 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 |