Hide IBase static maps.
Because sizeof(IBase) can't be changed, we have a couple of maps to
store data about IBase. Hiding these maps internally inside libhidl* so
that we can more easily remove them in the future if necessary.
Fixes: 122472540
Test: hidl_test, checking logs
Change-Id: Ic722a9fd1f406cf03abb072015078fc7192066ce
diff --git a/transport/HidlTransportSupport.cpp b/transport/HidlTransportSupport.cpp
index b433b70..e645cd0 100644
--- a/transport/HidlTransportSupport.cpp
+++ b/transport/HidlTransportSupport.cpp
@@ -13,13 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include <hidl/HidlBinderSupport.h>
#include <hidl/HidlTransportSupport.h>
-#include <hidl/Static.h>
+
+#include <hidl/HidlBinderSupport.h>
+#include "InternalStatic.h"
#include <android-base/logging.h>
#include <android/hidl/manager/1.0/IServiceManager.h>
+#include <linux/sched.h>
+
namespace android {
namespace hardware {
@@ -92,6 +95,10 @@
return true;
}
+SchedPrio getMinSchedulerPolicy(const sp<IBase>& service) {
+ return details::gServicePrioMap->get(service, {SCHED_NORMAL, 0});
+}
+
bool setRequestingSid(const sp<IBase>& service, bool requesting) {
if (service->isRemote()) {
LOG(ERROR) << "Can't set requesting sid on remote service.";
@@ -108,6 +115,10 @@
return true;
}
+bool getRequestingSid(const sp<IBase>& service) {
+ return details::gServiceSidMap->get(service.get(), false);
+}
+
bool interfacesEqual(const sp<IBase>& left, const sp<IBase>& right) {
if (left == nullptr || right == nullptr || !left->isRemote() || !right->isRemote()) {
return left == right;