Commit Graph

5765 Commits

Author SHA1 Message Date
Christopher Faylor cf22fb91a1 * sigproc.cc (proc_terminate): Avoid releasing myself. 2012-03-28 17:28:27 +00:00
Corinna Vinschen 6680cb64f1 * times.cc (clock_setres): Set minperiod to period. 2012-03-28 07:38:35 +00:00
Corinna Vinschen cd24077999 * fhandler_process.cc (process_tab): Add entry for mountinfo.
(format_process_mountstuff): New function, derived from
	format_process_mounts.  Only open another user's user_info shared
	memory area if the process is owned by another user.  Actually
	access the opened shared user_info to get the right mount table.
	For other users, don't print remote cygdrive mount points.  Print
	mountinfo or mounts output depending on the bool mountinfo argument.
	(format_process_mounts): Just call format_process_mountstuff with
	mountinfo set to false.
	(format_process_mountinfo): Ditto with mountinfo set to true.

	* new-features.sgml (ov-new1.7.11): Add mountinfo.
2012-03-27 18:30:28 +00:00
Corinna Vinschen 4b6a427b0a * times.cc (clock_setres): Revert previous change. 2012-03-27 08:50:45 +00:00
Corinna Vinschen c2c7860fff * fhandler.h (class fhandler_dev_clipboard): Add fstat method.
* fhandler_clipboard.cc (cygcb_t): New type for Cygwin-specific
	clipboard format.
	(set_clipboard): Use new clipboard format to allow setting a timestamp.
	(fhandler_dev_clipboard::fstat): New method.  Read modification and
	access timestamp as well as length from clipboard data.
	(fhandler_dev_clipboard::read): Use new clipboard format.
2012-03-26 11:24:51 +00:00
Corinna Vinschen b54d64de05 * hires.h (hires_ms::dmsecs): Drop unused method.
* times.cc (JITTER): Remove.
	(gtod): Revert to process-local variable.
	(hires_ms::nsecs): Just return system time to disallow discrepancy with
	the OS.
	(hires_ms::resolution): Return coarsest timer value from OS.  Add
	comment to explain why.
	(clock_setres): Ditto.
2012-03-26 09:05:50 +00:00
Christopher Faylor d8a7ac6d18 * child_info.h: Reset magic number. 2012-03-21 17:23:57 +00:00
Christopher Faylor b7d95b5bb5 * child_info.h (child_info::postfork): Define new function.
* fork.cc (frok::parent): Call postfork to do all of the manipulation required
prior to calling pinfo::remember.
* pinfo.h (pinfo::set_rd_proc_pipe): Just set pinfo's rd_proc_pipe.  Don't
bother setting it to NULL.
* sigproc.cc (child_info_spawn::wait_for_myself): Call postfork to set up
myself for waiting.
* spawn.cc (child_info_spawn::worker): Avoid now-unnecessary global lock.
Consistently test mode rather than chtype when making wr_proc_pipe decisions.
Call postfork() to set up stuff prior to pinfo::remember.
2012-03-21 15:54:50 +00:00
Corinna Vinschen 5a519b88fa * cygtls.cc (well_known_dlls): Add advapi32.dll. 2012-03-21 10:42:24 +00:00
Christopher Faylor 6daf4afb11 * child_info.h: Reset magic number.
(child_info_spawn::wait_for_myself): Move function to sigproc.cc.
* pinfo.cc (is_toplevel_proc): Delete unneeded variable.
* sigproc.cc (child_info_spawn::wait_for_myself): Move function from header to
here.  Do all setup required to properly wait for top-level execed process to
exit.
* spawn.cc (child_info_spawn::worker): Attempt to properly handle _P_DETACH.
Set wr_proc_pipe if top-level process even when execing.  Just call
wait_for_myself() to...  wait for myself.  Don't call cleanup twice.
2012-03-21 05:23:13 +00:00
Christopher Faylor e102a69b3d * pinfo.cc (proc_waiter): Remove debugging. 2012-03-21 04:45:57 +00:00
Christopher Faylor 30fa154939 * dtable.cc (set_std_handle): Call SetStdHandle with NULL if fd is closed.
(dtable::release): "Close" standard handle if appropriate.
* dcrt0.cc (dll_crt0_0): Fix minor switch formatting problem.
* fork.cc (frok::parent): Make minor comment indentation change.
2012-03-20 23:13:40 +00:00
Corinna Vinschen c1c62a1368 * syscalls.cc (lseek): Fix debug output. 2012-03-20 20:39:32 +00:00
Corinna Vinschen 8ea7221511 * ntdll.h (SharedUserData): Add volatile qualifier. This fixes a
possible infinite loop in hires_ms::timeGetTime_ns.
2012-03-20 18:01:09 +00:00
Christopher Faylor 1fb6667f1c * child_info.h (CURR_CHILD_INFO_MAGIC): Reset.
(child_info::rd_proc_pipe): Declare new field.
(child_info::wr_proc_pipe): Ditto.
(child_info::prefork): Declare new function, derived from previous pinfo
version.
* dcrt0.cc (child_info_fork::handle_fork): Close previous wr_proc_pipe when
appropriate and assign new one from passed-in child_info block.
(child_info_spawn::handle_spawn): Assign our wr_proc_pipe handle from passed-in
child_info block.
* fork.cc (child_info::prefork): Define new function.
(frok::child): Clear rd_proc_pipe and wr_proc_pipe so they will not be closed
by the child_info destructor.
(frok::parent): Use child_info prefork handling, outside of retry loop.  Set
rd_proc_pipe in child's pinfo after successful CreateProcess.  Eliminate
postfork call.
* globals.cc (my_wr_proc_pipe): Define/declare new variable.
* pinfo.cc (pinfo::pending_rd_proc_pipe): Delete.
(pinfo::pending_wr_proc_pipe): Ditto.
(pinfo::prefork): Ditto.
(pinfo::postfork): Ditto.
(pinfo::postexec): Ditto.
(pinfo::wait): Assume that rd_proc_pipe is set up correctly prior to call.
(_pinfo::alert_parent): Replace "wr_proc_pipe" with "my_wr_proc_pipe".
* pinfo.h (_pinfo::_wr_proc_pipe): Delete declaration.
(_pinfo::set_rd_proc_pipe): Define new function.
(pinfo::pending_rd_proc_pipe): Delete declaration.
(pinfo::pending_wr_proc_pipe): Ditto.
(pinfo::prefork): Ditto.
(pinfo::postfork): Ditto.
(pinfo::postexec): Ditto.
(pinfo::wr_proc_pipe): Ditto.
* sigproc.cc (child_info::child_info): Clear rd_proc_pipe and wr_proc_pipe.
(child_info::cleanup): Close rd_proc_pipe and wr_proc_pipe if necessary.
(child_info_fork::child_info_fork): Set forker_finished to NULL by default.
(child_info_spawn::child_info_spawn): Use my_wr_proc_pipe rather than
myself->wr_proc_pipe.
(child_info::sync): Ditto.
(child_info_spawn::cleanup): Call child_info::cleanup.
* spawn.cc (child_info_spawn::worker): Remove call to myself.prefork().  Set
wr_proc_pipe when execing or set up new rd_proc_pipe/wr_proc_pipe via
child_info::prefork when spawning.  Remove call to pinfo::postexec.  Set
rd_proc_pipe in child pinfo when spawning.  Use my_wr_proc_pipe rather than
myself->wr_proc_pipe.  Remove call to postfork.
2012-03-20 15:07:30 +00:00
Christopher Faylor e9a6f9c625 * pinfo.cc (pinfo_init): Cosmetic change: unset "destroy" for myself.
(pinfo::wait): Change some comments.
(pinfo::prefork): Move a comment.
(pinfo::postfork): Set pending_*_pipe variables to NULL if closed.
(pinfo::postexec): Use right name when closing handle.
(_pinfo::alert_parent): Ditto.
* sigproc.h (hold_everything): Remove debugging label.
2012-03-20 02:08:14 +00:00
Christopher Faylor 33a6952b7f * cygserver_ipc.h: Include sigproc.h for signal_arrived declaration. 2012-03-19 20:18:18 +00:00
Christopher Faylor 374d215cca * cygprops.h: Use #pragma once.
* mkglobals_h: Ditto for generated globals.h file.
* globals.cc: Use specific NO_GLOBALS_H flag to control inclusion of globals.h.
* winsup.h: Honor NO_GLOBALS_H to control inclusion of globals.h.  Make
clear_procimptoken extern inline so that it is only defined when needed.
2012-03-19 17:49:40 +00:00
Corinna Vinschen d0d8b75350 * thread.cc (cancelable_wait): Don't malloc tbi, just make it a struct
on the stack to avoid memory leak.
2012-03-19 17:34:23 +00:00
Christopher Faylor d9492ab8d2 * pinfo.cc (pinfo::wait): Handle case where prefork was not called prior to
calling wait().  This is the case when we are reabsorbing processes after being
execed.
2012-03-19 16:51:30 +00:00
Christopher Faylor 4aeaedf961 * fork.cc (lock_signals): Move to sigproc.h.
(lock_pthread): Ditto.
(hold_everything): Ditto.
(frok::parent): Call myself.prefork() just before calling CreateProcess.  Call
myself.postfork () on function exit.
* pinfo.cc (pinfo::pending_rd_proc_pipe): Define.
(pinfo::pending_wr_proc_pipe): Ditto.
(_pinfo::dup_proc_pipe): Delete.
(pinfo::wait): Move pipe creation into pinfo::prefork.  Set pipe variables from
pending_*.
(_pinfo::sync_proc_pipe): Delete.
(_pinfo::proc_pipe_owner): Ditto.
(pinfo::prefork): Define new function.
(pinfo::postfork): Ditto.
(pinfo::postexec): Ditto.
(_pinfo::alert_parent): Remove obsolete call to sync_proc_pipe.
(_pinfo::dup_proc_pipe): Delete declaration.
(_pinfo::sync_proc_pipe): Ditto.
(pinfo::pending_rd_proc_pipe): Declare.
(pinfo::pending_wr_proc_pipe): Ditto.
(pinfo::prefork): Declare new function.
(pinfo::postfork): Ditto.
(pinfo::postexec): Ditto.
(pinfo::wr_proc_pipe): Define new wrapper function.
* sigproc.h: Include "sync.h".  Move locking functions from fork to here.
* spawn.cc (child_info_spawn::worker): Delete now-unneeded requirement to
record orig_wr_proc_pipe.  Call hold_everything prior to doing anything.  Call
myself.prefork() if spawning.  Replace wr_proc_pipe synchronization with call
to myself.postexec().  Call myself.postfork() if not execing.
* sync.h: Replace #ifdef wrapper with "#pragma once".
2012-03-16 20:20:29 +00:00
Corinna Vinschen b732246b87 * hookapi.cc (hook_or_detect_cygwin): Change condition when to use
importRVAMaxSize or importRVASize for the mapping size.  Make sure
	to map never more than the section size.  Change comments accordingly.
2012-03-13 17:15:28 +00:00
Corinna Vinschen d098f404d4 * include/netdb.h (h_errno): Add self-referencing macro and comment. 2012-03-13 09:13:02 +00:00
Christopher Faylor 3617fc8859 Christopher Faylor <me.cygwin2012@cgf.cx>
* fhandler.h (wait_return): Add overlapped_nullread.
* fhandler.cc (fhandler_base_overlapped::wait_overlapped): Detect zero-byte
read as a special case.
(fhandler_base_overlapped::raw_read): Keep looping when zero-byte read detected
without EOF.
(fhandler_base_overlapped::raw_write): Quiet gcc warning by adding
overlapped_nullread to switch statement even though it will never actually be
hit.
2012-03-12 21:29:36 +00:00
Christopher Faylor 6c95669d23 * dtable.cc (fh_alloc): Treat pc.dev as unsigned.
* fhandler_console.cc (fhandler_console::set_unit): Use lock always to avoid
races between competing cygwin processes running on the console.
2012-03-10 17:51:33 +00:00
Corinna Vinschen e928291c63 * hookapi.cc (find_first_notloaded_dll): Fix a compiler warning. 2012-03-09 12:42:14 +00:00
Corinna Vinschen acb3c3e564 * hookapi.cc (rvadelta): Add parameter to return maximum available
size from start of import RVA table to end of section.
	(find_first_notloaded_dll): Take big executables into account.  Use
	offset and size computation as in hook_or_detect_cygwin, just simpler.
	(hook_or_detect_cygwin): Return NULL rather than false througout.
	Change computation of required mapping size to take non-gcc compilers
	into account.  Explain the differences and what we do against them.
	Don't alloca buf if fn is NULL.  Never use buf if fn is NULL.

	Fix name and address in previous ChangeLog entry.
2012-03-09 12:37:37 +00:00
Corinna Vinschen 3e25449aa5 * net.cc (call_gaa): New thread function to call GetAdaptersAddresses.
(get_adapters_addresses): Call call_gaa.  If necessary, call it as
	child thread.  Explain why that's necessary.
2012-03-08 16:02:44 +00:00
Corinna Vinschen efb1f061f1 * path.cc (readlink): Avoid calling strlen() twice. 2012-03-08 14:56:18 +00:00
Corinna Vinschen 75543537a1 * Throughout, replace usage of w32api's min with MIN from sys/param.h. 2012-03-08 09:36:11 +00:00
Christopher Faylor ab79e06445 * pinfo.cc (_pinfo::dup_proc_pipe): Reorganize to provide more information for
failing condition.
(pinfo::wait): Pass name of function to dup_proc_pipe.  Eliminate error check
for dup_proc_pipe since it never actually returned an error.
* pinfo.h (_pinfo::dup_proc_pipe): Add an argument.
* spawn.cc (child_info_spawn::worker): Pass name of function to dup_proc_pipe.
2012-03-07 17:09:37 +00:00
Corinna Vinschen 1d928241e1 * glob.cc (MAXPATHLEN): Reinstantiate with a value of 8192. 2012-03-07 10:12:28 +00:00
Corinna Vinschen 86b87ffa9b * pinfo.cc (_pinfo::dup_proc_pipe): Fix order of arguments in debug
output.
2012-03-05 12:12:10 +00:00
Corinna Vinschen 292cd759a1 * init.cc (dll_entry): Move wincap.init call back from here...
* dcrt0.cc (dll_crt0_0): ...to here.
2012-03-05 12:09:22 +00:00
Corinna Vinschen a3904c655e * cygheap.h (enum fcwd_version_t): Move here from path.cc.
(class fcwd_access_t): Ditto.  Only declare methods.
	(class cwdstuff): Move fast_cwd_ptr and fast_cwd_version from shared
	DLL section here.
	* path.cc: Keep fcwd_access_t method definitions.
	(fcwd_access_t::fast_cwd_version): New method.
	(find_fast_cwd_pointer): Change comment.  Mention test on W8CP.
	(cwdstuff::init): Initialize fast_cwd_ptr and fast_cwd_version.
2012-03-05 11:50:25 +00:00
Corinna Vinschen 75effa37fc * dll_init.cc (dll_list::operator[]): Extend comment a bit more to
explain previous patch.
2012-03-05 10:27:44 +00:00
Corinna Vinschen f5b0d9d414 * dll_init.cc (dll_list::alloc): Compare linked DLLs by basename only.
Explain why.  Add code to check if a DLL with the same basename but
	different path is the same DLL.  Bail out if not.
	(in_load_after_fork): New static NO_COPY bool to allow to differ
	between linked and loaded DLL at fork.
	(dll_list::load_after_fork): Set in_load_after_fork accordingly.
	(dll_dllcrt0_1): Don't treat DLL as linked if in_load_after_fork is set.
	Drop test for in_forkee.
2012-03-04 16:47:45 +00:00
Corinna Vinschen 50124fc056 * dll_init.cc: Revert pathname changes from 2012-02-08.
(dll_list::operator[]): Add long comment to explain the misery.
	(dll_list::alloc): Skip long pathname prefix potentially returned by
	GetModuleFileNameW.
	* dll_init.h (dll_list::find_by_modname): Add back declaration.
2012-03-04 13:50:12 +00:00
Corinna Vinschen cd78c479f4 * winver.rc: Bump copyright date. 2012-03-04 13:19:21 +00:00
Christopher Faylor bd7c945953 * fhandler_console.cc (fhandler_console::dup): Only set ctty when we haven't
specifically called setsid.
* fhandler_tty.cc (fhandler_pty_slave::dup): Ditto.  Also add comment
documenting research into rxvt problem.
* fhandler_termios.cc (fhandler_termios::tcsetpgrp): Don't check specifically
for myself->ctty == -1.  Test for > 0 as that is the correct test.
(fhandler_termios::sigflush): Ditto.
2012-03-03 21:35:30 +00:00
Corinna Vinschen 56bed67046 * flock.cc (allow_others_to_sync): Reorder conditional expression to
check for DACL presence first, since otherwise dacl pointer value is
	undefined.  Add comment.
2012-03-02 17:20:11 +00:00
Corinna Vinschen b4ad7197fb * flock.cc (allow_others_to_sync): Use RtlGetDaclSecurityDescriptor
rather than accessing the SECURITY_DESCRIPTOR structure directly.
	Take no DACL and NULL DACL into account.
2012-03-02 17:07:17 +00:00
Corinna Vinschen 3118315f06 Fix typo in ChangeLog entry 2012-03-02 12:01:27 +00:00
Corinna Vinschen 109bc58303 * fhandler_console.cc (fhandler_console::input_tcsetattr): Revert
prevois patch.
	(fhandler_console::open_setup): Install Ctrl-C handler here, if this
	console is the controlling tty and the process hasn't been started by
	a Cygwin process.
2012-03-02 11:56:06 +00:00
Corinna Vinschen bfeed1643e * fhandler_console.cc (fhandler_console::input_tcsetattr): Set the
state of the Ctrl-C handler depending on the setting of
	ENABLE_PROCESSED_INPUT.
2012-03-02 10:17:16 +00:00
Eric Blake 580df3b6ae tcgetsid: fix return type
* include/sys/termios.h (tcgetsid): Fix return type.
* termios.cc (tcgetsid): Likewise.
* fhandler_termios.cc (fhandler_termios::tcgetsid): Likewise.
* fhandler.h (fhandler_base): Likewise.
* fhandler.cc (fhandler_base::tcgetsid): Likewise.
2012-02-28 14:03:03 +00:00
Corinna Vinschen d783d46cca * cygtls.cc (well_known_dlls): Add shlwapi.dll. 2012-02-28 09:44:14 +00:00
Corinna Vinschen 07a6b9dd22 * cygtls.cc (dll_cmp): New comparison function for bsearch.
(well_known_dlls): New array containing well-known DLLs.
	(_cygtls::call2): Add code for BLODA detection.
	* net.cc (fdsock): Ditto.
2012-02-27 11:55:27 +00:00
Corinna Vinschen 2c6df2a984 Drop "potentially" from latest ChangeLog entry. 2012-02-26 15:49:31 +00:00
Corinna Vinschen 97ad248f0c * environ.cc (enum settings): Add setbool. Rename justset to setdword
to avoid future problems.
	(struct parse_thing): Change all justset to setbool for bool variables.
	(parse_options): Add a case for setbool setting for bool variables
	since justset (now setdword) always writes a DWORD value, thus
	potentially overwriting adjacent memory locations.
	* external.cc (cygwin_internal): Drop extern declaration.
2012-02-26 15:47:43 +00:00