libbinder: RpcAddress is uint64_t
This was originally a 32 byte array filled by /dev/urandom, because the expectation was to build off of this in order to allow for transitive binder sends (process A sends a binder to process B which sends it to process C and then allowing C to talk directly to process A - this would need some large cryptographic token representing the binder and address information in order to securely open up a new communication channel to A). However, this is currently not supported in RPC binder (and even if it were - which I find unlikely b/c of the security complexity, a lot more work would need to be done). Simply, we don't need to pay this cost since we're not using it. Bug: 182940634 Fixes: 182939933 Test: binderRpcBenchmark ------------------------------------------------------------------------------------ Benchmark Time CPU ------------------------------------------------------------------------------------ // before this change BM_repeatBinder/0 61680 ns 33016 ns BM_repeatBinder/1 162368 ns 87825 ns // after this change BM_repeatBinder/0 60041 ns 32787 ns BM_repeatBinder/1 109857 ns 55605 ns -> reduce overhead of rpc binder (when sending many binders) by the overhead of a normal kernel binder call (still a ways to go) Change-Id: If27bffb5611bdd17f16156ddfe50ac2449f6046a
Loading
Please register or sign in to comment