summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/sigproc.cc
Commit message (Collapse)AuthorAgeFilesLines
* * sigproc.h (sigframe::set): Accept a default frame pointer.Christopher Faylor2000-05-261-1/+1
| | | | * sigproc.cc (sig_send): Use passed in frame pointer, if appropriate.
* * dcrt0.cc (dll_crt0_1): Initialize mainthread stuff here before anything needsChristopher Faylor2000-05-181-4/+0
| | | | | | | | it. * sigproc.cc (sigproc_init): Move mainthread initialization out of here. * sigproc.h (sigthread): Add init() method. (sigframe): Don't try to initialize muto. * sync.cc: Undef WaitForSingleObject to avoid recursion.
* * path.cc (mount_info::cygdrive_posix_path): Don't add trailing slash ifChristopher Faylor2000-05-171-12/+34
| | | | | | | | | | | | | | | | | | | | | | | | | referring to something like c:\. * dcrt0.cc (dll_crt0_1): Move uinfo initialization prior to sig_send initialization to give signal thread a chance to finish. * debug.cc (WFSO): Move to sigproc.cc (WFMO): Ditto. * exceptions.cc (interruptible): Allocate slightly more space for directory just for paranoia's sake. (call_handler): Eliminate nonmain argument. Determine if main thread has set a frame pointer and use it if so. (sig_handle): Eliminate nonmain argument. * net.cc: Record frame information in appropriate routines throughout. * select.cc (select): Ditto. * sigproc.cc: Use sigthread structure to record mainthread id throughout. (sig_send): Record frame information for signal handler. (wait_sig): Reflect argument change in sig_handle. (WFSO): Move here and record frame information for signal handler. (WFMO): Ditto. * sigproc.h: Implement new "sigthread" class. Implement "sigframe" class for manipulating signal frame info. * thread.cc (__pthread_kill): Use standard _kill() function rather than calling sig_send directly. * winsup.h: Eliminate ebp element from signal_dispatch class.
* * environ.cc: Add TMPDIR to the list of environment variables which areChristopher Faylor2000-03-251-2/+5
| | | | | | converted to POSIX format. * sigproc.cc (proc_terminate): Don't attempt to delete when a muto pointer is NULL.
* Pipe changes throughout suggested by Eric Fifer <EFifer@sanwaint.com>Christopher Faylor2000-03-151-1/+1
| | | | | | | | | | | | | | | | | | | | | * debug.cc (threadname_init): Pass name of lock as arg 2 of new_muto. * malloc.cc (malloc_init): Ditto. * sigproc.cc (sigproc_init): Ditto. * exceptions.cc (events_init): Ditto. (call_handler): Eliminate special case for hExeced. Report locked thread in debugging output. * fhandler.cc (fhandker_pipe::fhandler_pipe): Propagate device type to base class. * fhandler.h (fhandler_pipe): Ditto. * hinfo.cc (hinfo::build_fhandler): Pass specific type of pipe to constructor. * spawn.cc (spawn_guts): Eliminate dependency on signal when waiting for subprocess. * strace.cc: Remove obsolete #ifdef. * sync.cc (muto::muto): Save the name of the muto. (muto:~muto): Also release the muto. * sync.h: Add a muto name field. * select.cc (peek_pipe): Avoid doing a PeekNamedPipe on the write end of a pipe.
* * fhandler_console.cc (fhandler_console::read): Don't even think about breakingChristopher Faylor2000-03-121-1/+0
| | | | | | | on interrupt if executing in a "cygwin" thread. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Streamline, simplify code. * sigproc.cc (sig_send): Remove debugging statement.
* * sigproc.cc: Set wait_sig priority to normal.Christopher Faylor2000-03-111-1/+1
|
* * sigproc.cc (wait_sig): Add addtional debugging output.Christopher Faylor2000-03-101-2/+2
|
* * environ.cc: Eliminate oldstack CYGWIN option.Christopher Faylor2000-03-091-11/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * exceptions.cc (sfta): Eliminate obsolete function. (sgmb): Eliminate obsolete function. (class stack_info): Remove MS method for walking the stack. (stack_info::init): Just initialize required fields. (stack_info::brute_force): Rename to stack_info::walk. (handle_exceptions): Pass derived frame pointer to sig_send. (interrupt_setup): Clear saved frame pointer here. (interrupt_on_return): thestack is no longer a pointer. (call_handler): Accept a flag to indicate when a signal was sent from other than the main thread. Use saved frame pointer for determining where to place signal handler call. (sig_handle): Accept "nonmain" argument. Pass it to call_handler. * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Change debugging output slightly. * (fhandler_tty_common::__release_output_mutex): Ditto. (fhandler_tty_slave::read): Fix a comment, remove a goto. * sigproc.cc (sig_send): Accept an optional frame pointer argument for use when suspending the main process. sigcomplete_main is an autoreset event now. Save frame pointer for non-main operation. (wait_sig): Make sigcomplete_main an autoreset event. Eliminate NOSIGQUEUE. Pass rc to sig_handle to signify if this was a nonmain process. * sigproc.h: Reflect change to sig_send argument. * syscalls.cc (swab): Eliminate swab function since it is now available in newlib. * winsup.h (signal_dispatch): Change CONTEXT cx to DWORD ebp.
* * sigproc.cc (sig_send): Eliminate sync_sig_send synchronization since itChristopher Faylor2000-03-071-5/+0
| | | | didn't seem to affect the "bash hangs" problem.
* Throughout use strace class in place of individual functions and variables.Christopher Faylor2000-03-071-1/+4
| | | | | | * cygwin.din: Eliminate _strace_wm. * sigproc.cc (wait_sig): Temporarily add more debugging output. * include/cygwin/version.h: Bump minor api to reflect export change.
* * exceptions.cc (call_handler): Streamline to use only one call toChristopher Faylor2000-03-051-7/+21
| | | | | | ResumeThread. * sigproc.cc (sig_send): Use a muto around the ReleaseSemaphore. Remove priority setting since it didn't solve anything.
* * sigproc.cc (sig_send): Temporarily set priority to highest while sending aChristopher Faylor2000-02-291-0/+5
| | | | signal.
* * pinfo.cc (set_myself): Add build date to strace output.Christopher Faylor2000-02-281-1/+2
| | | | | * sigproc.cc (proc_subproc): Only clear wait event when not attending to a signal.
* * dcrt0.cc (set_os_type): Record OS name string.Christopher Faylor2000-02-281-4/+7
| | | | | | | | | | | | | | | | | | (getprogname): Eliminate obsolete function. (dll_crt0_1): Move initial strace initialization output to set_myself. * exceptions.cc (interruptible): Add debugging output. (interrupt_setup): New function. (interrupt_now): Use interrupt_setup to set up common interrupt handler stuff. (interrupt_on_return): Ditto. (call_handler): Move signal_arrived arm and clear threads to region where signalled thread is suspended or suffer races. * pinfo.cc (set_myself): Output interesting information when strace is first initialized. Initialize progname here. * sigproc.cc (sig_dispatch_pending): Modify to ensure that flush signal are sent synchronously. * strace.cc (strace_vsprintf): Move code into strace program. * uname.cc (uname): Use 'osname' global to construct cygwin name + Windows type + version.
* * exceptions.cc (interruptible): Make a little more structured.Christopher Faylor2000-02-261-0/+1
| | | | | | | | | | | | | (call_handler): Allow signals to be sent even if signalled thread is stopped. Change order of signal_arrived arming/waiting threads clearing to eliminate a race. (reset_signal_arrived): New helper function. * malloc.cc (malloc_init): Use mutos so that signal handler can keep track of who owns the lock. (__malloc_lock): Ditto. (__malloc_unlock): Ditto. * sync.h (new_muto): Actually use a muto for the "buffer". * Makefile.in: Fix a dependency.
* * exceptions.cc (call_handler): Use new muto linked list to look for allChristopher Faylor2000-02-241-1/+4
| | | | | | | | potential mutos owned by suspended thread. Clear waiting threads while thread is stopped. (proc_subproc): Clarify debugging output. * sync.h (class muto): Add 'next' field. (new_muto): Keep linked list alive.
* Fix final round of gcc warnings relating to unused parameters.Christopher Faylor2000-02-241-9/+14
| | | | | | | | | | | | | | * debug.cc (iscygthread): New function. * debug.h: Declare it. * exceptions.cc (set_process_mask): Flush pending signals. (handle_sigsuspend): No need to flush pending signals. (call_handler): Refine previous tests of muto ownership. Only clear wait()'s when we have definitely responded to a signal. * fhandler_console.cc (fhandler_console::read): Don't set EINTR if executing in a "cygwin" thread. * sigproc.cc (proc_subproc): Use second argument to control whether CLEARWAIT actually sets "signalled" flag. * sync.h (muto): Add 'unstable' method.
* * exceptions.cc (interruptible): Change method for determining if something isChristopher Faylor2000-02-241-41/+38
| | | | | | | | | | | | | | interruptible. (call_handler): Avoid suspending a thread if it owns a mutex. Only set signal_arrived if the thread was actually interrupted. (events_init): Initialize module information needed by interruptible(). (sigdelayed): Don't call sig_dispatch_pending since it could screw up * init.cc (dll_entry): Record module handle of main for use by interruptible(). (proc_subproc): Reorganize handling of terminated child so that the bulk of the processing comes from the signal thread. (wait_sig): Force processing of waiting threads if SIGCHLD is not processed. * sync.cc (muto::release): Set tid == 0 after lock is released or signal processor will be confused.
* Respond to more g++ warnings relating to initializing structures.Christopher Faylor2000-02-231-1/+1
|
* Respond to a multitude of g++ warnings.Christopher Faylor2000-02-211-4/+4
|
* import winsup-2000-02-17 snapshotChristopher Faylor2000-02-171-0/+1345