当前位置: 首页 > news >正文

东莞服饰网站建设哪家好淘宝官网首页登录电脑版

东莞服饰网站建设哪家好,淘宝官网首页登录电脑版,做网站前的准备工作,网站备案初审1 原理说明 这个方案有如下基本需求#xff1a; 构建自定义CPUSET#xff0c;/dev/cpuset中包含一个全新的cpuset分组。且可以通过set_cpuset_policy和set_sched_policy接口可以设置自定义CPUSET。开机启动后可以通过zygote判定来对特定的应用进程设置CPUSET#xff0c;并…1 原理说明 这个方案有如下基本需求 构建自定义CPUSET/dev/cpuset中包含一个全新的cpuset分组。且可以通过set_cpuset_policy和set_sched_policy接口可以设置自定义CPUSET。开机启动后可以通过zygote判定来对特定的应用进程设置CPUSET并一直保持且保证自定义CPUSET不受其他CPUSET影响持续独立。 原理上因为修改代码涉及部分较多因此共分3个部分 framework修改添加SCHED GROUP和THREAD GROUPTHREAD_GROUP_对应SP_的支持且支持开机启动后直接设置。applyOomAdjLSP的判定保持不变。system修改添加SP_CUSTOM的支持及set_cpuset_policy和set_sched_policy接口等支持同时修改task_profiles.json添加SP_CUSTOM CPUSET的支持。init.rc修改及编译部分调整对自定义cpuset节点进行操作vndk部分编译需要重新调整方案以及不修改VNDK如何保证编译通过。 由于修改中涉及代码量过大这里拆分成两节进行展示。本章节主要针对第2部分和第3部分修改进行说明。上一篇文章 Android Framework 常见解决方案25-1定制CPUSET解决方案-framework部分修改 主要对第1部分修改进行说明。 2 修改方案Android S 2.1 system部分修改 针对system分区修改。具体修改方案如下这里以S版本修改为主Q和R有一些差异但原理不变 在$AOSP/system/core/libprocessgroup/include/processgroup/sched_policy.h文件中修改 /* Keep in sync with THREAD_GROUP_* in frameworks/base/core/java/android/os/Process.java */ typedef enum {SP_DEFAULT -1,SP_BACKGROUND 0,SP_FOREGROUND 1,SP_SYSTEM 2,SP_AUDIO_APP 3,SP_AUDIO_SYS 4,SP_TOP_APP 5,SP_RT_APP 6,SP_RESTRICTED 7,SP_CUSTOM 8,SP_CNT,SP_MAX SP_CNT - 1,SP_SYSTEM_DEFAULT SP_FOREGROUND, } SchedPolicy; 这里注意按照顺序填写修改相对简单因为后续会用到SP_CNT和SP_MAX这两个变量代码中还会有许多的遍历操作因此最好采用累加方案不要设置其他值。 本方案的修改比较全面即支持set_cpuset_policy也兼容到set_sched_policy在实际操作中可根据需要只修改其中一个即可。 在$AOSP/system/core/libprocessgroup/sched_policy.cpp文件中修改 //修改set_cpuset_policy添加SP_CUSTOM的处理 int set_cpuset_policy(int tid, SchedPolicy policy) {if (tid 0) {tid GetThreadId();}policy _policy(policy);switch (policy) {case SP_BACKGROUND:return SetTaskProfiles(tid, {CPUSET_SP_BACKGROUND, BlkIOBackground}, true) ? 0 : -1;case SP_FOREGROUND:return SetTaskProfiles(tid, {CPUSET_SP_FOREGROUND, BlkIOForeground}, true) ? 0 : -1;case SP_AUDIO_APP:case SP_AUDIO_SYS:return SetTaskProfiles(tid, {CPUSET_SP_FOREGROUND, AudioAppCapacity, BlkIOForeground}, true) ? 0 : -1;case SP_TOP_APP:return SetTaskProfiles(tid, {CPUSET_SP_TOP_APP, BlkIOBackground}, true) ? 0 : -1;case SP_SYSTEM:return SetTaskProfiles(tid, {CPUSET_SP_SYSTEM, BlkIOForeground}, true) ? 0 : -1;case SP_RESTRICTED:return SetTaskProfiles(tid, {CPUSET_SP_RESTRICTED}, true) ? 0 : -1;case SP_CUSTOM:return SetTaskProfiles(tid, {CPUSET_SP_CUSTOM}, true) ? 0 : -1;default:break;}return 0; }//修改set_sched_policy添加SP_CUSTOM的处理 int set_sched_policy(int tid, SchedPolicy policy) { //... #if POLICY_DEBUG //注意这一段的修改主要是调试使用功能实现上可以不添加该部分 //...switch (policy) {case SP_BACKGROUND:SLOGD(vvv tid %d (%s), tid, thread_name);break;case SP_FOREGROUND:case SP_AUDIO_APP:case SP_AUDIO_SYS:case SP_TOP_APP:SLOGD(^^^ tid %d policy %d (%s), tid, policy, thread_name);break;case SP_SYSTEM:SLOGD(/// tid %d (%s), tid, thread_name);break;case SP_RT_APP:SLOGD(RT tid %d (%s), tid, thread_name);break;case SP_CUSTOM:SLOGD(CUSTOM|xxx tid %d (%s), tid, thread_name);break;default:SLOGD(??? tid %d (%s), tid, thread_name);break;} #endif //...switch (policy) {case SP_BACKGROUND:return SetTaskProfiles(tid, {SCHED_SP_BACKGROUND, BlkIOBackground}, true) ? 0 : -1;case SP_FOREGROUND:case SP_AUDIO_APP:case SP_AUDIO_SYS:return SetTaskProfiles(tid, {SCHED_SP_FOREGROUND, BlkIOForeground}, true) ? 0 : -1;case SP_TOP_APP:return SetTaskProfiles(tid, {SCHED_SP_TOP_APP, BlkIOForeground}, true) ? 0 : -1;case SP_SYSTEM:return SetTaskProfiles(tid, {SCHED_SP_SYSTEM}, true) ? 0 : -1;case SP_RT_APP:return SetTaskProfiles(tid, {SCHED_SP_RT_APP, BlkIOForeground}, true) ? 0 : -1;case SP_CUSTOM:return SetTaskProfiles(tid, {SCHED_SP_CUSTOM}, true) ? 0 : -1;default:return SetTaskProfiles(tid, {SCHED_SP_DEFAULT}, true) ? 0 : -1;}return 0;} //修改get_sched_policy_from_group添加SP_CUSTOM的处理 static int get_sched_policy_from_group(const std::string group, SchedPolicy* policy) {if (group.empty()) {*policy SP_FOREGROUND;} else if (group foreground) {*policy SP_FOREGROUND;} else if (group system-background) {*policy SP_SYSTEM;} else if (group background) {*policy SP_BACKGROUND;} else if (group top-app) {*policy SP_TOP_APP;} else if (group restricted) {*policy SP_RESTRICTED;} else if (group audio-app) {*policy SP_AUDIO_APP;} else if (group custom) {*policy SP_CUSTOM;} else {errno ERANGE;return -1;}return 0; }//修改get_sched_policy_name添加SP_CUSTOM的处理 const char* get_sched_policy_name(SchedPolicy policy) {policy _policy(policy);static const char* const kSchedPolicyNames[] {[SP_BACKGROUND] bg, [SP_FOREGROUND] fg, [SP_SYSTEM] ,[SP_AUDIO_APP] aa, [SP_AUDIO_SYS] as, [SP_TOP_APP] ta, - [SP_RT_APP] rt, [SP_RESTRICTED] rs,[SP_RT_APP] rt, [SP_RESTRICTED] rs,[SP_CUSTOM] ct,};static_assert(arraysize(kSchedPolicyNames) SP_CNT, missing name);if (policy SP_BACKGROUND || policy SP_CNT) {return nullptr;}return kSchedPolicyNames[policy]; }//修改get_cpuset_policy_profile_name添加SP_CUSTOM的处理 const char* get_cpuset_policy_profile_name(SchedPolicy policy) {/** cpuset profile array for:* SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1),* SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), - * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7),* SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7), SP_CUSTOM(8)* index is policy 1* this need keep in sync with SchedPolicy enum*/static constexpr const char* kCpusetProfiles[SP_CNT 1] {CPUSET_SP_DEFAULT, CPUSET_SP_BACKGROUND, CPUSET_SP_FOREGROUND,CPUSET_SP_SYSTEM, CPUSET_SP_FOREGROUND, CPUSET_SP_FOREGROUND, - CPUSET_SP_TOP_APP, CPUSET_SP_DEFAULT, CPUSET_SP_RESTRICTEDCPUSET_SP_TOP_APP, CPUSET_SP_DEFAULT, CPUSET_SP_RESTRICTED,CPUSET_SP_CUSTOM};if (policy SP_DEFAULT || policy SP_CNT) {return nullptr;}return kCpusetProfiles[policy 1]; }//修改get_sched_policy_profile_name添加SP_CUSTOM的处理 const char* get_sched_policy_profile_name(SchedPolicy policy) {/** sched profile array for:* SP_DEFAULT(-1), SP_BACKGROUND(0), SP_FOREGROUND(1),* SP_SYSTEM(2), SP_AUDIO_APP(3), SP_AUDIO_SYS(4), - * SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7),* SP_TOP_APP(5), SP_RT_APP(6), SP_RESTRICTED(7),SP_CUSTOM(8)* index is policy 1* this need keep in sync with SchedPolicy enum*/static constexpr const char* kSchedProfiles[SP_CNT 1] {SCHED_SP_DEFAULT, SCHED_SP_BACKGROUND, SCHED_SP_FOREGROUND,SCHED_SP_SYSTEM, SCHED_SP_FOREGROUND, SCHED_SP_FOREGROUND, - SCHED_SP_TOP_APP, SCHED_SP_RT_APP, SCHED_SP_DEFAULTSCHED_SP_TOP_APP, SCHED_SP_RT_APP, SCHED_SP_DEFAULT,SCHED_SP_CUSTOM};if (policy SP_DEFAULT || policy SP_CNT) {return nullptr;}return kSchedProfiles[policy 1]; } 以上2部分主要是逻辑的修改接下来是配置文件的修改在$AOSP/system/core/libprocessgroup/profiles/task_profiles.json文件中修改 {Attributes: [{Name: LowCapacityCPUs,Controller: cpuset,File: background/cpus},...{Name: CustomCPUs,Controller: cpuset,File: custom/cpus},...{Name: FreezerState,Controller: freezer,File: cgroup.freeze}],Profiles: [{Name: HighEnergySaving,Actions: [{Name: JoinCgroup,Params:{Controller: cpu,Path: background}}]},...{Name: CustomPerformance,Actions : [{Name : JoinCgroup,Params :{Controller: cpuset,Path: custom}}]},...{Name: SystemMemoryProcess,Actions: [{Name: JoinCgroup,Params:{Controller: memory,Path: system}}]}],AggregateProfiles: [{Name: SCHED_SP_DEFAULT,Profiles: [ TimerSlackNormal ]},...{Name: SCHED_SP_RT_APP,Profiles: [ RealtimePerformance, MaxIoPriority, TimerSlackNormal ]},{Name: SCHED_SP_CUSTOM,Profiles: [ CUSTOMPerformance ]},...{Name: CPUSET_SP_CUSTOM,Profiles: [ CUSTOMPerformance ]},...{Name: Dex2OatBootComplete,Profiles: [ Dex2oatPerformance, LowIoPriority, TimerSlackHigh ]}] } 至此system相关修改就结束了。主要是SP_CUSTOM相关逻辑的添加配置文件task_profiles.json的修改接口set_cpuset_policy和set_sched_policy的支持等。 2.2 init.rc及编译部分调整 为添加cpuset相关节点需要修改init.rc文件这里根据android源码的需要调整到对应的rc中添加即可。具体init.rc修改内容如下 #第一部分on init中添加 ... #custom add startmkdir /dev/stune/customchown system system /dev/stune/customchown system system /dev/stune/custom/taskschmod 0664 /dev/stune/custom/tasksmkdir /dev/cpuset/customcopy /dev/cpuset/cpus /dev/cpuset/custom/cpuscopy /dev/cpuset/mems /dev/cpuset/custom/memschown system system /dev/cpuset/customchown system system /dev/cpuset/custom/taskschown system system /dev/cpuset/custom/cgroup.procschmod 0664 /dev/cpuset/custom/taskschmod 0664 /dev/cpuset/custom/cgroup.procs #custom add end ... #第二部分系统启动完成后添加, 这里绑定的是456可根据需要调整 #custom add start on property:sys.boot_completed1write /dev/cpuset/custom/cpus 4-6write /dev/cpuset/custom/mems 0 #custom add end 这里主要是通过init.rc文件添加cpuset相关节点以及修改cpuset相关节点的权限和owner以及写入值操作。这样在开机启动后就可以在/dev/cpuset/目录下看到自定义cpuset对应的custom节点。 至此代码和配置文件都已经修改完了。 接下来就需要编译了但是编译这里要避免vndk报错的问题需要有先执行如下脚本内容 source build/envsetup.sh lunch xxx cd ./development/vndk/tools/header-checker/utils/ #这里的xxx一般是指out/target/product之后的路径 ./create_reference_dumps.py -l libprocessgroup -product xxx 重新编译vndk否则会出现如下类似的编译错误如下所示 error: VNDK library: XXX ****************************************************** error: Please update ABI references with: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l libprocessgroup ninja failed with: exit status 1 #### failed to build some targets ####
http://www.hkea.cn/news/14428688/

相关文章:

  • 上海建站哪家好西宁市建设网站公司电话
  • 网站加速cdn自己做百度指数是搜索量吗
  • 网站开发设计语言商城多用户源码
  • 电子商务网站建设知识点总结龙岗
  • 有自己的网站做淘宝联盟号做吗互联网推广解决方案
  • 小游戏网站模板浙江大经建设集团网站
  • 手机网站开发视频yy直播在线观看
  • 网站推广seo优化无锡网站建设365caiyi
  • 如何访问自己做的网站上海网络营销策划
  • 网站的汉化包怎么做做网站需要什么知识
  • 云匠网官网新乡seo推广
  • 中山哪里有做微网站的吴中区建设局网站
  • 自助免费网站建设平台网站开通
  • 沙井做网站网站建设公司走进深圳易百讯
  • 网站建设的难点和问题做U启的网站
  • 西安网站建设开发公司怎么创建视频网站
  • 网站备案查询中心卢松松的网站
  • 网站 错误代码遵义网站设计
  • 舞钢做网站上海模板建站哪家好
  • 建设企业银行官方网站网站后台制作视频教程
  • 个人网站数据库大小青海做网站哪家好
  • 免费做网站软件视频网站推广该怎么做
  • 企业网站做百度排名要怎么做重庆网站建设公司咨询亿企帮
  • 2017年网站建设高职考f卷新乡网站建设官网
  • 用蜗牛做logo的网站免费做简历下载的网站
  • 苏州网站seo精品课程 网站建设质量
  • 湖南网站建设大全网站推广平台代理
  • 精品电商网站建设网站的百度词条怎么做
  • 上海网站建设的网上购物系统论文
  • 扒人家网站做网站在线图片转链接生成器