Commit Graph

5220 Commits

Author SHA1 Message Date
Yaakov Selkowitz d68288f697 Implement /proc/sysvipc/*
* devices.in (dev_procsysvipc_storage): Add.
* devices.cc: Regenerate.
* devices.h (fh_devices): Add FH_PROCSYSVIPC.
* dtable.cc (build_fh_pc): Add case FH_PROCSYSVIPC.
* fhandler.h (class fhandler_procsysvipc): Declare.
(fhandler_union): Add __procsysvipc.
* fhandler_proc.cc (proc_tab): Add sysvipc virt_directory.
* fhandler_procsysvipc.cc: New file.
* Makefile.in (DLL_OFILES): Add fhandler_procsysvipc.o.
* path.h (isproc_dev): Add FH_PROCSYSVIPC to conditional.
2011-04-01 19:48:19 +00:00
Corinna Vinschen 06e21b9cb1 * Makefile.in (DLL_OFILES): Add avapi32.o.
* advapi32.cc: New file.
	* autoload.cc: Add block of remaining advapi32 functions used by
	Cygwin.  Keep commented out.  Explain why.
2011-04-01 12:46:09 +00:00
Yaakov Selkowitz 9ca65531e0 * fhandler_proc.cc (format_proc_loadavg): Add running/total
processes as fourth component of output.
* fhandler_process.cc (get_process_state): Make non-static.
Add FIXME about generating an 'O' flag.
2011-04-01 09:00:21 +00:00
Corinna Vinschen 40afcae356 * fhandler_random.cc (fhandler_dev_random::crypt_gen_random):
Use CryptAcquireContextW.
	* ntdll.h (STATUS_PROCEDURE_NOT_FOUND): Define.
	* sec_auth.cc (open_local_policy): Rename NTSTATUS variable ret to
	status.  Drop usage of LsaNtStatusToWinError.
	(verify_token): Call NtQuerySecurityObject instead of
	GetKernelObjectSecurity.
	(create_token): Rename NTSTATUS variable ret to status.  Rename ret2 to
	sub_status.  Drop usage of LsaNtStatusToWinError.  In case LsaLogonUser
	fails, report the sub_status as well.
2011-04-01 08:41:26 +00:00
Corinna Vinschen 37f4458299 * libc/strptime.c: Remove misleading comment. 2011-04-01 08:37:10 +00:00
Corinna Vinschen e17c77459e * ntdll.h: Allow usage from plain C code.
(FSCTL_PIPE_IMPERSONATE): Define.
	(enum _THREAD_INFORMATION_CLASS): Define.
	(RTL_QUERY_REGISTRY_xxx): Define.
	(RTL_REGISTRY_xxx): Define.
	(PRTL_QUERY_REGISTRY_ROUTINE): Define.
	(struct _RTL_QUERY_REGISTRY_TABLE): Define.
	(enum _KEY_VALUE_INFORMATION_CLASS): Define.
	(struct _KEY_VALUE_PARTIAL_INFORMATION): Define.
	(NtAccessCheck): Declare.
	(NtAllocateLocallyUniqueId): Declare.
	(NtCreateKey): Declare.
	(NtDuplicateToken): Declare.
	(NtLoadKey): Declare.
	(NtOpenKey): Declare.
	(NtOpenProcessToken): Declare.
	(NtOpenThreadToken): Declare.
	(NtPrivilegeCheck): Declare.
	(NtQueryInformationToken): Declare.
	(NtQueryValueKey): Declare.
	(NtSetInformationThread): Declare.
	(NtSetInformationToken): Declare.
	(NtSetValueKey): Declare.
	(RtlAbsoluteToSelfRelativeSD): Declare.
	(RtlAddAccessAllowedAce): Declare.
	(RtlAddAccessDeniedAce): Declare.
	(RtlAddAce): Declare.
	(RtlCheckRegistryKey): Declare.
	(RtlCopySid): Declare.
	(RtlCreateAcl): Declare.
	(RtlCreateRegistryKey): Declare.
	(RtlCreateSecurityDescriptor): Declare.
	(RtlEqualPrefixSid): Declare.
	(RtlEqualSid): Declare.
	(RtlFirstFreeAce): Declare.
	(RtlGetAce): Declare.
	(RtlGetDaclSecurityDescriptor): Declare.
	(RtlGetGroupSecurityDescriptor): Declare.
	(RtlGetOwnerSecurityDescriptor): Declare.
	(RtlIdentifierAuthoritySid): Declare.
	(RtlInitializeSid): Declare.
	(RtlLengthSid): Declare.
	(RtlQueryRegistryValues): Declare.
	(RtlSetControlSecurityDescriptor): Declare.
	(RtlSetDaclSecurityDescriptor): Declare.
	(RtlSetGroupSecurityDescriptor): Declare.
	(RtlSetOwnerSecurityDescriptor): Declare.
	(RtlSubAuthorityCountSid): Declare.
	(RtlSubAuthoritySid): Declare.
	(RtlWriteRegistryValue): Declare.
2011-03-31 16:08:01 +00:00
Corinna Vinschen 3f74d8d568 * uinfo.cc (cygheap_user::init): Don't call GetUserName. Fetch username
from Windows environment instead.  Explain why.
	(cygheap_user::env_domain): Use MAX_DOMAIN_NAME_LEN rather than DNLEN
	to specify the size of the domain name buffer.
2011-03-31 15:33:53 +00:00
Corinna Vinschen 98d4d68ec4 Fix ChangeLog entry. 2011-03-30 21:58:58 +00:00
Corinna Vinschen d22bbac76c * hires.h: Fix copyright.
* times.cc: Ditto.
	localtime, gmtime).
	(FACTOR): Add comment.
	(NSPERSEC): Ditto.
	(JITTER): New definition.  Comment.
	(systime_ns): Avoid gratuitous copying of the value returned by
	GetSystemTimeAsFileTime.
	(corelocaltime, localtime, gmtime): Remove very old, unused code block.
	(cygwin_tzset): Remove.
	(hires_ms::timeGetTime_ns): Add missing semicolon in comment.
	(hires_ms::nsecs): Redefine check for difference between internal
	timer value and system time.
2011-03-30 21:54:09 +00:00
Corinna Vinschen af23d12d33 * times.cc (hires_ms::resolution): Make sure resolution is never 0.
(clock_setres): Ditto.
2011-03-30 11:30:34 +00:00
Corinna Vinschen da00863389 * cygtls.h (struct _local_storage): Redefine process_ident as wchar_t
pointer.
	* syslog.cc (CYGWIN_LOG_NAME): Convert to wide char constant.
	(openlog): Convert incoming ident string to wide char.  Fix formatting.
	(vsyslog): Print ident string as wide char string.  Convert message
	string to wide char and call UNICODE Win32 Event functions to make sure
	to use correct codeset.
	* tlsoffset.h: Regenerate.
2011-03-29 11:18:10 +00:00
Corinna Vinschen 39735c85f2 * fhandler_socket.cc (get_inet_addr): Make externally available.
* autoload.cc (GetUdpTable): Define.
	* syslog.cc (connect_syslogd): Use get_inet_addr rather than _stat64
	to check for local socket file.  Create socket with type returned by
	get_inet_addr.  If connect on UDP socket works, test if there's
	really a listening peer, otherwise fall back to Windows event log.
	(try_connect_syslogd): Use syslogd_inited flag to check if syslogd
	is available.
2011-03-29 11:07:23 +00:00
Corinna Vinschen 91d3057085 * uinfo.cc (cygheap_user::env_domain): Use LookupAccountSidW and
convert user and domain to multibyte strings to make sure to use
	correct codeset.
2011-03-29 10:46:04 +00:00
Corinna Vinschen 5f660ecf24 * autoload.cc (UuidCreate): Remove.
(UuidCreateSequential): Remove.
	* passwd.cc (internal_getpwsid): Avoid a strict-aliasing compiler
	error with gcc 4.5.1.
	* fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Ditto.
	* ntdll.h (NtAllocateUuids): Declare.
	* syscalls.cc (gethostid): Use NtAllocateUuids function rather than
	UuidCreateSequential/UuidCreate to get rid of rpcrt4 dependency.
2011-03-29 10:42:11 +00:00
Corinna Vinschen f00fe1b8e7 * cygwin.din (pthread_spin_destroy): Export.
(pthread_spin_init): Export.
	(pthread_spin_lock): Export.
	(pthread_spin_trylock): Export.
	(pthread_spin_unlock): Export.
	* posix.sgml (std-susv4): Add pthread_spin_destroy, pthread_spin_init,
	pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock.
	(std-notimpl): Remove pthread_spin_[...].
	* pthread.cc (pthread_spin_init): New function.
	* thread.cc (pthread_spinlock::is_good_object): New function.
	(pthread_mutex::pthread_mutex): Rearrange initializers to accommodate
	protected data in pthread_mutex.
	(pthread_spinlock::pthread_spinlock): New constructor.
	(pthread_spinlock::lock): New method.
	(pthread_spinlock::unlock): New method.
	(pthread_spinlock::init): New method.
	(pthread_spin_lock): New function.
	(pthread_spin_trylock): New function.
	(pthread_spin_unlock): New function.
	(pthread_spin_destroy): New function.
	* thread.h (PTHREAD_SPINLOCK_MAGIC): Define.
	(class pthread_mutex): Change access level of members shared with
	derived classes to protected.
	(pthread_mutex::set_shared): New protected method.
	(class pthread_spinlock): New class, derived class of pthread_mutex.
	* include/pthread.h (pthread_spin_destroy): Declare.
	(pthread_spin_init): Declare.
	(pthread_spin_lock): Declare.
	(pthread_spin_trylock): Declare.
	(pthread_spin_unlock): Declare.
	* include/cygwin/types.h (pthread_spinlock_t): New typedef.
	* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
2011-03-29 10:32:40 +00:00
Corinna Vinschen a011f95216 * net.cc (SIO_BASE_HANDLE): Define.
(fdsock): If we got an LSP handle, try to create a copy of the base
	handle instead.  Change comment to explain.
2011-03-29 10:25:20 +00:00
Corinna Vinschen b8fe0ec799 * include/cygwin/version.h: Bump CYGWIN_VERSION_DLL_MINOR to 10. 2011-03-29 10:24:19 +00:00
Corinna Vinschen cd50649255 * autoload.cc (winmm): Remove time functions. Don't treat
unloadable wave functions as fatal.
	* hires.h (hires_ms::timeGetTime_ns): New private method.
	(hires_ms::dmsecs): Call timeGetTime_ns here.
	* ntdll.h (struct _KSYSTEM_TIME): Define.
	(KUSER_SHARED_DATA): Redefine to allow access to InterruptTime.
	(SharedUserData): Define here.
	(NtQueryTimerResolution): Declare.
	(NtSetTimerResolution): Declare.
	* path.cc (SharedUserData): Move to ntdll.h.
	* times.cc (hires_ms::timeGetTime_ns): New private method.
	Use throughout instead of timeGetTime.  Document entire functionality
	of timeGetTime in case we need it.
	(hires_ms::resolution): Try a call to NtQueryTimerResolution
	to fetch current period.  Fall back to heuristic if that fails.
	Cast to DWORD in assignments to minperiod.
	(clock_setres): Align period to possible values per a call to
	NtQueryTimerResolution.  Explain why.  Replace calls to timeBeginPeriod
	and timeEndPeriod with underlying call to NtSetTimerResolution.  Use
	status code from NtSetTimerResolution to compute errno.
	Convert period to ULONGLONG and store 100ns value to simplify code.
2011-03-29 10:21:30 +00:00
Corinna Vinschen c9c50e7aa4 * include/sys/xattr.h: New file. 2011-03-29 08:03:35 +00:00
Corinna Vinschen 056b8e60cd * thread.cc (semaphore::init, destroy, close): Standards conformance
fix.  On a failure, return -1 and set errno.
	* thread.h (semaphore::terminate): Save errno since semaphore::close()
	may now modify it.
2011-03-29 07:49:25 +00:00
Corinna Vinschen ec0f7c31f3 * cygwin.din (strchrnul): Export.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
	* posix.sgml (std-gnu): Add strchrnul.
2011-03-28 14:55:20 +00:00
Christopher Faylor f3e3e0e7eb * dll_init.cc (dll::init): Accommodate ill-behaved dlls who don't fill out
p.envptr.
2011-03-27 19:14:02 +00:00
Corinna Vinschen 57abff16c3 * mmap.cc (mmap64): Add a cheat to let a certain autoconf test succeed
on 64 bit systems.  Explain why.
2011-03-25 20:39:26 +00:00
Christopher Faylor 50160412b0 * wincap.cc (wincap_2003): Set use_dont_resolve_hack to true. 2011-03-23 21:33:36 +00:00
Christopher Faylor bb991481c5 * autoload.cc (dll_load): Change error message to make it clear if a newer DLL
is being run.
2011-03-23 05:30:49 +00:00
Corinna Vinschen cb8c63e08d Fix typo. 2011-03-20 15:36:13 +00:00
Corinna Vinschen 33150e7f40 * fenv.cc (_feinitialise); Don't use SSE instructions on systems not
supporting them.
	* wincap.h (wincaps::supports_sse): New element.
	* wincap.cc: Implement above element throughout.
2011-03-20 15:34:29 +00:00
Corinna Vinschen b8bdc60019 * cygwin.sc: Raise default cygheap size to 2 Megs. 2011-03-18 18:16:37 +00:00
Corinna Vinschen 3c40dbce73 Fix typo. 2011-03-18 14:42:30 +00:00
Christopher Faylor 41045fb74d * fhandler.h (DEFAULT_PIPEBUFSIZE): Reset to 64K. 2011-03-18 14:25:33 +00:00
Corinna Vinschen ccbc7fca21 * mmap.cc (mmap_record::alloc_fh): Initialize nmae strings in fdev to
empty strings or suffer a SEGV.  Drop second parameter in call to
	build_fh_dev.
2011-03-18 13:56:56 +00:00
Corinna Vinschen bf69faeb0d * mmap.cc (class mmap_record): Pack 4 byte-aligned. Convert member dev
to plain int.
	(mmap_record::alloc_fh): Create temporary device from dev and use in
	call to build_fh_dev.
2011-03-18 13:42:03 +00:00
Corinna Vinschen ac706ac123 * mmap.cc (mmap_record::page_map): Define as variable array rather than
as pointer.
	(mmap_record::alloc_page_map): Remove.
	(mmap_record::free_page_map): Remove.
	(mmap_record::init_page_map): New method.
	(mmap_record::add_record): Take mmap_record parameter by reference
	rather than by value.
	(mmap_record::map_pages): Fix comment.
	(mmap_list::add_record): Allocate space for mmap_record including the
	page_map in a single ccalloc call.  Call init_page_map afterwards.
	(mmap_list::del_record): Remove call to mmap_record::free_page_map.
2011-03-18 13:38:34 +00:00
Corinna Vinschen b532ee08bc * crt0.c (mainCRTStartup): Move call to _feinitialise from here...
* dcrt0.cc (_dll_crt0): ...to here.
2011-03-17 08:40:25 +00:00
Corinna Vinschen d2948a681d * winver.rc: Fix copyright dates. 2011-03-16 21:10:51 +00:00
Corinna Vinschen 91b3d1ed7a * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Only use
file id as inode number if it masters the isgood_inode check.
2011-03-14 09:14:17 +00:00
Christopher Faylor 9636c4262e * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Remove special
treatment for ERROR_NO_SYSTEM_RESOURCES.  Cancel I/O and reset the overlapped
handle on error.
(fhandler_base_overlapped::write_overlapped): Limit writes to max_atomic_write
bytes in blocking case.  Incorporate code from now-defunct
write_overlapped_fallback.  Fix serious oversight where ptr was not advanced as
buffer was written.
(fhandler_base_overlapped::write_overlapped_fallback): Eliminate.
* fhandler.h (fhandler_base_overlapped::write_overlapped_fallback): Ditto for
declaration.
(DEFAULT_PIPEBUFSIZE): Lower size to slightly less than documented worst-case
atomic write size.
(fhandler_overlapped::wait_return): Remove unused element.
2011-03-13 20:20:58 +00:00
Christopher Faylor 904e3e2004 * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Handle
overlapped_fallback error condition like other error conditions.  Set res
carefully and specifically for each condition rather than resorting to a
default.
(fhandler_base_overlapped::write_overlapped): Preserve errno in
overlapped_fallback condition.  Correct write_overlapped_fallback to avoid
inappropriate looping.
(fhandler_base_overlapped::write_overlapped_fallback): Add some more comments.
2011-03-09 22:48:05 +00:00
Christopher Faylor ed6b66c88d * fhandler.cc (fhandler_base_overlapped::write_overlapp): Oops! Accommodate
change in arguments to wait_overlapped.
2011-03-09 16:55:54 +00:00
Christopher Faylor 779ece3ce0 * errno.cc (errmap): Change mapping of NO_SYSTEM_RESOURCES to EFBIG.
* fhandler.cc (MAX_OVERLAPPED_WRITE_LEN): New constant.
(MIN_OVERLAPPED_WRITE_LEN): Ditto.
(fhandler_base_overlapped::close): Accommodate change in arguments to
wait_overlapped.
(fhandler_base_overlapped::setup_overlapped): Add __stdcall and regparm
modifiers.
(fhandler_base_overlapped::destroy_overlapped): Ditto.
(fhandler_base_overlapped::has_ongoing_io): Ditto.
(fhandler_base_overlapped::wait_overlapped): Modify to return an enum returning
various states.  Accept nonblocking parameter.
(fhandler_base_overlapped::read_overlapped): Add __stdcall and regparm
modifiers.  Rework to attempt to be smarter about reacting to states returned
by wait_overlapped.
(fhandler_base_overlapped::write_overlapped): Ditto.  Add fallback option for
when wait_overlapped detects that smaller chunks must be written.
(fhandler_base_overlapped::write_overlapped_fallback): Ditto.
* fhandler.h (DEFAULT_PIPEBUFSIZE): Move definition here from pipe.cc.
(fhandler_base::has_ongoing_io): Define with __stdcall and regparm modifiers.
(fhandler_base_overlapped::wait_return): New enum.
(fhandler_base_overlapped::max_atomic_write): New variable.
(fhandler_base_overlapped:: wait_overlapped): Accommodate changes mentioned
above to arguments and modifiers.
(fhandler_base_overlapped::setup_overlapped): Ditto for modifiers.
(fhandler_base_overlapped::read_overlapped): Ditto.
(fhandler_base_overlapped::write_overlapped): Ditto.
(fhandler_base_overlapped::destroy_overlapped): Ditto.
(fhandler_base_overlapped::has_ongoing_io): Ditto.
(fhandler_base_overlapped::fhandler_base_overlapped): Zero max_atomic_write.
* fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Set max_atomic_write to the
size of the DEFAULT_PIPEBUFSIZE.
(fhandler_fifo::wait): Accommodate change in arguments to wait_overlapped.
* pipe.cc (fhandler_pipe::fhandler_pipe): Set max_atomic_write to the size of
the DEFAULT_PIPEBUFSIZE.
(fhandler_pipe::create_selectable): Allow minimum size of DEFAULT_PIPEBUFSIZE.
(DEFAULT_PIPEBUFSIZE): Delete here, move to fhandler.h.
2011-03-09 16:47:44 +00:00
Corinna Vinschen e7b5eaaac9 * security.cc: Fix copyright dates. 2011-03-08 15:12:58 +00:00
Corinna Vinschen 69d7815eae * fhandler.cc (fhandler_base::open): When creating a file on a
filesystem supporting ACLs, create the file with WRITE_DAC access.
	Explain why.
	* fhandler_disk_file.cc (fhandler_disk_file::mkdir): Ditto for
	directories.
	* fhandler_socket.cc (fhandler_socket::bind): Ditto for sockets.
	* path.cc (symlink_worker): Ditto for symlinks.
	* security.cc (get_file_sd): Always call GetSecurityInfo for directories
	on XP and Server 2003.  Improve comment to explain why.
	(set_file_attribute): Explicitely cast mode_t value to bool in call to
	get_file_sd.
	* wincap.h (wincaps::use_get_sec_info_on_dirs): New element.
	* wincap.cc: Implement above element throughout.
2011-03-08 14:26:15 +00:00
Corinna Vinschen d5071ad7f5 * fhandler_procsys.cc (fhandler_procsys::exists): Rewrite.
(fhandler_procsys::fill_filebuf): Fill buffer with valid string even if
	reading the symlink fails.
2011-03-04 17:51:42 +00:00
Corinna Vinschen b994b83729 * posix_ipc.cc (ipc_cond_timedwait): If ipc_mutex_unlock fails, return
actual error number.
	(_mq_send): Break loop if ipc_cond_timedwait returns with error.
	(_mq_receive): Ditto.
2011-03-03 15:48:36 +00:00
Corinna Vinschen b7351dcfb1 * errno.cc (__xpg_strerror_r): Add accidentally missing condition. 2011-03-03 09:50:13 +00:00
Corinna Vinschen 723223ab9f * fhandler_procsys.cc (fhandler_procsys::open): Call worker exists
method, rather than wrapper.
2011-03-02 13:22:44 +00:00
Christopher Faylor 7a3190f081 * autoload.cc (dll_load): Avoid in_forkee test since this apparently fails even
when not forked.
2011-03-01 22:36:19 +00:00
Christopher Faylor 96ef911a49 * include/cygwin/version.h: Bump CYGWIN_VERSION_DLL_MINOR to 9. 2011-03-01 22:35:00 +00:00
Christopher Faylor ba5f92981d * autoload.cc (dll_load): Only perform DONT_RESOLVE_DLL_REFERENCES hack on
systems which need it.
* wincap.cc (use_dont_resolve_hack): Set as appropriate.
* wincap.h (use_dont_resolve_hack): Define.
2011-03-01 00:19:23 +00:00
Christopher Faylor 8ceb4854b6 * autoload.cc (dll_load): Make inline. Clarify logic. 2011-02-28 20:55:10 +00:00