Commit graph

111 commits

Author SHA1 Message Date
Konrad Borowski
500a8e1336 Inline AsRawFd implementations 2023-05-01 13:28:19 +02:00
Konrad Borowski
174c0e86ca Inline AsInner implementations 2023-05-01 13:25:09 +02:00
Matthias Krüger
f2f5efce9c
Rollup merge of #109722 - hermitcore:read, r=Mark-Simulacrum
Implement read_buf for RustHermit

In principle, this PR extends rust-lang/rust#108326 for RustyHermit.
2023-04-03 08:58:53 +02:00
Matthias Krüger
57f1d114cd
Rollup merge of #107387 - joboet:hermit_random, r=ChrisDenton
Use random `HashMap` keys on Hermit

Initializing the keys with random data provided by the libOS avoids HashDOS attacks and similar issues.

CC `@stlankes`
2023-03-29 21:19:47 +02:00
Stefan Lankes
a9aaf3fedb Implement read_buf for RustHermit
In principle, this PR extends rust-lang/rust#108326 for RustyHermit.

Signed-off-by: Stefan Lankes <slankes@eonerc.rwth-aachen.de>
2023-03-29 15:29:36 +02:00
joboet
f6bde0352b
std: use cvt to handle errors from read_entropy on Hermit 2023-03-29 10:52:48 +02:00
Stefan Lankes
05542d9c67 fix typo in the creation of OpenOption
Due to this typo we have to build a workaround for issue
hermitcore/libhermit-rs#191.

RustyHermit is a tier 3 platform and backward compatibility does
not have to be guaranteed.
2023-03-19 22:59:48 +01:00
Stefan Lankes
ae27762ceb use as_ptr to determine the address of atomics 2023-02-27 09:59:57 +01:00
Stefan Lankes
daf31a113c remove unused imports 2023-02-26 23:13:58 +01:00
joboet
fdbf109b63
std: use random HashMap keys on Hermit 2023-02-26 11:33:28 +01:00
Stefan Lankes
90162a78a9 remove code duplications 2023-02-24 15:30:14 +01:00
Stefan Lankes
b5fb4f3d9b move IO traits to std/src/os/hermit
By moving the IO traits, the RustyHermit support is harmonized to
of other operating systems.
2023-02-24 15:30:14 +01:00
Stefan Lankes
7143379a52 add support of RustyHermit's BSD socket layer
RustHermit publishs a new kernel interface and supports
a common BSD socket layer. By supporting this interface,
the implementation can be harmonized to other operating systems.

To realize this socket layer, the handling of file descriptors
is also harmonized to other operating systems.
2023-02-24 15:30:14 +01:00
Martin Kröning
913a566c22 Hermit: Remove floor symbol
This symbol should be provided by Hermit.
2023-02-12 23:37:58 +01:00
joboet
7f2cf19191
refactor[std]: do not use box syntax 2023-01-17 14:08:35 +01:00
Martin Kröning
0a4e5efe6f hermit: Remove unused exports 2022-11-29 12:25:35 +01:00
Martin Kröning
c8f3203c46 hermit: Fix fuzzy_provenance_casts 2022-11-29 12:25:35 +01:00
joboet
98815742cf
std: remove lock wrappers in sys_common 2022-11-06 15:32:59 +01:00
joboet
2d2c9e4493
std: use sync::Mutex for internal statics 2022-10-13 12:55:14 +02:00
Alex Saveau
86974b83af
Reduce CString allocations in std as much as possible
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2022-10-03 11:13:17 -07:00
joboet
262193e044
std: use futex-based locks and thread parker on Hermit 2022-09-09 11:56:50 +02:00
Michael Goulet
2c4dc4f494
Rollup merge of #101423 - mkroening:hermit-warnings, r=sanxiyn
Fix hermit warnings

This fixes two `unused_imprt` and one `dead_code` warning for hermit.
2022-09-08 14:41:08 -07:00
Dylan DPC
7064344ba4
Rollup merge of #101422 - mkroening:hermit-file-time, r=joshtriplett
Hermit: Add File::set_time stub

This is not supported on hermit yet. This change is required for compiling std.
2022-09-08 11:55:07 +05:30
bors
e7cdd4c090 Auto merge of #100576 - joboet:movable_const_remutex, r=Mark-Simulacrum
Make `ReentrantMutex` movable and `const`

As `MovableMutex` is now `const`, it can be used to simplify the implementation and interface of the internal reentrant mutex type. Consequently, the standard error stream does not need to be wrapped in `OnceLock` and `OnceLock::get_or_init_pin()` can be removed.
2022-09-04 22:53:58 +00:00
Martin Kröning
ce305f8f8e Hermit: Remove unused socklen_t (dead_code) 2022-09-05 00:23:38 +02:00
Martin Kröning
11af142c93 Hermit: Fix unused_imports 2022-09-05 00:23:38 +02:00
Martin Kröning
3b985b4dd6 Hermit: Add File::set_time stub
This is not supported on hermit yet. This change is required for compiling std.
2022-09-05 00:17:46 +02:00
joboet
8c37fdf2d7
std: make ReentrantMutex movable and const; simplify Stdout initialization 2022-09-03 14:05:28 +02:00
Martin Nordholts
ddee45e1d7 Support #[unix_sigpipe = "inherit|sig_dfl|sig_ign"] on fn main()
This makes it possible to instruct libstd to never touch the signal
handler for `SIGPIPE`, which makes programs pipeable by default (e.g.
with `./your-program | head -n 1`) without `ErrorKind::BrokenPipe`
errors.
2022-08-28 19:46:45 +02:00
Nick Cameron
ac70aea985 Address reviewer comments
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2022-08-18 10:34:40 +01:00
Nick Cameron
1a2122fff0 non-linux platforms
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2022-08-05 17:18:51 +01:00
Martin Kröning
0c8860273c Hermit: Make Mutex::init a no-op 2022-06-26 23:20:41 +02:00
Martin Kröning
f954f7b23b Hermit: Fix initializing lazy locks 2022-06-26 23:19:38 +02:00
Stefan Lankes
85b5f74043 remove unneeded code 2022-06-08 15:35:49 +02:00
Mara Bos
ac5aa1ded5 Use Drop instead of destroy() for locks. 2022-06-03 16:45:47 +02:00
Mara Bos
4f212f08cf Use Rust 2021 prelude in std itself. 2022-05-09 11:12:32 +02:00
Mara Bos
4212de63ab Use a single ReentrantMutex implementation on all platforms. 2022-04-16 11:30:22 +02:00
Vadim Petrochenkov
6eaec56ef7 library: Remove definitions and reexports of strlen from libstd 2022-04-14 21:57:01 +03:00
Mara Bos
6e16f9b10f Rename RWLock to RwLock in std::sys. 2022-04-06 16:33:53 +02:00
Mara Bos
733153f2e5 Move std::sys::{mutex, condvar, rwlock} to std::sys::locks. 2022-03-22 18:19:47 +01:00
Stefan Lankes
227d106aec remove compiler warnings 2022-02-15 14:03:26 +01:00
The8472
9d8ef11607 make Instant::{duration_since, elapsed, sub} saturating and remove workarounds
This removes all mutex/atomics based workarounds for non-monotonic clocks and makes the previously panicking methods saturating instead.

Effectively this moves the monotonization from `Instant` construction to the comparisons.

This has some observable effects, especially on platforms without monotonic clocks:

* Incorrectly ordered Instant comparisons no longer panic. This may hide some programming errors until someone actually looks at the resulting `Duration`
* `checked_duration_since` will now return `None` in more cases. Previously it only happened when one compared instants obtained in the wrong order or
  manually created ones. Now it also does on backslides.

The upside is reduced complexity and lower overhead of `Instant::now`.
2022-02-13 01:04:55 +01:00
Thom Chiovoloni
554918e311
Hide Repr details from io::Error, and rework io::Error::new_const. 2022-02-04 18:47:29 -08:00
bors
3b263ceb5c Auto merge of #81156 - DrMeepster:read_buf, r=joshtriplett
Implement most of RFC 2930, providing the ReadBuf abstraction

This replaces the `Initializer` abstraction for permitting reading into uninitialized buffers, closing #42788.

This leaves several APIs described in the RFC out of scope for the initial implementation:

* read_buf_vectored
* `ReadBufs`

Closes #42788, by removing the relevant APIs.
2021-12-09 10:11:55 +00:00
Stefan Lankes
6911af9d06
Improving the readability
Co-authored-by: kennytm <kennytm@gmail.com>
2021-11-24 21:12:56 +01:00
Stefan Lankes
644b445428 If the thread does not get the lock in the short term, yield the CPU
Reduces the amount of wasted processor cycles
2021-11-24 15:59:28 +01:00
DrMeepster
5a97090b04 more efficent File::read_buf impl for windows and unix 2021-11-02 22:47:26 -07:00
Martin Kröning
42cab439f5 hermit: Implement Condvar::wait_timeout 2021-10-29 17:20:03 +02:00
Stefan Lankes
2f4cbf003f remove compiler warnings 2021-10-16 09:45:05 +02:00
Yoshua Wuyts
6cc91cb3d8 Rename std:🧵:available_onccurrency to std:🧵:available_parallelism 2021-09-28 14:59:33 +02:00