Robert Collins
38102913c8
Mon Oct 1 00:34:00 2001 Robert Collins <rbtcollins@hotmail.com>
...
* thread.cc (pthread_cond_dowait): Hopefully eliminate a race on multiple thread
wakeups.
2001-09-30 14:39:55 +00:00
Robert Collins
86336f4fea
Sat Sep 29 18:26:00 2001 Robert Collins <rbtcollins@hotmail.com>
...
* pthread.cc (pthread_cond_timedwait): Deleted - exported from thread.cc.
(pthread_cond_wait): Deleted - exported from thread.cc.
* thread.cc (pthread_cond::BroadCast): Update to use the new syntax for
verifyable_object_isvalid ().
(pthread_cond::Signal): Ditto. Also attempt to fix the lost signal race
with pthread_cond::TimedWait().
(check_valid_pointer): Change definiton to void const *.
(verifyable_object_isvalid): Add new parameter to allow identification of
static initializers, and return a enum rather than magic numbers.
(__pthread_create): Ditto.
(__pthread_cleanup): Ditto.
(__pthread_attr_init): Ditto.
(__pthread_attr_getinheritsched): Ditto.
(__pthread_attr_getschedparam): Ditto.
(__pthread_attr_getschedpolicy): Ditto.
(__pthread_attr_getscope): Ditto.
(__pthread_attr_setdetachstate): Ditto.
(__pthread_attr_getdetachstate): Ditto.
(__pthread_attr_setinheritsched): Ditto.
(__pthread_attr_setschedparam): Ditto.
(__pthread_attr_setschedpolicy): Ditto.
(__pthread_attr_setscope): Ditto.
(__pthread_attr_setstacksize): Ditto.
(__pthread_attr_getstacksize): Ditto.
(__pthread_attr_destroy): Ditto.
(__pthread_join): Ditto.
(__pthread_detach): Ditto.
(__pthread_suspend): Ditto.
(__pthread_continue): Ditto.
(__pthread_getschedparam): Ditto.
(__pthread_getsequence_np): Ditto.
(__pthread_key_create): Ditto.
(__pthread_key_delete): Ditto.
(__pthread_setschedparam): Ditto.
(__pthread_setspecific): Ditto.
(__pthread_getspecific): Ditto.
(__pthread_cond_destroy): Ditto.
(__pthread_cond_init): Ditto.
(__pthread_cond_broadcast): Ditto.
(__pthread_cond_signal): Ditto.
(__pthread_condattr_init): Ditto.
(__pthread_condattr_getpshared): Ditto.
(__pthread_condattr_setpshared): Ditto.
(__pthread_condattr_destroy): Ditto.
(__pthread_kill): Ditto.
(__pthread_mutex_init): Ditto.
(__pthread_mutex_getprioceiling): Ditto.
(__pthread_mutex_lock): Ditto.
(__pthread_mutex_trylock): Ditto.
(__pthread_mutex_unlock): Ditto.
(__pthread_mutex_destroy): Ditto.
(__pthread_mutex_setprioceiling): Ditto.
(__pthread_mutexattr_getprotocol): Ditto.
(__pthread_mutexattr_getpshared): Ditto.
(__pthread_mutexattr_gettype): Ditto.
(__pthread_mutexattr_init): Ditto.
(__pthread_mutexattr_destroy): Ditto.
(__pthread_mutexattr_setprotocol): Ditto.
(__pthread_mutexattr_setprioceiling): Ditto.
(__pthread_mutexattr_getprioceiling): Ditto.
(__pthread_mutexattr_setpshared): Ditto.
(__pthread_mutexattr_settype): Ditto.
(__sem_init): Ditto.
(__sem_destroy): Ditto.
(__sem_wait): Ditto.
(__sem_trywait): Ditto.
(__sem_post): Ditto.
(__pthread_cond_dowait): New function, contains core logic from
__pthread_cond_wait and __pthread_cond_timedwait. Decrement (*cond)->waiting
before reentering the cond access mutex to allow detection of lost signals.
(__pthread_cond_timedwait): Rename to pthread_cond_timedwait, and call
__pthread_cond_dowait after calculating the wait length.
(__pthread_cond_wait): Rename to pthread_cond_wait, and call
__pthread_cond_dowait.
* thread.h: New enum for use with verifyable_object_isvalid.
Remove the extern exporting of __pthread_cond_timedwait and __pthread_cond_wait.
2001-09-29 09:01:01 +00:00
Christopher Faylor
a1dc0932f4
* pipe.cc (fhandler_pipe::fixup_after_fork): New method.
...
* fhandler.h (fhandler_pipe::fixup_after_fork): Declare new method.
2001-09-29 01:23:06 +00:00
Christopher Faylor
1795c53d86
* passwd.cc (read_etc_passwd): Bother with unlocking when not in cygwin
...
initialization.
* grp.cc (read_etc_group): Ditto.
2001-09-28 07:23:18 +00:00
Christopher Faylor
8b51edbfa6
* passwd.cc (read_etc_passwd): Don't bother with locking when
...
in cygwin initialization since there is only one thread.
* grp.cc (read_etc_group): Ditto.
2001-09-28 07:01:22 +00:00
Christopher Faylor
9c61aed684
* pipe.cc (fhandler_pipe::hit_eof): Return correct value when there is no EOF
...
event available.
2001-09-28 06:06:45 +00:00
Corinna Vinschen
f4f30cf140
* mmap.cc (mmap): Move setting the access after evaluating fd.
...
Remove useless comment. Explain copy-on-write problem of 9x
more detailed. Don't set access to FILE_MAP_COPY on 9x only
when anonymous mapping is requested.
(fhandler_disk_file::mmap): Remove useless device check.
Add debug output.
2001-09-27 22:39:50 +00:00
Robert Collins
c814d12f04
Thu Sep 27 22:00:00 2001 Robert Collins rbtcollins@itdomain.com.au
...
* Makefile.in: Only stamp winver_stamp on success.
2001-09-27 21:35:16 +00:00
Christopher Faylor
5fe74396e9
* select.cc (peek_pipe): REALLY only grab mutex when we actually got something
...
from the pipe.
2001-09-26 22:24:09 +00:00
Robert Collins
c918cf9421
Tue Sep 25 21:25:00 2001 Robert Collins <rbtcollins@hotmail.com>
...
* thread.cc (pthread_cond::BroadCast): Use address with verifyable_object_isvalid().
(pthread_cond::Signal): Ditto.
(__pthread_create): Ditto.
(__pthread_cleanup): Ditto.
(__pthread_attr_init): Ditto.
(__pthread_attr_getinheritsched): Ditto.
(__pthread_attr_getschedparam): Ditto.
(__pthread_attr_getschedpolicy): Ditto.
(__pthread_attr_getscope): Ditto.
(__pthread_attr_setdetachstate): Ditto.
(__pthread_attr_getdetachstate): Ditto.
(__pthread_attr_setinheritsched): Ditto.
(__pthread_attr_setschedparam): Ditto.
(__pthread_attr_setschedpolicy): Ditto.
(__pthread_attr_setscope): Ditto.
(__pthread_attr_setstacksize): Ditto.
(__pthread_attr_getstacksize): Ditto.
(__pthread_attr_destroy): Ditto.
(__pthread_join): Ditto.
(__pthread_detach): Ditto.
(__pthread_suspend): Ditto.
(__pthread_continue): Ditto.
(__pthread_getschedparam): Ditto.
(__pthread_getsequence_np): Ditto.
(__pthread_key_create): Ditto.
(__pthread_key_delete): Ditto.
(__pthread_setschedparam): Ditto.
(__pthread_setspecific): Ditto.
(__pthread_getspecific): Ditto.
(__pthread_cond_destroy): Ditto.
(__pthread_cond_init): Ditto.
(__pthread_cond_broadcast): Ditto.
(__pthread_cond_signal): Ditto.
(__pthread_cond_timedwait): Ditto.
(__pthread_cond_wait): Ditto.
(__pthread_condattr_init): Ditto.
(__pthread_condattr_getpshared): Ditto.
(__pthread_condattr_setpshared): Ditto.
(__pthread_condattr_destroy): Ditto.
(__pthread_kill): Ditto.
(__pthread_mutex_init): Ditto.
(__pthread_mutex_getprioceiling): Ditto.
(__pthread_mutex_lock): Ditto.
(__pthread_mutex_trylock): Ditto.
(__pthread_mutex_unlock): Ditto.
(__pthread_mutex_destroy): Ditto.
(__pthread_mutex_setprioceiling): Ditto.
(__pthread_mutexattr_getprotocol): Ditto.
(__pthread_mutexattr_getpshared): Ditto.
(__pthread_mutexattr_gettype): Ditto.
(__pthread_mutexattr_init): Ditto.
(__pthread_mutexattr_destroy): Ditto.
(__pthread_mutexattr_setprotocol): Ditto.
(__pthread_mutexattr_setprioceiling): Ditto.
(__pthread_mutexattr_getprioceiling): Ditto.
(__pthread_mutexattr_setpshared): Ditto.
(__pthread_mutexattr_settype): Ditto.
(__sem_init): Ditto.
(__sem_destroy): Ditto.
(__sem_wait): Ditto.
(__sem_trywait): Ditto.
(__sem_post): Ditto.
(verifyable_object_isvalid): Recieve a pointer to a pointer for verification.
(__pthread_mutexattr_getprotocol): Fix typo in magic number.
(__pthread_mutexattr_getpshared): Ditto.
(__pthread_mutexattr_gettype): Ditto.
* thread.h (verifyable_object_isvalid): Change prototype to recieve a pointer to a
pointer for verification.
* include/pthread.h: Fix typo for __cleanup_routine_type typedef. (Contrib from Net).
2001-09-25 11:45:26 +00:00
Christopher Faylor
79776fc2cc
* select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly
...
call peek_pipe.
2001-09-25 06:19:10 +00:00
Christopher Faylor
3263838430
* select.cc (peek_pipe): Only grab mutex when we actually got something from
...
the pipe.
2001-09-24 22:49:12 +00:00
Christopher Faylor
35f879a6d0
* fhandler.h (fhandler_pipe::hit_eof): New method.
...
(writepipe_exists): New class element.
(orig_pid): Ditto.
(id): Ditto.
(is_slow): Eliminate.
* pipe.cc (fhandler_pipe::set_close_on_exec): Set inheritance on
writepipe_exists, if it exists.
(fhandler_pipe::hit_eof): New method, modelled after tty.
(fhandler_pipe::dup): Duplicate writepipe_exists, if it exists.
(make_pipe): Set up a dummy event for pipes on windows 9x. The nonexistence
of this event means that the write side of the pipe has closed.
(_dup): Move to syscalls.cc
(_dup2): Ditto.
* dtable.cc (dtable::build_fhandler): Fill out set_names here, if appropriate.
* syscalls.cc (_open): Call set_names in build_fhandler.
2001-09-24 21:50:44 +00:00
Corinna Vinschen
4367ec036f
* syscalls.cc (_open): Set name in fhandler object after successful
...
creation.
(stat_dev): Set device type to block device in FH_FLOPPY case.
2001-09-23 15:35:02 +00:00
Corinna Vinschen
e3fbb5f5ce
* dtable.cc (dtable::build_fhandler): Initialize unit when using
...
optional path_conv argument.
2001-09-23 14:39:16 +00:00
Christopher Faylor
9854ada754
* dtable.cc (dtable::build_fhandler): Accept an optional path_conv argument.
...
If available, use this to calculate path name and device number.
* dtable.h (dtable): Reflect above change.
* fhandler.h (fhandler_base): Declare virtual method which accepts path_conv
rather than path string as first argument.
* fhandler.cc (fhandler_base::open): Define above new method.
* syscalls.cc (_open): Set aside a path_conv variable for use in build_fhandler
and subsequent call to open.
2001-09-22 21:44:07 +00:00
Christopher Faylor
5e733918c0
* exceptions.cc (setup_handler): Always relinquish lock after we've
...
interrupted.
* fhandler.cc: Move pipe methods to pipe.cc.
* fhandler.h (fhandler_pipe): Add new methods.
* fork.cc (sync_with_parent): Make error messages more informative.
* pipe.cc (fhandler_pipe::fhandler_pipe): Move here from fhandler.cc.
(fhandler_pipe::lseek): Ditto.
(fhandler_pipe::set_close_on_exec): New method.
(fhandler_pipe::read): Ditto.
(fhandler_pipe::close): Ditto.
(fhandler_pipe::dup): Ditto.
(make_pipe): Create the guard mutex on the read side of the pipe.
* select.cc (peek_pipe): Use guard_mutex to discover if we have the right to
read on this pipe.
(fhandler_pipe::readh_for_read): Pass the read pipe guard mutex to peek_pipe.
* syscalls.cc (_read): Always detect signal catchers, for now.
* debug.cc (makethread): Eliminate hack to make thread inheritable.
* sigproc.cc (subproc_init): Don't use hack to make thread inheritable.
2001-09-22 16:55:02 +00:00
Christopher Faylor
c50d56bc43
* fhandler.cc (fhandler_base::set_inheritance): Just use DUPLICATE_CLOSE_SOURCE
...
to change inheritance. Eliminate all other logic dealing with closed handles.
* fhandler.h (fhandler_base::set_inheritance): Reflect above change.
* fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Ditto.
2001-09-20 20:58:29 +00:00
Corinna Vinschen
a2db3c9288
* fhandler_socket.cc (fhandler_socket::fixup_after_exec): Close
...
socket only when not using Winsock2.
2001-09-20 11:35:49 +00:00
Corinna Vinschen
8e54fb88f3
* fhandler.h (fhandler_socket::fixup_after_exec): Remove inline
...
implementation.
(fhandler_dev_raw::fixup_after_exec): Ditto.
* fhandler_raw.cc (fhandler_dev_raw::fixup_after_fork): Don't
duplicate buffer on fork to avoid memory leak.
(fhandler_dev_raw::fixup_after_exec): New implementation equal to
former fixup_after_fork() implementation.
* fhandler_socket.cc (fhandler_socket::fixup_after_fork): Do
nothing when not using Winsock2.
(fhandler_socket::fixup_after_exec): New implementation.
(fhandler_socket::set_close_on_exec): Never call set_inheritance().
2001-09-20 11:29:48 +00:00
Corinna Vinschen
f4e6b76a05
* fhandler.cc (fhandler_base::set_inheritance): If available,
...
use SetHandleInformation() to set inheritance.
* wincap.cc: Set flag has_set_handle_information_on_console_handles
appropriately.
* wincap.h: Add flag has_set_handle_information_on_console_handles.
2001-09-20 08:02:01 +00:00
Christopher Faylor
9e5ad282f0
* lib/getopt.c (__progname): Don't declare if not compiling for cygwin.
2001-09-19 16:24:10 +00:00
Corinna Vinschen
09376842d4
* lib/getopt.c (getopt_long): Avoid compiler warning.
2001-09-19 16:08:33 +00:00
Christopher Faylor
596f3269b0
* lib/getopt.c: Use __progname==__argv[0] when not compiling for cygwin.
...
* scandir.cc (scandir): Use correct default when compar == NULL.
2001-09-19 15:54:12 +00:00
Corinna Vinschen
487fb5f1c4
* fhandler_socket.cc (fhandler_socket::fhandler_socket): Revert
...
memory allocation to use cmalloc again.
2001-09-19 15:50:54 +00:00
Christopher Faylor
5733509e25
* cygwin.din (__argv): Export.
...
(__argc): Ditto.
(__progname): Ditto.
* include/getopt.h (getopt_long): constify arguments.
* lib/getopt.c: Import new file from NetBSD.
2001-09-19 01:07:11 +00:00
Corinna Vinschen
7cffc34564
* mmap.cc (mmap): Don't reuse anonymous memory in MAP_FIXED case.
2001-09-18 17:10:09 +00:00
Christopher Faylor
c98b577d40
* include/io.h: Add access declaration.
2001-09-17 21:29:19 +00:00
Christopher Faylor
8238a68bb2
* syscalls.cc (rmdir): Set cwd to some other location if attempting to rmdir
...
current working directory.
2001-09-17 18:10:02 +00:00
Christopher Faylor
60136eb0b2
* dtable.h (not_open): Assure inline.
...
* fhandler.h (operator []): Make const.
* sync.cc (muto::~muto): Fix typo which stopped muto event handle from ever
being closed.
2001-09-17 03:05:05 +00:00
Egor Duda
0aca521ab8
* path.cc (symlink): Check arguments for validity.
...
(getcwd): Ditto.
* syscalls.cc (ftruncate): Ditto.
* times.cc (times): Ditto.
* uname.cc (uname): Ditto.
2001-09-16 14:26:11 +00:00
Christopher Faylor
d595839939
* net.cc (dup_servent_ptr): Detect old Windows 95 misaligned structure and
...
realign appropriately.
2001-09-16 02:56:58 +00:00
Christopher Faylor
74509af276
* Makefile.in: Generate libcygwin.a during the link pass rather than as a
...
separate dlltool step.
* dcrt0.cc (_dll_crt0): pppid_handle could be NULL. Don't close it if so.
2001-09-15 04:36:43 +00:00
Christopher Faylor
d409c077df
*** empty log message ***
2001-09-15 00:50:28 +00:00
Christopher Faylor
9661a0c8b7
* dcrt0.cc (dll_crt0_1): Create vfork main storage here so that it can be
...
queried in waitsig later.
* sigproc.cc (wait_sig): Don't deliver a signal if in a vfork.
* fork.cc (vfork): Deliver all signals on parent return from vfork.
2001-09-15 00:47:44 +00:00
Corinna Vinschen
4856e91471
* dcrt0.cc (_dll_crt0()): Don't call wincap.init() here.
2001-09-14 08:23:46 +00:00
Christopher Faylor
25e40ae6aa
* fork.cc (vfork): Avoid recursive vforks.
2001-09-14 04:37:57 +00:00
Christopher Faylor
02a9889121
* fhandler.h (fhandler_pipe::is_slow): Return true only if pipes are reliable
...
(i.e., not Win9x).
* wincap.cc: Make statics NO_COPY to avoid fork overhead.
2001-09-14 04:22:05 +00:00
Christopher Faylor
cd6ed3f9f5
* grp.cc (read_etc_group): Just reuse group_buf storage for subsequent reread
...
of /etc/group.
* passwd.cc (read_etc_passwd): Just reuse passwd_buf storage for subsequent
reread of /etc/passwd.
2001-09-14 03:01:47 +00:00
Christopher Faylor
e2e078278c
* cygheap.cc (dup_now): New function.
...
(cygheap_setup_for_child): Accept new argument controlling whether to delay
copying of cygheap to shared memory region.
(cygheap_setup_for_child_cleanup): Accept new arguments controlling whether to
copy cygheap at this point.
* cygheap.h: Reflect above changes.
* fork.cc (fork_parent): Break copying of cygheap into two parts when
fork_fixup is required so that the child can see the parent's changes.
(vfork): Do stack cleanup prior to forcing a fork error.
* spawn.cc (spawn_guts): Ditto.
2001-09-14 00:49:00 +00:00
Christopher Faylor
3e2d8af0b9
* cygheap.cc (ccalloc): Pass correct length to creturn so that cygheap_max is
...
correctly calculated.
2001-09-13 21:15:34 +00:00
Christopher Faylor
dc02f343bf
* sync.cc (muto::acquire): Fix while/if typo.
2001-09-13 01:07:25 +00:00
Corinna Vinschen
4b081513cc
* wincap.cc (wincapc::init): Simplify W2K/XP case.
2001-09-12 21:07:13 +00:00
Corinna Vinschen
09dcaf6922
* wincap.cc (wincapc::init): Set os name to "NT" on XP, too.
2001-09-12 21:03:53 +00:00
Corinna Vinschen
ba94682838
* Makefile.in: Build wincap.o.
...
* wincap.cc: New file.
* wincap.h: Ditto.
* autoload.cc: Add dynamic load statement for `CreateHardLinkA'.
* dcrt0.cc (os_being_run): Eliminated.
(osname): Ditto.
(iswinnt): Ditto.
(set_os_type): Ditto.
(dll_crt0_1): Call wincap.init() instead of set_os_type().
(_dll_crt0): Ditto.
* environ.cc (set_chunksize): New function.
(parse_thing): `forkchunk' setting now invokes function `set_chunksize'.
* fork.cc (chunksize): Eliminated. Moved to be member of wincap.
* host_dependent.h: Removed.
* syscalls.cc (_link): Try using `CreateHardLinkA' first, if available.
* cygheap.cc, dcrt0.cc, delqueue.cc, dir.cc,
environ.cc, fhandler.cc, fhandler.h, fhandler_console.cc,
fhandler_mem.cc, fork.cc, mmap.cc, net.cc, pinfo.cc, pinfo.h,
security.cc, syscalls.cc, sysconf.cc, syslog.cc, thread.cc,
times.cc, tty.cc, uinfo.cc, uname.cc, winsup.h: Use new wincap
capability check throughout.
* winsup.h: Include wincap.h. Eliminate extern declarations of
`os_being_run' and `iswinnt'. Eliminate `os_type" definition.
* include/cygwin/version.h: Bump version to 1.3.4.
2001-09-12 17:46:37 +00:00
Christopher Faylor
aed6988a36
* exceptions.cc (call_signal_handler_now): Add additional guard against
...
inappropriately calling signal handler.
* syscalls.cc (_read): Reset errno if not exiting due to signal.
2001-09-12 05:09:24 +00:00
Christopher Faylor
ff6e295ebf
minor cleanups
2001-09-12 04:47:47 +00:00
Robert Collins
8e4d969260
Wed Sep 12 13:03:00 2001 Robert Collins <rbtcollins@hotmail.com>
...
* autoload.cc (LoadDLLfuncEx): Auto load TryEnterCriticalSection - its a
n NT only call.
* thread.cc (pthread_cond::TimedWait): Use critical sections for NT.
(pthread_cond::fixup_after_fork): Don't detect bad apps.
(pthread_mutex::pthread_mutex): Use critical sections for NT.
(pthread_mutex::~pthread_mutex): Ditto.
(pthread_mutex::Lock): Ditto.
(pthread_mutex::TryLock): Ditto.
(pthread_mutex::UnLock): Ditto.
(pthread_mutex::fixup_after_fork): Ditto. Also do not detect bad apps.
(__pthread_mutex_trylock): Move WIN32 specific test into the class metho
d.
(__pthread_mutex_destroy): Prevent dereferencing passed pointer without
valid address.
* thread.h (pthread_mutex): Use critical sections for NT.
2001-09-12 03:18:05 +00:00
Christopher Faylor
101f820da2
* sigproc.h (sigframe::unregister): Return true/false whether this frame is
...
capable of responding to signals.
* exceptions.cc (sigframe::call_signal_handler): Don't call signal handler if
it is not armed for this thread.
2001-09-12 01:56:32 +00:00
Christopher Faylor
824b5c453d
fix some typos.
2001-09-11 19:40:14 +00:00