summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/syscalls.cc
Commit message (Collapse)AuthorAgeFilesLines
* * include/netinet/ip6.h: New file, copied from FreeBSD vebatim.Corinna Vinschen2014-01-181-1/+1
|
* * syscalls.cc (popen): Introduce Glibc 'e' flag to allow thread-safeCorinna Vinschen2014-01-171-12/+43
| | | | opening of the pipe with O_CLOEXEC flag. Simplify FD_CLOEXEC handling.
* * syscalls.cc (NT_TRANSACTIONAL_ERROR): Define.Corinna Vinschen2013-12-111-9/+40
| | | | | | | | | | | (stop_transaction): Take "trans" HANDLE by reference and set it to NULL after closing it. (unlink_nt): If NtOpenFile fails due to a transactional error, stop transaction and retry NtOpenFile. Simplify check for having to call stop_transaction. (rename): If NtOpenFile fails due to a transactional error, stop transaction and retry NtOpenFile in both affected cases. Simplify check for having to call stop_transaction and add comment from unlink_nt.
* * syscalls.cc (dup): Use cygheap_fdnew properly.Christopher Faylor2013-12-061-1/+1
|
* * cygheap.h (cygheap_fdnew): Avoid setting errno directly since it will haveChristopher Faylor2013-12-051-3/+9
| | | | | | | | | | | | been set by a previous function. * dtable.h (dtable::extend): Accept second size_t argument. * dtable.cc (dtable::extend): Accept second "min" argument which allows checking for OPEN_MAX_MAX boundary conditions. (dtable_init): Accommodate second argument to dtable::extend. (dtable::find_unused_handle): Ditto. * syscalls.cc (setdtablesize): Ditto. (dup): Return any error passed by cygheap_fdnew() directly. (getdtablesize): Just return dtable size directly.
* * syscalls.cc (try_to_bin): Enhance debug output in case reopen fails.Corinna Vinschen2013-11-271-1/+2
|
* * syscalls.cc (try_to_bin): Drop fh_dup, reuse tmp_fh instead.Corinna Vinschen2013-11-271-3/+2
|
* * syscalls.cc (try_to_bin): Take additional parameter to get file openCorinna Vinschen2013-11-271-5/+31
| | | | | | | flags. If the file to move to the bin has been opened casesensitive, reopen it caseinsensitive. Explain why. Revert the default name of the Vista-and-later recycler to mixed case for readability. (unlink_nt): Call try_to_bin with file open flags as evaluated.
* Throughout, keep function definitions and declarations in sync withCorinna Vinschen2013-11-251-8/+12
| | | | newlib in terms of C99 "restrict" keyword.
* Throughout, drop unnecessary explicit includes of windows header filesCorinna Vinschen2013-11-241-1/+0
| | | | | | | | | | | | included by default. * winlean.h: Add long comment to explain why we have to define certain symbols. (_NORMALIZE_): Define. (_WINNLS_): Drop definition and subsequent undef. (_WINNETWK_): Ditto. (_WINSVC_): Ditto. 2013-11-23 Eric Blake <eblake@redhat.com>
* dup2: fix off-by-one crashEric Blake2013-11-231-0/+6
| | | | | | * dtable.cc (dup3): Fix off-by-one. (find_unused_handle): Reduce time spent expanding during dup. * syscalls.cc (setdtablesize): Report error on invalid value.
* * syscalls.cc (open): Only return ENOTDIR if file exists.Corinna Vinschen2013-05-211-1/+1
|
* Throughout, (mainly in fhandler*) fix remaining gcc 4.7 mismatchYaakov Selkowitz2013-05-011-1/+1
| | | | | | | | | warnings between regparm definitions and declarations. * smallprint.cc (__small_vswprintf): Conditionalize declaration and setting of l_opt for only x86_64. * spawn.cc (child_info_spawn::worker): Remove unused 'pid' variable. * thread.cc (verifyable_object_isvalid): Temporarily define as non-inline with gcc 4.7+, regardless of target.
* * autoload.cc (CreateSymbolicLink): Define.Corinna Vinschen2013-04-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | * environ.cc (set_winsymlinks): Set allow_winsymlinks. (parse_thing): Change "winsymlinks" to set by function. * globals.cc (enum winsym_t): Define. (allow_winsymlinks): Define as winsym_t. (ro_u_afs): New R/O Unicode string. * mount.cc (fs_info::update): Fix comment. Handle AFS. (fs_names): Add "afs". * mount.h (enum fs_info_type): Add afs. (class fs_info): Implement afs. * path.cc (symlink): Drop third parameter in call to symlink_worker. (symlink_nfs): New function. (symlink_native): New function. (symlink_worker): Drop third argument. Handle native symlink type by calling symlink_native. Move code to handle NFS to symlink_nfs. Fix formatting. Slightly restructure code. * path.h (class path_conv): Add fs_is_afs method. (symlink_worker): Declare here. * security.h: Define privilege constants as unsigned int instead of as unsigned long. * syscalls.cc (mknod_worker): Set third parameter in symlink_worker call to WSYM_lnk. * winsup.h (symlink_worker): Drop declaration here.
* * Merge in cygwin-64bit-branch.Corinna Vinschen2013-04-231-120/+182
|
* Throughout, update copyrights to reflect dates which correspond to main-branchChristopher Faylor2013-01-211-2/+2
| | | | checkins. Regularize copyright format.
* * syscalls.cc (rename): Remove ill-conceived NFS workaround fromCorinna Vinschen2013-01-191-46/+3
| | | | 2013-01-10 for self-inflicted NFS server problem.
* * syscalls.cc (rename): Drop handling paths > 32757 chars, emit EINVALCorinna Vinschen2013-01-111-22/+21
| | | | | | instead, thus simplifying code allocating and filling pfri. Drop size and use constant expression in NtSetInformationFile call. Add comments. Drop redundant test for fs_serial_number and change comment accordingly.
* * path.h (path_conv::fs_type): New method.Corinna Vinschen2013-01-101-8/+66
| | | | | | * syscalls.cc (rename): Check for cross-device situation before touching anything. Explain why. Workaround NFS bug in call to NtSetInformationFile(FileRenameInformation).
* * dtable.cc (dtable::dup3): Fix bounds checking for valid newfd.Christopher Faylor2012-12-311-1/+1
| | | | | * syscalls.cc (dup2): Ditto. * winsup.h (events_terminate): Delete obsolete function declaration.
* whitespace cleanupChristopher Faylor2012-08-161-2/+2
|
* * syscalls.cc (enum bin_status): Add dir_not_empty.Corinna Vinschen2012-07-251-38/+75
| | | | | | | | | | | | | (try_to_bin): Call NtQueryInformationFile(FileInternalInformation) with exact buffer size. Explain why. Ditto for NtSetInformationFile(FileRenameInformation). Handle race-condition which might lead to renaming a non-empty directory. (unlink_nt): Rearrange and partially rephrase comments related to the STATUS_SHARING_VIOLATION case. Fix condition under which a dir is tested for being non-empty. Handle dir_not_empty return code from try_to_bin. Gracefully handle disappearing directory in rm -r workaround. Fix typo in comment.
* * DevNotes: Add entry cgf-000013.Christopher Faylor2012-07-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cygserver_ipc.h (ipc_set_proc_info): Use _cygtls::ipc_set_proc_info to set per-thread signal arrived value. * cygthread.cc (cygthread::detach): Use per-thread signal_arrived via set_thread_waiting. * fork.cc (_cygtls::fixup_after_fork): Clear signal_arrived. (_cygtls::remove): Close any signal_arrived handle when thread exists. (_cygtls::find_tls): Remove unneeded function. * cygtls.h: Update copyright. (class _cygtls): Reorganize to help avoid rebuilding newlib when structure changes. (_cygtls::event): Delete. (_cygtls::threadkill): Ditto. (_cygtls::signal_waiting): Declare new bool. (_cygtls::find_tls): Delete declaration. (_cygtls::set_threadkill): Ditto. (_cygtls::reset_threadkill): Ditto. (_cygtls::set_signal_arrived): Declare new function. (class set_thread_waiting): Declare new class. * cygwait.cc (cw_nowait_storage): Define. (cygwait): Set per-thread signal_arrived via set_thread_waiting. Don't special-case _main_tls. * cygwait.h (cw_nowait): Define. (cw_infinite): Ditto. (cygwait): Redefine pathological wait-only case. * dcrt0.cc (dll_crt0_0): Remove call to now-defunct events_init(). (dll_crt0_1): Remove call to now-defunct create_signal_arrived(). * exceptions.cc: Reflect set_signal_mask() argument reordering throughout. Remove signal mask synchronization throughout. (events_init): Delete definition. (mask_sync): Delete now-unneeded mask synchronization. (set_signal_mask): Reverse order of arguments to "standard" to, from layout. Rename "newmask" argument to "setmask". Remove debugging. (sig_handle_tty_stop): Use cancelable_wait rather than WFMO. (_cygtls::interrupt_setup): Don't treat "threadkill" events specially. Conditionally set signal_arrived depending on whether the thread has created it or not. (sigpacket::process): Reorganize to reflect thread-specific sending of signals which is more in line with the way it was actually supposed to work. * fhandler_socket.cc (get_inet_addr): Use cancelable_wait rather than IsEventSignalled to avoid potential race. (fhandler_socket::wait_for_events): Set signal_arrived event using set_thread_waiting(). (fhandler_socket::close): Use cygwait for the case of just waiting 10 ms for a signal. * fhandler_tape.cc (fhandler_dev_tape::_lock): Use cancelable_wait rather than WFMO. Redo switch/case tests accordingly. * fhandler_termios.cc (fhandler_termios::bg_check): Use cygwait for case of just waiting 0 ms for a potential signal. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Use cancelable_wait rather than WFSO. * fhandler_windows.cc (fhandler_windows::read): Set per-thread signal_arrived via set_thread_waiting(). * flock.cc (lf_setlock): Ditto. * select.cc (pselect): Ditto. Set per-thread signal_arrived using set_thread_waiting(). * gendef: Don't special case handling of _cygtls::sig for threads. * gentls_offsets: Use #pragma once in tlsoffsets.h. * ntdll.h: Use #pragma once. * poll.cc: Reflect set_signal_mask() argument reordering. * posix_ipc.cc (ipc_mutex_lock): Use cancelable_wait rather than WFMO. (ipc_cond_timedwait): Set perl-thread signal arrived using set_thread_waiting(). * security.h: Use #pragma once. * signal.cc (abort): Reflect set_signal_mask() argument reordering. (clock_nanosleep): Ditto. Change call to cancelable_wait to properly specify handling of cancel and interrupt. (sigwaitinfo): Remove handling of per-thread event in favor of per-thread signal_arrived. Use cancelable_wait rather than WFSO. * sigproc.cc (signal_arrived): Delete definition. (create_signal_arrived): Ditto. * sigproc.h (signal_arrived): Delete declaration. (set_signal_mask): Avoid defining as a "C" function. Don't conditionally declare. (create_signal_arrived): Delete declaration. * syscalls.cc (rename): Use cygwait() rather than WFSO. * thread.h (fast_mutex::lock): Use cw_infinite rather than LARGE_NULL. * wait.cc (wait4): Ditto. * thread.cc (pthread_mutex::lock): Ditto. (pthread::join): Ditto. (semaphore::_wait): Ditto. (pthread_kill): Remove set_threadkill() accommodation. * tlsoffsets.h: Regenerate.
* Revert errneous checkin.Christopher Faylor2012-06-191-1/+1
| | | | Check in actual change associated with ChangeLog.
* * cygwait.cc (cancelable_wait): Mimic old cygwait behavior more closely wrtChristopher Faylor2012-06-191-1/+1
| | | | | | | | handling of call_signal_handler. * cygwait.h (WAIT_CANCELED): Move here and redefine. (WAIT_SIGNALED): Ditto. * thread.h (WAIT_CANCELED): Delete. (WAIT_SIGNALED): Ditto.
* * dtable.cc (dtable::dup3): Only return with lock set when O_EXCL flag isChristopher Faylor2012-06-041-1/+1
| | | | | passed in. * syscalls.cc (dup_finish): Pass O_EXCL in flags to dtable::dup3.
* * DevNotes: Add entry cgf-000011.Christopher Faylor2012-06-031-4/+16
| | | | | | | | | | | | | | | | | | | * fhandler.h (fhandler_base::refcnt): Delete. (fhandler_base::inc_refcnt): New function. (fhandler_base::dec_refcnt): New function. * cygheap.h (cygheap_fdnew::~cygheap_fdnew): Accommodate split of refcnt to inc_refcnt/dec_refcnt. (cygheap_fdget::cygheap_fdget): Ditto. (cygheap_fdget::~cygheap_fdget::cygheap_fdget): Ditto. * dtable.cc (dtable::release): Ditto. (cygwin_attach_handle_to_fd): Ditto. (dtable::init_std_file_from_handle): Ditto. (dtable::dup3): On success, return with fdtab locked. * dtable.h (dtable): Add dup_finish as a friend. * syscalls.cc (dup_finish): Define new function. Increment refcnt while fdtab is locked. (dup2): Use common dup_finish() to perform dup operation. (dup3): Ditto.
* * globals.cc (ro_u_refs): New R/O unicode string.Corinna Vinschen2012-06-031-13/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | * mount.cc (fs_info::update): Recognize ReFS. * mount.h (enum fs_info_type): Add refs. (class fs_info): Add refs flag and accessor methods. * ntdll.h (RtlAddAccessAllowedAceEx): Declare. (RtlAddAccessDeniedAceEx): Declare. * path.h (path_conv::fs_is_refs): Define. * sec_helper.cc (_recycler_sd): New function to create security descriptors suitable for the recycler bin starting with Vista. * security.cc (add_access_allowed_ace): Use RtlAddAccessAllowedAceEx and drop code to set AceFlags explicitely. (add_access_denied_ace): Use RtlAddAccessDeniedAceEx and drop code to set AceFlags explicitely. * security.h (_recycler_sd): Declare. (recycler_sd): Define. * syscalls.cc (desktop_ini): Change formatting. (desktop_ini_ext): Define third line of recycler desktop.ini file since Vista, (try_to_bin): Handle ReFS just like NTFS. Write Vista and later Recycler in all uppercase, just like shell32 does when recreating it. Fix comments to include ReFS. Don't implicitely reuse object attributes from earlier NtOpenFile call, rather recreate it for safety. Use recycler_sd call when creating security descriptor for Recycler dirs and files on Vista and later. Write third line of desktop.ini when on Vista and later.
* * syscalls.cc (fhandler_base::stat_fixup): Fix inode numbers ofCorinna Vinschen2012-04-111-3/+4
| | | | non-device files in virtual fileysystems.
* * syscalls.cc (fhandler_base::stat_fixup): Replace string comparisonCorinna Vinschen2012-04-031-1/+1
| | | | with new device::is_dev_resident() call.
* * devices.h (device::get_device): New method.Corinna Vinschen2012-04-021-2/+7
| | | | | | * fhandler_dev.cc (fhandler_dev::readdir): Set st_ino to device number. * syscalls.cc (fhandler_base::stat_fixup): Ditto. Fix link count for CD-ROM devices. Fix typo in comment.
* * fhandler.h (fhandler_base::stat_fixup): Rename fromCorinna Vinschen2012-04-021-4/+10
| | | | | | fhandler_base::set_ino_and_dev. * syscalls.cc (fhandler_base::stat_fixup): Ditto. Accommodate name change throughout. Fixup link count of console devices.
* * devices.h (FH_CYGDRIVE): Define as DEV_VIRTFS_MAJOR class device.Corinna Vinschen2012-04-021-2/+1
| | | | | | | | | (DEV_CYGDRIVE_MAJOR): Remove. (iscygdrive_dev): Define. * dtable.cc (fh_alloc): Accommodate above change. * path.cc (path_conv::check): Use iscygdrive_dev to check for cygdrive. * syscalls.cc (fhandler_base::set_ino_and_dev): Drop check for DEV_CYGDRIVE_MAJOR from conditional.
* * devices.h (FH_DEV): Define as DEV_VIRTFS_MAJOR class device.Corinna Vinschen2012-04-021-1/+1
| | | | | | | (DEV_DEV_MAJOR): Remove. * dtable.cc (fh_alloc): Accommodate above change. * syscalls.cc (set_ino_and_dev): Drop check for DEV_DEV_MAJOR from conditional.
* * fhandler.h (fhandler_base::set_ino_and_dev): Declare.Corinna Vinschen2012-04-021-16/+34
| | | | | | | | * syscalls.cc (fhandler_base::set_ino_and_dev): New method to set st_ino, st_dev, and st_rdev for devices in a single spot. (fstat64): Call fhandler_base::set_ino_and_dev instead of setting st_ino, st_dev, and st_rdev here. (stat_worker): Ditto.
* * syscalls.cc (lseek): Fix debug output.Corinna Vinschen2012-03-201-1/+4
|
* * cygwin.din (scandirat): Export.Yaakov Selkowitz2012-02-221-0/+16
| | | | | | | * posix.sgml (std-gnu): Add scandirat. * syscalls.cc (scandirat): New function. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. * include/sys/dirent.h (scandirat): Declare.
* * pinfo.cc (_pinfo::set_ctty): Revert 2012-02-07 change to skip function if ttyChristopher Faylor2012-02-141-2/+2
| | | | | | | | | in question == our ctty. * syscalls.cc (setsid): Avoid two function calls. * dtable.cc (dtable::dup_worker): Remove debugging. * init.cc (search_for): Calculate for every new process rather than using shared value. (threadfunc_ix): Fill in for ever new process rather than sing shared value.
* * syscalls.cc (setsid): On second thought, in the spirit of keeping thingsChristopher Faylor2012-02-101-2/+2
| | | | | kludgy, set ctty to -2 here as a special flag, and... (open): ...only eschew setting O_NOCTTY when that case is detected.
* * syscalls.cc (open): Semi-revert (?) to allowing open of a tty to becomeChristopher Faylor2012-02-101-1/+1
| | | | controlling tty if there is no controlling tty.
* * include/process.h: Move here from include/cygwin subdir.Corinna Vinschen2012-02-071-1/+1
| | | | | | | * exec.cc: Change include of process.h to reflect the fact that it's now back in include. * spawn.cc: Ditto. * syscalls.cc: Ditto.
* * cygheap.cc (init_cygheap::manage_console_count): Delete.Christopher Faylor2012-02-071-2/+1
| | | | | | | | | | | | | | | | | | | * cygheap.h (init_cygheap::manage_console_count): Ditto. (init_cygheap::console_count): Ditto. * fhandler.h (fhandler_console::has_a): Ditto. (fhandler_console::free_console): Declare new function. * fhandler_console.cc (fhandler_console::free_console): Define new function. (fhandler_console::open_setup): Delete call to manage_console_count. (fhandler_console::close): Ditto. Replace with call to free_console(). * fhandler_tty.cc (fhandler_pty_slave::open): Delete call to manage_console_count. (fhandler_pty_slave::cleanup): Ditto. (fhandler_pty_slave::close): Call fhandler_console::free_console() if this is our controlling tty. * pinfo.cc (_pinfo::set_ctty): Skip function if tty in question == our ctty. Delete call to manage_console_count. * syscalls.cc (close_all_files): Avoid locking and avoid setting errno when iterating over fds.
* * syscalls.cc (close_all_files): Use cygheap_fdget to manipulate fhandler. UseChristopher Faylor2012-02-021-14/+14
| | | | debug_only_printf.
* * dtable.cc (dtable::dup_worker): Add comment explaining why refcnt isn'tChristopher Faylor2012-02-011-2/+3
| | | | | | incremented here. (dtable::dup3): Simplify slightly. Add comment. * syscalls.cc (dup3): Increment refcnt here, similarly to dup2.
* * syscalls.cc (dup3): Fix debug typo.Christopher Faylor2012-01-311-1/+1
| | | | | | | * fhandler.cc (flush_async_io): Assume only called for writer. Call GetOverlappedResult directly rather than kluding call to has_ongoing_io. (fhandler_base_overlapped::close): Only start flush thread when closing write handle. Only cancel I/O when reading.
* * syscalls.cc (gethostid): Simplify. Just fetch MachineGuid andCorinna Vinschen2012-01-231-114/+19
| | | | create hash from there.
* * cygheap.h (cygheap_fdmanip::release): Simplify.Christopher Faylor2012-01-221-2/+2
| | | | | | | | * dtable.cc (dtable::release): Make void again. Skip not_open check since it is guaranteed to be open. Don't bother deleting here since actual deletion will be handled in cygheap_fdget::~cygheap_fdget. * dtable.h (dtable::release): Make void again. * syscalls.cc (dup2): Bump fhandler use count on successful dup.
* * include/cygwin/process.h: Move here from newlib.Corinna Vinschen2012-01-091-2/+2
| | | | | | | * exec.cc: Change include of process.h to reflect the fact that it's now in the include/cygwin subfolder. * spawn.cc: Ditto. * syscalls.cc: Ditto.
* * fhandler_dsp.cc (fhandler_dev_dsp::fhandler_dev_dsp): Set up device.Christopher Faylor2011-12-251-1/+1
| | | | * syscalls.cc (open): Very minor formatting tweak.
* Throughout use wincap.allocation_granularity instead of getpagesize.Corinna Vinschen2011-12-221-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | Throughout use wincap.page_size instead of getsystempagesize. Throughout use "status" as variable name to hold NTSTATUS values. * fhandler_mem.cc: Check for NT_SUCCESS rather than for STATUS_SUCCESS. Fix debug_printf output. Rectify long statements. Fix comment formatting. * fhandler_proc.cc: Ditto. (format_proc_swaps): Drop useless test for ERROR_PROC_NOT_FOUND. * fhandler_process.cc: Ditto as in fhandler_mem.cc. (get_process_state): Rearrange allocation loop. Use malloc/realloc. (get_mem_values): Fix potential NULL pointer usage. Drop unused variable. * pinfo.cc (winpids::enum_processes): Handle low memory gracefully. * sec_auth.cc (get_priv_list): Drop local variable ret. * shared.cc (memory_init): Drop outdated call to getpagesize. * syscalls.cc (getsystempagesize): Remove. * sysconf.cc: Check for NT_SUCCESS rather than for STATUS_SUCCESS. (sysinfo): Constify sizeof_stodi. Drop useless test for ERROR_PROC_NOT_FOUND. * thread.cc (pthread_getattr_np): Cast pointers to uintptr_t rather than to int for pointer arithmetic. * winsup.h (getsystempagesize): Drop declaration.