高通平台Performance机制学习总结

转自:https://429564140.iteye.com/blog/2410445

Performance是很好的一个机制,可以提供系统程序运行的性能,不过在工控领域注意这样大面积使用之后,系统高温测试是否能够通过的问题。其实原理是通过启动CPU多于的核并且调度CPU频率调整来实现资源快速加载的目的。

具体如下:

高通平台Performance机制学习总结 
利用在高通平台中的Performance机制,可以提高性能,比如应用的启动速度,滑动流畅性等。接下来就看下高通给我们提供的Performance机制 
1.该机制的JNI层实现部分位于 

JAVA代码:
./vendor/qcom/proprietary/android-perf/QPerformance/jni/com_qualcomm_qti_Performance.cpp  

上层实现位于 

JAVA代码:
./vendor/qcom/proprietary/android-perf/QPerformance/src/com/qualcomm/qti/Performance.java  

2、framework层的使用需要通过反射机制调用com.qualcomm.qti.Performance 
具体实现在: 

JAVA代码:
./frameworks/base/core/java/android/util/BoostFramework.java  

在BoostFramework的构造函数中通过反射调用Performance对象,而BoostFramework中的好多方法是被hide掉的,可能是为了安全考虑吧,在应用层无法使用,只能在系统层使用。现在举一个例子当应用启动时创建进程的时候可以使用高通给我们提供的Performance机制。 
在ActivityManagerService中,构造中会判断是否启动该机制 

JAVA代码:
mIsLaunchBoostv2_enabled = mContext.getResources().getBoolean(  
                   com.android.internal.R.bool.config_enableLaunchBoostv2);  
if(mIsLaunchBoostv2_enabled) {  
           lBoost_v2_TimeOut = mContext.getResources().getInteger(  
                   com.android.internal.R.integer.lboostv2_timeout_param);  
           lBoost_v2_ParamVal = mContext.getResources().getIntArray(  
                   com.android.internal.R.array.lboostv2_param_value);  
        }  

在startProcessLocked中进行判断:

JAVA代码:
// Start launch boost v2  
               if (mIsLaunchBoostv2_enabled == true && sPerfBoost_v2 == null) {  
                   sPerfBoost_v2 = new BoostFramework();  
               }  
               if (sPerfBoost_v2 != null) {  
                  sPerfBoost_v2.perfLockAcquire(lBoost_v2_TimeOut, lBoost_v2_ParamVal);  
                  sIsLaunchBoostv2_set = true;  
               }  

接下来看一下核心部分BoostFramework的实现 
构造函数中通过反射获得Performance对象 

JAVA代码:
public BoostFramework() {  
  
    if (mIsLoaded == false) {  
        try {  
            Class perfClass;  
            PathClassLoader perfClassLoader;  
  
     perfClassLoader = new PathClassLoader(PERFORMANCE_JAR,  
                              ClassLoader.getSystemClassLoader());  
            perfClass = perfClassLoader.loadClass(PERFORMANCE_CLASS);  
            mConstructor = perfClass.getConstructor();  
  
            Class[] argClasses = new Class[] {int.class, int[].class};  
            mAcquireFunc =  perfClass.getDeclaredMethod("perfLockAcquire", argClasses);  
            Log.v(TAG,"mAcquireFunc method = " + mAcquireFunc);  
  
            argClasses = new Class[] {};  
            mReleaseFunc =  perfClass.getDeclaredMethod("perfLockRelease", argClasses);  
            Log.v(TAG,"mReleaseFunc method = " + mReleaseFunc);  
  
            argClasses = new Class[] {MotionEvent.class, DisplayMetrics.class, int.class, int[].cla  

之前调用的方法perfLockAcquire的真是面目 

JAVA代码:
/** @hide */  
    public int perfLockAcquire(int duration, int... list) {  
        int ret = -1;  
        try {  
            Object retVal = mAcquireFunc.invoke(mPerf, duration, list);  
            ret = (int)retVal;  
        } catch(Exception e) {  
            Log.e(TAG,"Exception " + e);  
        }  
        return ret;  
    }  

通过构造中的mAcquireFunc =  perfClass.getDeclaredMethod("perfLockAcquire", argClasses);看其调用的还是Performance中的perfLockAcquire方法。 
在Performance.java中会深入到JNI层: 

static {  
        try {  
            System.loadLibrary("qti_performance");  
        } catch (UnsatisfiedLinkError e) {  
        }  
    }  

/** &hide */  
    public int perfLockAcquire(int duration, int... list) {  
        int rc = REQUEST_SUCCEEDED;  
        handle = native_perf_lock_acq(handle, duration, list);  
        if (handle == 0)  
            rc = REQUEST_FAILED;  
        return rc;  
    }  

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
高通平台security学习笔记 高通平台security是指在高通芯片平台上进行的安全相关学习高通是一家知名的移动通信技术公司,其芯片在手机、智能设备等领域应用广泛。在学习高通平台security时,需要掌握以下内容。 首先是高通芯片的安全特性。高通芯片具有多种硬件和软件级别的安全特性,包括嵌入式安全核心、可信执行环境、安全引导、安全刷机等。这些特性可以提供硬件级别的安全保护,防止恶意软件和攻击。 其次是高通平台安全建设。高通提供了一系列的安全解决方案,包括安全编程指南、安全开发工具和平台、安全模块等。学习时需要了解这些解决方案的原理和使用方法,以便进行高效、安全的应用开发。 再次是高通安全相关技术的学习高通平台涵盖了多个安全相关技术,如加密算法、认证协议、数据保护等。学习时需要深入理解这些技术的原理和应用场景,以便在实际开发中进行正确的选择和使用。 最后是高通平台安全漏洞的分析和修复。学习时需要了解常见的安全漏洞类型和攻击手段,以及相应的修复方法。掌握高通平台的漏洞分析和修复技术,可以提高应用的安全性和稳定性。 总的来说,学习高通平台security需要对高通芯片的安全特性、安全建设、安全技术和漏洞分析等方面有一定的了解。只有深入学习和实践,才能在高通平台上构建安全可靠的应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值