84c7d40932
the changes below. Redefine process structure to avoid a fixed size table. Redefine pinfo/_pinfo classes. Use these throughout. * dcrt0.cc (dll_crt0_1): Accomodate set_myself argument change. (__api_fatal): Accomodate _pinfo::record_death argument change. * exceptions.cc (really_exit): Ditto. (sig_handle_tty_stop): Use pinfo constructor to access process info. (events_init): Don't create pinfo_mutex since it is no longer required. * external.cc (fillout_pinfo): Use winpids class to iterate over all system pids. (cygwin_internal): lock_pinfo_for_update and unlock_pinfo are now noops. * fhandler_termios.cc (fhandler_termios::set_ctty): Use pinfo constructor to access process info. * fork.cc (fork): Reorganize to initialize child info after the child has started since that is when we know the child's winpid, which is necessary to allocate the pinfo shared memory. * mmap.cc (recreate_mmaps_after_fork): Change arg type to _pinfo. * pinfo.cc: Rename pinfo methods to _pinfo throughout. Eliminate pinfo_list stuff. (set_myself): Accept a pid argument now. Call pinfo initializer to initialize myself. Detect when this is an "execed" process and create an "indirect" pid block. (pinfo_init): Accomodate set_myself arg change. (procinfo): Remove. (pinfo::lock_pinfo): Remove. (pinfo::unlock_pinfo): Remove. (pinfo::init): New method. Allocates shared memory space for process pinfo structure. (pinfo::record_death): Don't call locking functions. (cygwin_winpid_to_pid): Simplify by using new pinfo constructor. (EnumProcessesW95): New function for iterating over processes on Windows 95. (winpids::winpids): New constructor for winpids class. Sets up a list of process ids. (enum_init): Initialize w95/wnt pid enumerators. * shared.cc (shared-info::initialize): Remove pid initialization. * shared.h: Move pinfo stuff into pinfo.h. (class shared_info): Remove pinfo_list element. * signal.cc (kill_worker): Use pinfo constructor to access process info. (kill_pgrp): Ditto. Use winpids methods to access list of processes. * sigproc.cc: Throughout, modify to use _pinfo where appropriate. (proc_exists (pid_t)): New function. Determines if a process exists based on the pid. (proc_exists (_pinfo *p): Use new proc_exists function above. (proc_subproc): Copy pinfo stuff around rather than _pinfo pointers. Try to be careful about releasing shared memory when we don't need it anymore. Remove pinfo locks. (remove_zombies): Remove pinfo memory when zombie is going away. * sigproc.h: Reflect _pinfo/pinfo changes in sigproc.cc. * spawn.cc (spawn_guts): Eliminate pinfo *child argument. Reorganize to only initialize child pinfo after process has been started and we know the windows pid. (_spawnve): Reflect spawn_guts changes. * syscalls.cc (setpgid): Use pinfo constructor to access process info. (getpgid): Ditto. (internal_getlogin): Use _pinfo. * winsup.h: Eliminate pinfo_mutex. Eliminate spawn_guts declaration since it is static now. Reflect set_myself argument change. * include/sys/cygwin.h: Add some PID_* enums to accomodate new pinfo stuff. * include/cygwin/version.h: Update minor version for cygdrive changes below. |
||
---|---|---|
.. | ||
config/i386 | ||
include | ||
lib | ||
regexp | ||
testsuite | ||
acconfig.h | ||
ansi.sgml | ||
assert.cc | ||
autoload.h | ||
binmode.c | ||
ChangeLog | ||
ChangeLog-1995 | ||
ChangeLog-1996 | ||
ChangeLog-1997 | ||
ChangeLog-1998 | ||
ChangeLog-1999 | ||
config.h.in | ||
configure | ||
configure.in | ||
cygrun.c | ||
CYGWIN_LICENSE | ||
cygwin.din | ||
dcrt0.cc | ||
debug.cc | ||
debug.h | ||
delqueue.cc | ||
dir.cc | ||
dlfcn.cc | ||
dll_init.cc | ||
dll_init.h | ||
dll_init.sgml | ||
dtable.cc | ||
dtable.sgml | ||
environ.cc | ||
errno.cc | ||
exceptions.cc | ||
exec.cc | ||
external.cc | ||
external.sgml | ||
fcntl.cc | ||
fhandler_console.cc | ||
fhandler_floppy.cc | ||
fhandler_random.cc | ||
fhandler_raw.cc | ||
fhandler_serial.cc | ||
fhandler_tape.cc | ||
fhandler_termios.cc | ||
fhandler_tty.cc | ||
fhandler_windows.cc | ||
fhandler_zero.cc | ||
fhandler.cc | ||
fhandler.h | ||
fork.cc | ||
gcrt0.c | ||
glob.c | ||
gmon.c | ||
gmon.h | ||
grp.cc | ||
heap.cc | ||
init.cc | ||
ioctl.cc | ||
localtime.c | ||
Makefile.in | ||
malloc_wrapper.cc | ||
mcount.c | ||
misc-std.sgml | ||
mkvers.sh | ||
mmap.cc | ||
net.cc | ||
ntea.cc | ||
passwd.cc | ||
path.cc | ||
path.h | ||
path.sgml | ||
perthread.h | ||
pinfo.cc | ||
pinfo.h | ||
pipe.cc | ||
poll.cc | ||
posix.sgml | ||
profil.c | ||
profil.h | ||
pthread.cc | ||
registry.cc | ||
resource.cc | ||
ROADMAP | ||
scandir.cc | ||
security.cc | ||
select.cc | ||
select.h | ||
shared.cc | ||
shared.h | ||
shared.sgml | ||
signal.cc | ||
sigproc.cc | ||
sigproc.h | ||
smallprint.c | ||
spawn.cc | ||
strace.cc | ||
strsep.cc | ||
sync.cc | ||
sync.h | ||
syscalls.cc | ||
sysconf.cc | ||
syslog.cc | ||
termios.cc | ||
test.c | ||
textmode.c | ||
thread.cc | ||
thread.h | ||
times.cc | ||
tty.cc | ||
tz_posixrules.h | ||
uinfo.cc | ||
uname.cc | ||
wait.cc | ||
window.cc | ||
winsup.h | ||
winver.rc |