Mercurial > emacs
comparison src/process.h @ 69873:2d844bbbccd4
* 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.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Sat, 08 Apr 2006 15:07:35 +0000 |
| parents | 3bd95f4f2941 |
| children | 7077caf6dc5a 65ca8fb66a0d |
comparison
equal
deleted
inserted
replaced
| 69872:f60a24914ee2 | 69873:2d844bbbccd4 |
|---|---|
| 49 /* (funcall LOG SERVER CLIENT MESSAGE) when a server process | 49 /* (funcall LOG SERVER CLIENT MESSAGE) when a server process |
| 50 accepts a connection from a client. */ | 50 accepts a connection from a client. */ |
| 51 Lisp_Object log; | 51 Lisp_Object log; |
| 52 /* Buffer that output is going to */ | 52 /* Buffer that output is going to */ |
| 53 Lisp_Object buffer; | 53 Lisp_Object buffer; |
| 54 /* Number of this process */ | |
| 55 Lisp_Object pid; | |
| 56 /* t if this is a real child process. | 54 /* t if this is a real child process. |
| 57 For a net connection, it is a plist based on the arguments to make-network-process. */ | 55 For a net connection, it is a plist based on the arguments to make-network-process. */ |
| 58 Lisp_Object childp; | 56 Lisp_Object childp; |
| 59 /* Plist for programs to keep per-process state information, parameters, etc. */ | 57 /* Plist for programs to keep per-process state information, parameters, etc. */ |
| 60 Lisp_Object plist; | 58 Lisp_Object plist; |
| 61 /* Marker set to end of last buffer-inserted output from this process */ | 59 /* Marker set to end of last buffer-inserted output from this process */ |
| 62 Lisp_Object mark; | 60 Lisp_Object mark; |
| 63 /* Non-nil means kill silently if Emacs is exited. | 61 /* Non-nil means kill silently if Emacs is exited. |
| 64 This is the inverse of the `query-on-exit' flag. */ | 62 This is the inverse of the `query-on-exit' flag. */ |
| 65 Lisp_Object kill_without_query; | 63 Lisp_Object kill_without_query; |
| 66 /* Record the process status in the raw form in which it comes from `wait'. | |
| 67 This is to avoid consing in a signal handler. */ | |
| 68 Lisp_Object raw_status_low; | |
| 69 Lisp_Object raw_status_high; | |
| 70 /* Symbol indicating status of process. | 64 /* Symbol indicating status of process. |
| 71 This may be a symbol: run, open, or closed. | 65 This may be a symbol: run, open, or closed. |
| 72 Or it may be a list, whose car is stop, exit or signal | 66 Or it may be a list, whose car is stop, exit or signal |
| 73 and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG) | 67 and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG) |
| 74 or (SIGNAL_NUMBER . COREDUMP_FLAG). */ | 68 or (SIGNAL_NUMBER . COREDUMP_FLAG). */ |
| 110 time. Value is micro-seconds to delay reading output from | 104 time. Value is micro-seconds to delay reading output from |
| 111 this process. Range is 0 .. 50000. */ | 105 this process. Range is 0 .. 50000. */ |
| 112 Lisp_Object read_output_delay; | 106 Lisp_Object read_output_delay; |
| 113 /* Skip reading this process on next read. */ | 107 /* Skip reading this process on next read. */ |
| 114 Lisp_Object read_output_skip; | 108 Lisp_Object read_output_skip; |
| 109 | |
| 110 /* After this point, there are no Lisp_Objects any more. */ | |
| 111 | |
| 112 /* Number of this process. | |
| 113 allocate_process assumes this is the first non-Lisp_Object field. | |
| 114 A value 0 is used for pseudo-processes such as network connections. */ | |
| 115 pid_t pid; | |
| 116 /* Record the process status in the raw form in which it comes from `wait'. | |
| 117 This is to avoid consing in a signal handler. The `raw_status_new' | |
| 118 flag indicates that `raw_status' contains a new status that still | |
| 119 needs to be synced to `status'. */ | |
| 120 int raw_status_new : 1; | |
| 121 int raw_status; | |
| 115 }; | 122 }; |
| 116 | 123 |
| 117 /* Every field in the preceding structure except for the first two | 124 /* Every field in the preceding structure except for the first two |
| 118 must be a Lisp_Object, for GC's sake. */ | 125 must be a Lisp_Object, for GC's sake. */ |
| 119 | 126 |
