Merge "libvndksupport: Add android_is_in_vendor_process()"

am: 4f5625d9c7

Change-Id: I7f4b70a270db8146f3d3814a3cbda814ee454999
This commit is contained in:
Vic Yang 2019-02-14 10:12:18 -08:00 committed by android-build-merger
commit 4d3eae0a05
3 changed files with 22 additions and 0 deletions

View file

@ -20,6 +20,16 @@
extern "C" {
#endif
/*
* Returns whether the current process is a vendor process.
*
* Note that this is only checking what process is running and has nothing to
* do with what namespace the caller is loaded at. For example, a VNDK-SP
* library loaded by SP-HAL calling this function may still get a 'false',
* because it is running in a system process.
*/
int android_is_in_vendor_process();
void* android_load_sphal_library(const char* name, int flag);
int android_unload_sphal_library(void* handle);

View file

@ -1,5 +1,6 @@
LIBVNDKSUPPORT {
global:
android_is_in_vendor_process; # vndk apex
android_load_sphal_library; # vndk apex
android_unload_sphal_library; # vndk apex
local:

View file

@ -45,6 +45,17 @@ static struct android_namespace_t* get_vendor_namespace() {
return vendor_namespace;
}
int android_is_in_vendor_process() {
if (android_get_exported_namespace == NULL) {
ALOGD("android_get_exported_namespace() not available. Assuming system process.");
return 0;
}
// In vendor process, 'vndk' namespace is not visible, whereas in system
// process, it is.
return android_get_exported_namespace("vndk") == NULL;
}
void* android_load_sphal_library(const char* name, int flag) {
struct android_namespace_t* vendor_namespace = get_vendor_namespace();
if (vendor_namespace != NULL) {