Commit d3d14b40 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

Improve and correct commentary to w32proc-related data and functions.

parent a5f74442
......@@ -1274,7 +1274,7 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp,
#ifdef WINDOWSNT
prepare_standard_handles (in, out, err, handles);
set_process_dir (SDATA (current_dir));
/* Spawn the child. (See ntproc.c:Spawnve). */
/* Spawn the child. (See w32proc.c:sys_spawnve). */
cpid = spawnve (_P_NOWAIT, new_argv[0], new_argv, env);
reset_standard_handles (in, out, err, handles);
if (cpid == -1)
......
......@@ -6085,7 +6085,8 @@ sys_pipe (int * phandles)
}
/* Function to do blocking read of one byte, needed to implement
select. It is only allowed on sockets and pipes. */
select. It is only allowed on communication ports, sockets, or
pipes. */
int
_sys_read_ahead (int fd)
{
......
......@@ -68,17 +68,41 @@ enum {
a socket, the process handle in pi is NULL. */
typedef struct _child_process
{
int fd;
int pid;
HANDLE char_avail;
HANDLE char_consumed;
HANDLE thrd;
HWND hwnd;
PROCESS_INFORMATION procinfo;
volatile int status;
char chr;
OVERLAPPED ovl_read;
OVERLAPPED ovl_write;
/* File descriptor for sockets and serial port connections, and for
reading output from async subprocesses; otherwise -1. */
int fd;
/* PID for subprocess, either async or not; otherwise -1. */
int pid;
/* Handle to an event object that is signaled when a read operation
is completed, either successfully (in which case there're indeed
"characters available") or not. Used by sys_select to wait for
output from subprocesses or socket/serial connections. */
HANDLE char_avail;
/* Handle to an event that is signaled to wake up the reader thread
and tell it to try reading more output from a subprocess. */
HANDLE char_consumed;
/* Handle to the reader thread to read output from a subprocess or a
socket or a comm port. */
HANDLE thrd;
/* Handle to the console window of a subprocess. Used to forcibly
terminate it by sys_kill. */
HWND hwnd;
/* Information about subprocess returned by CreateProcess. Includes
handles to the subprocess and its primary thread, and the
corresponding process ID and thread ID numbers. The PID is
mirrored by the 'pid' member above. The process handle is used
to wait on it. */
PROCESS_INFORMATION procinfo;
/* Status of subprocess/connection and of reading its output. For
values, see the enumeration above. */
volatile int status;
/* Holds a single character read by _sys_read_ahead, when a
subprocess has some output ready. */
char chr;
/* Used for async read operations on serial comm ports. */
OVERLAPPED ovl_read;
/* Used for async write operations on serial comm ports. */
OVERLAPPED ovl_write;
} child_process;
#define MAXDESC FD_SETSIZE
......
......@@ -1857,7 +1857,7 @@ sys_select (int nfds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
}
else
{
/* Child process and socket input */
/* Child process and socket/comm port input. */
cp = fd_info[i].cp;
if (cp)
{
......@@ -1870,7 +1870,7 @@ sys_select (int nfds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
/* Wake up the reader thread for this process */
cp->status = STATUS_READ_READY;
if (!SetEvent (cp->char_consumed))
DebPrint (("nt_select.SetEvent failed with "
DebPrint (("sys_select.SetEvent failed with "
"%lu for fd %ld\n", GetLastError (), i));
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment