ANDROID: rust_binder: add non-oneway transactions
Make it possible to send transactions that are not oneway transactions, that is, transactions that you need to reply to. Generally, binder will try to look like a normal function call, where the call blocks until the function returns. This is implemented by allowing you to reply to incoming transactions, and having the sender sleep until a reply arrives. For each thread, binder will keep track of the current transaction. Furthermore, if you send a transaction from a thread that already has a current transaction, then binder will make that transaction into a "sub-transaction". This mimicks a call stack with normal functions. If you use subtransactions to send calls A->B->A with A and B being two different processes, then binder will ensure that the incoming sub-transaction is executed on the thread in A that sent the original message to B (and that thread in A is not used for any other incoming transactions). This feature is often referred to as "deadlock avoidance" because it avoids the case where A's threadpool has run out of threads, preventing the incoming subtransaction from being processed. Link: https://lore.kernel.org/rust-for-linux/20231101-rust-binder-v1-8-08ba9197f637@google.com/ Change-Id: I9042150ca671a3c15c1087dfd5b76510912e7438 Co-developed-by:Alice Ryhl <aliceryhl@google.com> Signed-off-by:
Wedson Almeida Filho <wedsonaf@gmail.com> Signed-off-by:
Alice Ryhl <aliceryhl@google.com> Bug: 278052745
Loading
Please sign in to comment