ANDROID: rust_binder: add threading support
The binder driver needs to keep track of the threads that a process
uses with the driver for several reasons:
1. When replying to a transaction, it is assumed that you are replying
to the "currently active transaction" on the thread you made the
syscall from. The syscall does not provide any way to specify which
transaction you are replying to.
2. When a thread is sleeping while waiting for incoming transactions,
the driver needs to keep track of where it can deliver a transaction
to.
3. The BINDER_GET_EXTENDED_ERROR ioctl gives you the last error
triggered by a syscall on the same thread, so it needs to keep track
of this value for each thread.
4. For binder servers, the driver keeps track of whether a process has
enough threads in its transaction thread pool.
Note that not all of the above items are implemented yet. Some of them
will appear in later patches.
In this patch, we add the structures to keep track of the threads and
implement item 3 and 4 in the above list.
Link: https://lore.kernel.org/rust-for-linux/20231101-rust-binder-v1-3-08ba9197f637@google.com/
Change-Id: Icbd5303a7eb9a0eba55c2946788365466fc1da98
Co-developed-by:
Wedson Almeida Filho <wedsonaf@gmail.com>
Co-developed-by:
Matt Gilbride <mattgilbride@google.com>
Signed-off-by:
Wedson Almeida Filho <wedsonaf@gmail.com>
Signed-off-by:
Matt Gilbride <mattgilbride@google.com>
Signed-off-by:
Alice Ryhl <aliceryhl@google.com>
Bug: 278052745
Loading
Please sign in to comment