summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin
Commit message (Collapse)AuthorAgeFilesLines
* * exceptions.cc (_threadinfo::interrupt_now): Avoid double call to sigdelayed.Christopher Faylor2004-01-033-3/+9
| | | | | * pinfo.cc (_pinfo::commune_send): Avoid inexplicable test which caused most pids to be shown as "<defunct>" on Win9x.
* add missing entryChristopher Faylor2004-01-031-0/+3
|
* 2004 stuff.Christopher Faylor2004-01-031-5675/+0
|
* 2004 stuffChristopher Faylor2004-01-036-5/+5680
|
* * cygheap.h (init_cygheap): Play more vfork shell games and move ctty_on_holdChristopher Faylor2004-01-0310-29/+45
| | | | | | | | | | | | | and open_fhs_on_hold (back) here. * dcrt0.cc (_dll_crt0): Just set impure_ptr_ptr here and let later initialization deal with tls. * dtable.cc (dtable::vfork_child_fixup): Move ctty considerations here. (dtable:vfork_parent_restore): And here. * fork.cc (vfork): Reflect change to ctty handling. * perthread.h (vfork_save::fhctty): Eliminate. * cygwin.din: Make more exports NOSIGFE that will never be interrupted by a signal. * init.cc (dll_entry): Set stackptr to NULL to catch problems earlier.
* * cygwin.din: Make crt0 functions NOSIGFE.Christopher Faylor2003-12-314-7/+12
| | | | | * include/cygwin/version.h: Gratuitous comment change. * lib/_cygwin_crt0_common.cc: Remove unneeded declaration.
* * cygtls.h (_threadinfo::stack): Increase stack size to accommodate nestedChristopher Faylor2003-12-304-54/+60
| | | | | | | | | signal handlers. Reorganize to cause potential SEGV on stack overflow. * sigproc.cc (no_signals_available): Check sendsig value rather than relying on obsolete sig_loop_wait. (sigproc_terminate): Ditto. (proc_can_be_signalled): Check sendsig value even for myself. * tlsoffsets.h: Regenerate.
* Move open_fhs from fhandler.h to cygheap.h for easier tracking. AccommodateChristopher Faylor2003-12-3011-49/+77
| | | | | | | | | | | | | | | | | | | | | this change throughout. * dtable.cc (dtable::add_archetype): Use correct count when iterating through *active* archetypes. * dtable.cc (dtable::fixup_after_exec): Close handle if close_on_exec and archetype exists since archetype currently does not set windows close-on-exec flag (FIXME). * fhandler_tty.cc (fhandler_tty_slave::open): Change debugging output slightly. (fhandler_tty_slave::close): Ditto. (fhandler_tty_slave::fixup_after_fork): Just report on inherited use counts since since archetype currently does not set windows close-on-exec flag (FIXME). * pinfo.cc (_pinfo::set_ctty): Change debugging output slightly. * cygheap.cc (cygheap_init): Remove open_fhs accommodation and use count reporting. * perthread.h (vfork_save::fhctty): New element. * perthread.h (vfork_save::open_fhs): New element. * fork.cc (vfork): Muck around with ctty and open_fhs stuff, both of which are now saved in the vfork_save structure.
* * fhandler.h (fhandler_tty_slave::archetype): Make public.Christopher Faylor2003-12-276-16/+47
| | | | | | | | | | | | | (report_tty_counts): New macro. Use throughout for reporting tty use counts. * dtable.cc (dtable::vfork_child_dup): Add debugging output for usecount increment. Increment open_fhs if appropriate. (dtable::vfork_parent_restore): "Close" artificially bumped ctty. (dtable::vfork_child_fixup): Close ctty since it was bumped prior to vfork. Save open_fhs around close since the closing of these handles has no effect on the console. * fhandler_tty.cc (fhandler_tty_slave::open): Reorganize calls to allow for easier tracking of usecount modification. (fhandler_tty_slave::open): Ditto.
* * syscalls.cc (close_all_files): Simplify logic around closing ctty.Christopher Faylor2003-12-272-9/+10
|
* * pinfo.cc (_pinfo::set_ctty): *Always* call close on opened ctty since itChristopher Faylor2003-12-272-2/+6
| | | | counts as an opened handle.
* * fhandler.h (fhandler_tty_master::fixup_after_fork): Remove declaration.Christopher Faylor2003-12-278-23/+34
| | | | | | | | | | | | | | (fhandler_tty_master::fixup_after_exec): Ditto. * fhandler_tty.cc (fhandler_tty_master::init): Fix so that children do not inherit master tty handles. (fhandler_tty_master::fixup_after_fork): Remove, since it was never used. (fhandler_tty_master::fixup_after_exec): Ditto. * pinfo.cc (_pinfo::set_ctty): Increment open_fhs when ctty is set. * cygheap.cc (cygheap_init): Ditto. * syscalls.cc (setsid): *Always* call close on opened ctty since the archetype is associated with the ctty and it counts as an opened handle. * tty.cc (tty::common_init): Don't protect input/output mutex since it confuses subsequent fork/execs when CYGWIN=tty.
* * exceptions.cc (try_to_debug): Fix off-by-one problem when resettingChristopher Faylor2003-12-274-5/+18
| | | | | | | environment variable after error_start detected. * fhandler_tty_slave.cc (fhandler_tty_slave::close): Clarify debug message. * syscalls.cc (setsid): Don't increment usecount here, since it will be automatically decremented on close.
* * exceptions.cc (setup_handler): Protect against a race.Christopher Faylor2003-12-261-0/+4
|
* * path.cc (mount_item::build_win32): Backslashify paths in non-managed case.Christopher Faylor2003-12-263-4/+11
|
* * dcrt0.cc (reent_data): Reluctantly resurrect.Christopher Faylor2003-12-266-20/+46
| | | | | | | | | | | | | | (__cygwin_user_data::impure_ptr): Ditto. (_dll_crt0): Reluctantly initialize _impure_ptr here. (initialize_main_tls): Eliminate local_clib initialization since it now happens in init_thread. * init.cc (dll_entry): Reluctantly remove code which set _impure_ptr to the main thread's local_clib. * perthread.h (reent_data): Remove obsolete declaration. * sigproc.cc (proc_subproc): Add more debugging output. (get_proc_lock): Ditto. *dcrt0.cc (dll_crt0_1): Allocate argv[0] via malloc since main thread could exit.
* * fork.cc (fork_child): After a pthread/fork, ensure that impure pointer stuffChristopher Faylor2003-12-232-1/+7
| | | | which resides in parent is propagated to child thread.
* add missing fileChristopher Faylor2003-12-231-0/+125
|
* * exceptions.cc (set_signal_mask): Redefine to not pass by address. ReportChristopher Faylor2003-12-2335-744/+513
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | calculated mask in debugging output. * sigproc.h (set_signal_mask): Reflect above change in declaration. * path.cc (mount_item::build_win32): Take path apart before feeding it to fnmunge. Throughout, change use of _reent_winsup()-> to _my_tls.locals. instead. Throughout, remove obsolete MT_SAFE/_CYG_THREAD_FAILSAFE considerations. Througout, add cygtls.h include. * Makefile.in (DLL_OFILES): Add cygtls.o. Add some more objects to the -fomit-frame-pointer list. * acconfig.h: Remove obsolete settings. * config.h.in: Ditto. * bsdlib.cc: Add cygtls.h include. * configure.in: Remove --enable-extra-threadsafe-checking. * configure: Regenerate. * cygtls.h (_local_storage): New struct renamed from _winsup_t (sic). (_threadinfo:local_clib): Add new field. (_threadinfo::locals): Ditto. (_threadinfo::init_thread): Accept second _reent * argument. (_threadinfo::call): Define as regparm. (CYGTLS_PADSIZE): Remove unnecessary slop. (_getreent): Define as a macro. * thread.h: Remove _CYG_THREAD_FAILSAFE and MT_SAFE stuff. (_winsup_t): Move to cygtls.h. (ResourceLocks::ResourceLocks): Eliminate empty constructor. (MTinterface::reents): Eliminate. (MTinterface::thread_self_key): Eliminate. (MTinterface::MTinterface): Eliminate. * dcrt0.cc: Include stdio.h for _impure_ptr initialization. (do_global_ctors): Remove run_ctors_p (sic) considerations. Don't call atexit here. (__main): Initialize destructors for user here. (dll_crt0_1): Accept a dummy argument. Don't call init_thread here. Don't set _impure_ptr here. Call do_global_ctors after more things have been initialized. (_dll_crt0): Define zeros buffer as max of needed size of CYGTLS_PADSIZE so that it can be used for two purposes while minimizing stack usage. Initialize _impure_ptr specifically, for speed. Call dll_crt0_1 with buffer argument. (cygwin_dll_init): Call dll_crt0_1 with dummy argument. * dtable.cc (dtable::find_unused_handle): Remove call to AssertResourceOwner. * exceptions.cc: Move _threadinfo stuff to new file. * cygtls.cc: New file. * gentls_offsets: Accommodate increasing complexity of cygtls.h. * hires.h (hires_base::~hires_base): Remove. * init.cc (dll_entry): Remove setting of reents. * thread.cc: Remove syslog.h include. (__getreent): Simplify to use _my_tls. (_reent_winsup): Delete. (AssertResourceOwner): Delete. (MTinterface::Init): Remove setting of _clib and _winsup, with all that entails. (MTinterface::fixup_after_fork): Ditto. (pthread::thread_init_wrapper): Ditto. Also remove call to set_tls_self_pointer. (pthread::set_tls_self_pointer): Eliminate. (pthread::get_tls_self_pointer): Just return _my_tls.tid; (__reent_t::init_clib): Eliminate. * tlsoffsets.h: Regenerate.
* * sigproc.cc (proc_subproc): Simplify code to just remove all zombies ifChristopher Faylor2003-12-182-6/+10
| | | | SIGCHLD == SIG_IGN.
* * pinfo.h (pinfo::operator ==): Add a way to check for _pinfo types.Christopher Faylor2003-12-175-8/+20
| | | | | * sigproc.cc (proc_subproc): Ensure that zombie is removed when SIGCHLD == SIG_IGN but still allow wait()ing threads to wake up.
* * exceptions.cc (set_signal_mask): Report on input argument rather thanChristopher Faylor2003-12-166-9/+47
| | | | | | | | | | | | | getsigmask. * fhandler.h (fhandler_base): Make friends with close_all_files. * pinfo.cc (_pinfo::set_ctty): Add more debugging. * sigproc.cc (proc_can_be_signalled): Detect state when signal handler thread is gone in target process as an EPERM situation. Set errno to ESRCH if process doesn't exist. (sigproc_terminate): Set sendsig to illegal value when closed. (sig_send): Rely on proc_can_be_signalled setting the proper errno. * syscalls.cc (close_all_files): Detect when all ttys are closed prior to calling close_all_files. The ctty needs to be closed explicitly in this case.
* * include/cygwin/ipc.h: Include sys/types.h.Corinna Vinschen2003-12-162-0/+6
|
* * thread.cc (pthread::init_main_thread): Make sure that the main thread hasChristopher Faylor2003-12-152-3/+10
| | | | | valid handles. (pthread::create_cancel_event): Fix error message.
* add out-of-date notice.Christopher Faylor2003-12-151-1/+2
|
* Add missing ChangeLog entry.Christopher Faylor2003-12-151-0/+2
|
* * winsup.h (access_worker): Declare with added fhandler_base parameter.Christopher Faylor2003-12-156-6/+17
| | | | | | | | | * syscalls.cc (access_worker): Accommodate extra fhandler_base argument. Use it instead of stat_worker to determine stat information, when appropriate. * fhandler.cc (fhandler_base::device_access_denied): Pass fhandler pointer to access_worker so that it can use the proper method for determining stat information. * fhandler_disk_file.cc (fhandler_disk_file::opendir): Ditto.
* white spaceChristopher Faylor2003-12-151-1/+1
|
* Remove erroneous entry.Christopher Faylor2003-12-151-1/+0
|
* * exceptions.cc (ctrl_c_handler): Remove this thread from the signal handlerChristopher Faylor2003-12-142-0/+6
| | | | chain.
* * cygthread.cc (cygthread::stub): Revert previous change and again subsumeChristopher Faylor2003-12-1411-54/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cygthread::stub2. Just return from function now since ExitThread is guaranteed by automatic _threadinfo wrapper. Define as per ThreadProc convention. (cygthread::stub2): Remove. (cygthread::simplestub): Perform similar operations to cygthread::stub. (cygthread::simplestub2): Remove. * cygthread.h (cygthread::stub): Declare as per ThreadProc convention. (cygthread::stub2): Remove declaration. (cygthread::simplestub): Declare as per ThreadProc convention. (cygthread::simplestub2): Remove declaration. * cygtls.h (_threadinfo::call): Define first argument as per ThreadProc convention. (_threadinfo::call2): Ditto. (_tlsbase): Define as char * pointer. (_tlstop): New definition. (_main_tls): Define here. * dcrt0.cc (alloc_stack): Revert previous change which called init_thread since information would be overwritten by fork later anyway. (dll_crt0_1): Use _tlsbase and _tlstop for setting stack bottom, top. * exceptions.cc: Move _main_tls declaration to cygtls.h. (_threadinfo::call): Define first argument as per ThreadProc convention. (_threadinfo::call2): Call ExitThread with thread function return value. (_threadinfo::init_thread): Don't initialize cygtls to zero if input arg is NULL. * fork.cc (fork_child): Reset _main_tls here. Reinitialize parts of _my_tls after copying data from parent. * init.cc (threadfunc_fe): New function. Front-end for all threads created in cygwin processes. (munge_threadfunc): New function. (dll_entry): Call munge_threadfunc to force the call of a thread wrapper. * thread.cc (pthread::thread_init_wrapper): Perform similar operations to cygthread::stub. (pthread::thread_init_wrapper2): Remove. * thread.h (pthread::thread_init_wrapper): Declare as per ThreadProc convention. (pthread::thread_init_wrapper2): Remove declaration. * window.cc (Winmain): Just return from function now since ExitThread is guaranteed by automatic _threadinfo wrapper.
* * dtable.cc (dtable::delete_archetype): Add debugging.Christopher Faylor2003-12-123-10/+32
| | | | | | | | | | | | | | (dtable::release): Move archetype deletion here. (dtable::vfork_child_dup): Increment ctty usecount to catch later close_all_files case in parent/child. (dtable::vfork_child_fixup): Avoid using cygheap->foo where this should really be using local references. Call close on archetyped handles since the handles haven't had the noninherit flag set. * fhandler_tty.cc (fhandler_tty_slave::close): Remove archetype deletion code. Add defensive error message when DEBUGGING. (fhandler_tty_common::set_close_on_exec): Use more robust method for checking whether to set handles into noninherit if there is an archetype associated with the fhandler.
* * dcrt0.cc (alloc_stack): Move _main_tls if stack is relocated.Christopher Faylor2003-12-122-13/+21
|
* * miscfuncs.cc (low_priority_sleep): Correct thinko which caused SetPriority toChristopher Faylor2003-12-124-15/+34
| | | | | | | | | be called unnecessarily. * thread.cc (pthread::init_main_thread): Call new create_cancel_event function. (pthread::precreate): Ditto. (pthread::postcreate): Remove cancel_event creation. (pthread::create_cancel_event): Define new function. * thread.h (pthread::create_cancel_event): Declare new function.
* * fhandler_serial.cc (fhandler_serial::tcflush): Simplify. RemoveCorinna Vinschen2003-12-112-14/+28
| | | | read polling loop to avoid a hang with streaming devices.
* * pinfo.cc (_pinfo::set_ctty): Correct stupid typo.Christopher Faylor2003-12-112-1/+5
|
* * cygheap.h (cygheap_types): Add HEAP_ARCHETYPES.Christopher Faylor2003-12-1111-44/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (init_cheap::ctty): Change to pointer. * dtable.h (dtable::find_archetype): Declare new function. (dtable::add_archetype): Declare new function. (dtable::delete_archetype): Declare new function. (dtable::narchetypes): Declare. (dtable::farchetypes): Declare. (dtable::initial_archetype_size): Declare. (dtable::dtable): Initialize new fields. (dtable::initial_archetype_size): Declare. * dtable.cc (dtable::find_archetype): Define new function. (dtable::add_archetype): Define new function. (dtable::delete_archetype): Define new function. (dtable::initial_archetype_size): Define. * fhandler.h (fhandler_base::archetype): Declare. (fhandler_base::usecount): Declare. * fhandler.cc (fhandler_base::fhandler_base): Initialize new fields. * fhandler_console.cc (fhandler_console::get_tty_stuff): Pass NULL to third argument of set_ctty. * fhandler_tty.cc (fhandler_tty_slave::open): Accommodate new archetype method to create only one instance of a tty. (fhandler_tty_slave::close): Don't close handles unless archetype usecount is zero. When that happens, close archetype too. (fhandler_tty_slave::dup): Just copy archetype. Set use count appropriately. Set ctty, if appropriate. (fhandler_tty_common::dup): Remove slave considerations. (fhandler_tty_common::set_close_on_exec): Remove cygheap->ctty considerations. * pinfo.cc (_pinfo::set_ctty): Accommodate new archetype methods. * pinfo.h (_pinfo::set_ctty): Make third argument explicit. * syscalls.cc (close_all_files): Decrement controlling tty use count before closing all handles to allow controlling tty to be closed. Remove previous controlling tty considerations.
* remove debug outputChristopher Faylor2003-12-101-1/+0
|
* * fhandler_tty.cc (fhandler_tty_common::dup): Just copy cygheap->ctty to childChristopher Faylor2003-12-105-22/+40
| | | | | | | | | | | | | if duping the current ctty. (fhandler_tty_common::close): Move debugging statement earlier in function. (fhandler_tty_slave::close): Return success when closing ctty. * syscalls.cc (close_all_files): Avoid calling fhandler_tty_slave close method so that open_fhs will not be decremented when closing cygheap ctty. (setsid): Ditto. * dcrt0.cc (do_exit): Reorganize to avoid leaving a critical section active after vfork. * fhandler.h (fhandler_tty_slave::get_unit): Remove regparm parameter since it can't work in a virtualized function.
* * pinfo.cc (_pinfo::set_ctty): Don't copy over existing ctty if it is active.Christopher Faylor2003-12-092-4/+6
|
* * thread.cc (pthread::precreate): Delete duplicate setting of cancel_event.Christopher Faylor2003-12-082-9/+5
|
* * fhandler.h (fhandler_tty_slave::ttyname): Use name from pc since it isChristopher Faylor2003-12-084-1/+23
| | | | | | | | | | | guaranteed to be accurate. * fhandler_tty.cc (fhandler_tty_slave::open): Increment open_fhs appropriate when copying ctty. (fhandler_tty_slave::close): Remove special case handling for exit_state. Use ctty < 0 check instead. (fhandler_tty_common::close): Set io_handle to NULL after closing. * syscalls.cc (close_all_files): Specifically close cygheap->ctty, if appropriate.
* * wait.cc (wait4): Move sawsig initialization inside loop.Christopher Faylor2003-12-081-0/+1
|
* * spawn.cc (spawn_guts): Change type back to 'int' after erroneous changeChristopher Faylor2003-12-084-14/+18
| | | | below.
* Change use of BOOL, TRUE, FALSE to bool, true, false, as appropriate,Christopher Faylor2003-12-0741-384/+425
| | | | | | | | | | | | | | | | | | | | | | | | | | | | throughout. * tty.cc (tty::common_init): Remove call to SetKernelObjectSecurity and edit some comments. * cygheap.h (init_cygheap::ctty): Add new element. * devices.in (device::parse): Remove special handling for /dev/tty. * devices.cc: Regenerate. * dtable.cc (build_fh_pc): Don't reset /dev/tty device. Let the device opener do that. * fhandler_termios.cc (tty_min::set_ctty): Redefine to _pinfo class. * fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Avoid setting noninherit flag for ctty. * tty.h: Move BOOLs to bools. (tty_min::set_ctty): Redeclare to _pinfo class. * pinfo.cc (_pinfo::set_ctty): Define new function based on tty_min::set_ctty. Change first argument from tty number to tty_min class. * pinfo.h (_pinfo::set_ctty): Declare. * fhandler_console.cc (fhandler_console::get_tty_stuff): Reflect move of set_ctty to _pinfo class. * fhandler_tty.cc (fhandler_tty_slave::open): Treat FH_TTY specially. Use saved cygheap value if it exists. Otherwise convert to real device and save on first time open. (fhandler_tty_common::dup): Potentially set controlling tty if duping a slave tty. * syscalls.cc (setsid): Close controlling tty in cygheap. * tty.cc: Change some BOOLs to bools.
* * syscalls.cc (locked_append): New.Corinna Vinschen2003-12-072-29/+34
| | | | | (updwtmp): Remove mutex code and call locked_append. (pututline): Ditto.
* * exceptions.cc (_threadinfo::remove): Avoid a linked list walk.Christopher Faylor2003-12-072-9/+11
|
* * cygtls.h (_threadinfo::find_tls): New function.Christopher Faylor2003-12-073-2/+11
| | | | | * exceptions.cc (_threadinfo::find_tls): Rename from find_tls. Use critical section to protect access to linked list.
* * exceptions.cc (_threadinfo::remove): Avoid returning without unlockingChristopher Faylor2003-12-072-7/+14
| | | | critical section in the (hopefully impossible) case of an unrecognized thread.
* * cygtls.h: Add more "don't parse this" guards.Christopher Faylor2003-12-067-12/+56
| | | | | | | | | | | | | | | | | | | (_threadinfo::init_thread): Rename from 'init'. (_threadinfo::init): Declare new function. (_threadinfo::protect_linked_list): Declare new critical section. * dcrt0.cc (dll_crt0_1): Call init_thread to initialize thread stuff. (_dll_crt0): Call _threadinfo::init prior to invoking dll_crt0_1. * exceptions.cc (_threadinfo::init_thread): Rename from 'init'. (_threadinfo::init): Define new function. Protect linked list manipulation with new critical section. (_threadinfo::call): Reflect function name change. (_threadinfo::remove): Protect linked list manipulation with new critical section * gentls_offsets: Rework to allow multi-line "don't parse this" protection. * init.cc (dll_entry): Don't remove threads info stuff here since the remove function uses a critical section which can't be used during thread creation or destruction. * thread.cc (pthread::exit): Call _threadinfo remove function here.