about summary refs log tree commit diff
path: root/library/std/src/sys
AgeCommit message (Collapse)AuthorLines
2020-09-30Rollup merge of #77328 - hyd-dev:assert-to-rtassert, r=AmanieuJonas Schievink-1/+1
Use `rtassert!` instead of `assert!` from the child process after fork() in std::sys::unix::process::Command::spawn() As discussed in #73894, `assert!` panics on failure, which is not signal-safe, and `rtassert!` is a suitable replacement. Fixes #73894. r? @Amanieu @cuviper @joshtriplett
2020-09-30Auto merge of #77292 - lzutao:std_asm, r=Amanieubors-16/+24
Prefer asm! in std - all in sgx module Similar to the change in #76669 but all `llvm_asm!` is gate in x86/x86_64 target. Godbolt: - https://rust.godbolt.org/z/h7nG1h - https://rust.godbolt.org/z/xx39hW
2020-09-29Use `rtassert!` instead of `assert!` from the child process after fork() in ↵hyd-dev-1/+1
std::sys::unix::process::Command::spawn() `assert!` panics on failure, which is not signal-safe.
2020-09-28Prefer asm! in std - all in sgx moduleLzu Tao-16/+24
2020-09-28fix building libstd for Miri on macOSRalf Jung-49/+50
2020-09-27Reopen standard streams when they are closed on UnixTomasz Miąsko-0/+62
The syscalls returning a new file descriptors generally use lowest-numbered file descriptor not currently opened, without any exceptions for those corresponding to the standard streams. Previously when any of standard streams has been closed before starting the application, operations on std::io::{stderr,stdin,stdout} objects were likely to operate on other logically unrelated file resources opened afterwards. Avoid the issue by reopening the standard streams when they are closed.
2020-09-27Check conversion from Duration to timespec in futex_wait.Mara Bos-12/+11
2020-09-27Move linux-specific futex code into `sys` module.Mara Bos-0/+39
2020-09-27Split sys_common::Mutex in StaticMutex and MovableMutex.Mara Bos-16/+14
The (unsafe) Mutex from sys_common had a rather complicated interface. You were supposed to call init() manually, unless you could guarantee it was neither moved nor used reentrantly. Calling `destroy()` was also optional, although it was unclear if 1) resources might be leaked or not, and 2) if destroy() should only be called when `init()` was called. This allowed for a number of interesting (confusing?) different ways to use this Mutex, all captured in a single type. In practice, this type was only ever used in two ways: 1. As a static variable. In this case, neither init() nor destroy() are called. The variable is never moved, and it is never used reentrantly. It is only ever locked using the LockGuard, never with raw_lock. 2. As a Boxed variable. In this case, both init() and destroy() are called, it will be moved and possibly used reentrantly. No other combinations are used anywhere in `std`. This change simplifies things by splitting this Mutex type into two types matching the two use cases: StaticMutex and MovableMutex. The interface of both new types is now both safer and simpler. The first one does not call nor expose init/destroy, and the second one calls those automatically in its new() and Drop functions. Also, the locking functions of MovableMutex are no longer unsafe.
2020-09-26Add accessors to Command.Eric Huss-8/+141
2020-09-25Add missing examples for Fd traitsGuillaume Gomez-0/+43
2020-09-22Revert "Function to convert OpenOptions to c_int"Joshua Nelson-35/+0
2020-09-22Auto merge of #76110 - FedericoPonzi:convert-openoptions-cint, r=JoshTriplettbors-0/+35
Function to convert OpenOptions to c_int Fixes: #74943 The creation_mode and access_mode function were already available in the OpenOptions struct, but currently private. I've added a new free functions to unix/fs.rs which takes the OpenOptions, and returns the c_int to be used as parameter for the `open` call.
2020-09-22enable unstable open_options_ext_as_flags feature in doc commentsFederico Ponzi-0/+1
2020-09-21Rollup merge of #76521 - tavianator:fix-pthread-getattr-destroy, r=AmanieuRalf Jung-2/+8
Fix segfault if pthread_getattr_np fails glibc [destroys][1] the passed pthread_attr_t if pthread_getattr_np() fails. Destroying it again leads to a segfault. Fix it by only destroying it on success for glibc. [1]: https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_getattr_np.c;h=ce437205e41dc05653e435f6188768cccdd91c99;hb=HEAD#l205
2020-09-20try again to appease tidyWithout Boats-1/+0
2020-09-20spend another CI build to delete a double newlineWithout Boats-1/+0
2020-09-20fix typosWithout Boats-6/+6
2020-09-20Make RawFd implement the RawFd traitsWithout Boats-0/+59
2020-09-19Add tracking issue for feature(unix_socket_peek)rijenkii-3/+3
2020-09-17Auto merge of #76645 - fusion-engineering-forks:windows-lock, r=kennytmbors-43/+41
Small cleanups in Windows Mutex. - Move `held` into the boxed part, since the SRW lock implementation does not use this. This makes the Mutex 50% smaller. - Use `Cell` instead of `UnsafeCell` for `held`, such that `.replace()` can be used. - Add some comments. - Avoid creating multiple `&mut`s to the critical section object in `ReentrantMutex`.
2020-09-16Rollup merge of #76758 - adamlesinski:clone_clock, r=tmandryTyler Mandry-1/+3
[fuchsia] Propagate the userspace UTC clock On Fuchsia, spawning a subprocess does not automatically clone all of the parent process' capabilities. UTC time on Fuchsia is managed by a top-level userspace clock capability that is cloned and passed to subprocesses. This change ensures that any Rust subprocess gets access to the UTC clock, if the parent had access to it. This is critical for tests, which on Fuchsia, use panic=abort and spawn subprocesses per test.
2020-09-16Avoid creating `&mut`s in Windows ReentrantMutex.Mara Bos-7/+7
2020-09-16Don't use `mut` in Windows Mutex.Mara Bos-9/+7
2020-09-16Sets as_flags as unstableFederico Ponzi-1/+1
2020-09-16Rollup merge of #75749 - ehuss:consolidate-sys, r=alexcrichtonDylan DPC-889/+56
Consolidate some duplicate code in the sys modules. This consolidates some modules which were duplicated throughout the sys module. The intent is to make it easier to update and maintain this code. This mainly affects the wasi, sgx, and "unsupported" targets. I explicitly skipped hermit, cloudabi, and vxworks. These tier-3 targets have copied large sections of the sys tree. I don't think they should have, but I don't want to put effort into changing them. It also doesn't help that there aren't any scripts or instructions for building them. There are still sections of duplicate code here and there, but this PR covers the easy parts where entire modules are the same.
2020-09-15[fuchsia] Propagate the userspace UTC clockAdam Lesinski-1/+3
On Fuchsia, spawning a subprocess does not automatically clone all of the parent process' capabilities. UTC time on Fuchsia is managed by a top-level userspace clock capability that is cloned and passed to subprocesses. This change ensures that any Rust subprocess gets access to the UTC clock, if the parent had access to it. This is critical for tests, which on Fuchsia, use panic=abort and spawn subprocesses per test.
2020-09-15Auto merge of #75148 - joechrisellis:master, r=Amanieubors-0/+185
Implementation of peer credentials for Unix sockets The code in `ucred.rs` is based on the work done in [PR 13](https://github.com/tokio-rs/tokio-uds/pull/13) in the tokio-uds repository on GitHub. This commit is effectively a port to the stdlib, so credit to Martin Habovštiak (`@Kixunil)` and contributors for the meat of this work. 🥇 Happy to make changes as needed. 🙂
2020-09-15Consolidate wasi::process and unsupported::processEric Huss-157/+3
2020-09-15Consolidate wasi alloc with unix alloc.Eric Huss-111/+45
2020-09-15Consolidate byte-identical modules.Eric Huss-621/+8
2020-09-14Auto merge of #76278 - jethrogb:jb/sgx-rwlock-init-test, r=Mark-Simulacrumbors-23/+11
Improve SGX RWLock initializer test r? `@eddyb` This addresses https://github.com/pnkfelix/rust/pull/1#discussion_r374239895 Fixes https://github.com/fortanix/rust-sgx/issues/213
2020-09-14Fix peer credentials for AndroidJoe Ellis-6/+5
2020-09-14Conditionally compile peer credentials feature for supported platformsJoe Ellis-0/+18
2020-09-14Add documentation to public fields of UCred structJoe Ellis-1/+8
2020-09-14Move Unix peer credentials tests to their own fileJoe Ellis-20/+16
2020-09-14Add pid as an option to UCred structJoe Ellis-3/+5
Currently, PID will be populated for Linux, and set to None for BSDs.
2020-09-14Use `u32::MAX` instead of `u32::max_value`Joe Ellis-1/+1
Co-authored-by: lzutao <taolzu@gmail.com>
2020-09-14Add basic test for Unix peer credentialsJoe Ellis-0/+20
2020-09-14Remove use of `MaybeUninit` in `ucred.rs`Joe Ellis-5/+3
We can simply init the struct directly. There is no real need to use uninit memory here.
2020-09-14Implementation of peer credentials for Unix socketsJoe Ellis-0/+145
The code in `ucred.rs` is based on the work done in PR 13 in the tokio-uds repository on GitHub. Link below for reference: https://github.com/tokio-rs/tokio-uds/pull/13 Credit to Martin Habovštiak (GitHub username Kixunil) and contributors for this work!
2020-09-12Remove Windows details from Unix and VmWorks symlink() docstringsNicholas Bishop-18/+0
This note is not relevant to other operating systems.
2020-09-12Small cleanups in Windows Mutex.Mara Bos-32/+32
- Move `held` into the boxed part, since the SRW lock implementation does not use this. This makes the Mutex 50% smaller. - Use `Cell` instead of `UnsafeCell` for `held`, such that `.replace()` can be used. - Add some comments.
2020-09-12Auto merge of #76561 - Thomasdezeeuw:iov-constant-limits, r=Amanieubors-18/+47
Use IOV_MAX and UIO_MAXIOV constants in limit vectored I/O Also updates the libc dependency to 0.2.77 (from 0.2.74) as the constants were only recently added. Related #68042, #75005 r? `@Amanieu` (also reviewed #75005)
2020-09-12Rollup merge of #76583 - CDirkx:os-doc, r=jonas-schievinkRalf Jung-6/+8
Update `std::os` module documentation. Adds missing descriptions for the modules `std::os::linux::fs` and `std::os::windows::io`. Also adds punctuation for consistency with other descriptions.
2020-09-11Ignore unnecessary unsafe warningsThomas de Zeeuw-2/+21
This is a work-around for a libc issue: https://github.com/rust-lang/libc/issues/1888.
2020-09-11Add `peek` and `peek_from` to `UnixStream` and `UnixDatagram`rijenkii-20/+192
2020-09-11Update `std::os` module documentation.Christiaan Dirkx-6/+8
Adds missing descriptions for the modules std::os::linux::fs and std::os::windows::io. Also adds punctuation for consistency with other descriptions.
2020-09-10Use IOV_MAX and UIO_MAXIOV constants in limit vectored I/OThomas de Zeeuw-16/+26
Also updates the libc dependency to 0.2.77 (from 0.2.74) as the constants were only recently added.
2020-09-09Only call pthread_attr_destroy() after getattr_np() succeeds on all libcsTavian Barnes-2/+4
The calling convention of pthread_getattr_np() is to initialize the pthread_attr_t, so _destroy() is only necessary on success (and _init() isn't necessary beforehand). On the other hand, FreeBSD wants the attr_t to be initialized before pthread_attr_get_np(), and therefore it should always be destroyed afterwards.