[gbinder] Fixed a threading issue. JB#42956
Make sure that transaction handlers don't get invoked on a worker thread. It was possible in cases if an incoming transaction arrives while we are waiting for response from an asynchronous call to servicemanager (which is actually a synchronous call made on a worker thread). Invoking callbacks on a worker thread would completely break libgbinder's synchronization model. It was a pretty unlikely scenario, though.
Showing
- src/gbinder_client.c 66 additions, 41 deletionssrc/gbinder_client.c
- src/gbinder_client_p.h 20 additions, 2 deletionssrc/gbinder_client_p.h
- src/gbinder_ipc.c 146 additions, 66 deletionssrc/gbinder_ipc.c
- src/gbinder_ipc.h 27 additions, 19 deletionssrc/gbinder_ipc.h
- src/gbinder_servicemanager.c 15 additions, 12 deletionssrc/gbinder_servicemanager.c
- src/gbinder_servicemanager_aidl.c 15 additions, 12 deletionssrc/gbinder_servicemanager_aidl.c
- src/gbinder_servicemanager_hidl.c 15 additions, 12 deletionssrc/gbinder_servicemanager_hidl.c
- src/gbinder_servicemanager_p.h 7 additions, 8 deletionssrc/gbinder_servicemanager_p.h
- src/gbinder_types_p.h 3 additions, 2 deletionssrc/gbinder_types_p.h
- unit/unit_ipc/unit_ipc.c 15 additions, 10 deletionsunit/unit_ipc/unit_ipc.c
- unit/unit_servicemanager/unit_servicemanager.c 8 additions, 5 deletionsunit/unit_servicemanager/unit_servicemanager.c
- unit/unit_servicename/unit_servicename.c 8 additions, 5 deletionsunit/unit_servicename/unit_servicename.c
- unit/unit_servicepoll/unit_servicepoll.c 8 additions, 5 deletionsunit/unit_servicepoll/unit_servicepoll.c
Loading
Please register or sign in to comment