Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66d3e5cc authored by Andrew Walbran's avatar Andrew Walbran Committed by Automerger Merge Worker
Browse files

Merge "Mark Status as Sync and Send." am: c9c0dfbf am: 241b62b2 am: e1453c16

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1620972

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I91343f7b4d50969c61f2142c7b9d15e3e6de8ade
parents 11e34081 e1453c16
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -77,9 +77,7 @@ fn parse_exception_code(code: i32) -> ExceptionCode {
        e if e == ExceptionCode::ILLEGAL_ARGUMENT as i32 => ExceptionCode::ILLEGAL_ARGUMENT,
        e if e == ExceptionCode::NULL_POINTER as i32 => ExceptionCode::NULL_POINTER,
        e if e == ExceptionCode::ILLEGAL_STATE as i32 => ExceptionCode::ILLEGAL_STATE,
        e if e == ExceptionCode::NETWORK_MAIN_THREAD as i32 => {
            ExceptionCode::NETWORK_MAIN_THREAD
        }
        e if e == ExceptionCode::NETWORK_MAIN_THREAD as i32 => ExceptionCode::NETWORK_MAIN_THREAD,
        e if e == ExceptionCode::UNSUPPORTED_OPERATION as i32 => {
            ExceptionCode::UNSUPPORTED_OPERATION
        }
@@ -96,6 +94,16 @@ fn parse_exception_code(code: i32) -> ExceptionCode {
/// Used in AIDL transactions to represent failed transactions.
pub struct Status(*mut sys::AStatus);

// Safety: The `AStatus` that the `Status` points to must have an entirely thread-safe API for the
// duration of the `Status` object's lifetime. We ensure this by not allowing mutation of a `Status`
// in Rust, and the NDK API says we're the owner of our `AStatus` objects so outside code should not
// be mutating them underneath us.
unsafe impl Sync for Status {}

// Safety: `Status` always contains an owning pointer to a global, immutable, interned `AStatus`.
// A thread-local `AStatus` would not be valid.
unsafe impl Send for Status {}

impl Status {
    /// Create a status object representing a successful transaction.
    pub fn ok() -> Self {