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