Commit graph

20 commits

Author SHA1 Message Date
Yuki Okushi
4136ed26a1
Rollup merge of #74979 - maekawatoshiki:fix, r=Mark-Simulacrum
`#![deny(unsafe_op_in_unsafe_fn)]` in sys/hermit

Partial fix of #73904.

This encloses ``unsafe`` operations in ``unsafe fn`` in ``sys/hermit``.
Some unsafe blocks are not well documented because some system-based functions lack documents.
2020-11-07 01:01:59 +09:00
Stefan Lankes
bf268fe928
box mutex to get a movable mutex
the commit avoid an alignement issue in Mutex implementation
2020-10-13 23:25:42 +02:00
Stefan Lankes
1741e5b8f5
define required type 'MovableMutex' 2020-10-12 06:54:48 +02:00
Stefan Lankes
30c3dadb4d
reuse implementation of the system provider "unsupported" 2020-10-12 06:53:06 +02:00
Stefan Lankes
33fd08b61f
remove obsolete function diverge 2020-10-12 06:51:52 +02:00
Stefan Lankes
530f575466
revise code to pass the format check 2020-10-11 11:56:00 +02:00
Stefan Lankes
d6e955f3bf
fix typos in new method 2020-10-11 11:55:51 +02:00
Stefan Lankes
986c1fc053
revise comments and descriptions of the helper functions 2020-10-11 11:54:54 +02:00
Stefan Lankes
d560b50d87
revise code to pass the format check 2020-10-11 11:54:16 +02:00
Stefan Lankes
16d65d0432
revise Hermit's mutex interface to support the behaviour of StaticMutex
rust-lang/rust#77147 simplifies things by splitting this Mutex type
into two types matching the two use cases: StaticMutex and MovableMutex.
To support the behavior of StaticMutex, we move part of the mutex
implementation into libstd.
2020-10-11 11:53:30 +02:00
maekawatoshiki
14158f5514 Remove #![allow(unsafe_op_in_unsafe_fn)] except for mod.rs 2020-10-08 22:13:19 +09:00
Mara Bos
b181f5a923 Make it possible to have unboxed condvars on specific platforms.
This commit keeps all condvars boxed on all platforms, but makes it
trivial to remove the box on some platforms later.
2020-10-02 09:47:08 +02:00
Mara Bos
6f6336b4a1 Split sys_common::Mutex in StaticMutex and MovableMutex.
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-27 10:05:56 +02:00
Tomasz Miąsko
4a00421ba4 Make raw standard stream constructors const 2020-08-21 13:17:20 +02:00
Tomasz Miąsko
479c23bb49 Remove result type from raw standard streams constructors
Raw standard streams constructors are infallible. Remove unnecessary
result type.
2020-08-21 13:17:20 +02:00
maekawatoshiki
d94258e83e Add #![allow(unsafe_op_in_unsafe_fn)] in sys/hermit 2020-08-21 14:41:04 +09:00
maekawatoshiki
3a46cca4ae Revert "#![deny(unsafe_op_in_unsafe_fn)] in sys/hermit"
This reverts commit 7cae9e8c88.
2020-08-21 14:14:58 +09:00
maekawatoshiki
7cae9e8c88 #![deny(unsafe_op_in_unsafe_fn)] in sys/hermit 2020-07-31 21:08:08 +09:00
Stefan Lankes
a4fb1d0b76 adjust remaining targets
- fix commit 7dc3886
- previous commit doesn't adjust all targets
2020-07-28 11:26:01 +02:00
mark
2c31b45ae8 mv std libs to library/ 2020-07-27 19:51:13 -05:00