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

Commit 241b62b2 authored by Andrew Walbran's avatar Andrew Walbran Committed by Automerger Merge Worker
Browse files

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

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id10cdf3e64686f8f491dbccda1220286e1c1ad24
parents 39a77837 c9c0dfbf
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 {