当前位置: 首页 > 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_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 ... #第二部分系统启动完成后添加 #custom add start on property:sys.boot_completed1write /dev/cpuset/custom/cpus 6-7write /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.zqtcl.cn/news/729246/

相关文章:

  • 谁有手机网站啊介绍一下wordpress 流量插件
  • 杭州网站公司google网站建设
  • 莱芜住房和城乡建设厅网站网站头部设计
  • 织梦响应式茶叶网站模板邯郸最新通告今天
  • 深圳公司网站改版通知做网站分类链接
  • 电子商务网站建设答案网络运营与维护
  • 网站登陆怎么做网站app的区别
  • 获取网站缩略图工信部2017网站备案
  • 有哪些网站可以做ps挣钱自己制作游戏
  • 旅游网站开发团队四川住房和城乡建设网站
  • 网站框架设计商城网站制作需要多少费用
  • 网站建设哪个公司个人网站做哪种能赚钱
  • 福建建设人才与科技发展中心seo导航站
  • 修文县生态文明建设局网站郑州制作网站哪家好
  • 泉州网站优化排名东莞长安做网站公司
  • 网站制作公司 顺的有口碑的赣州网站建设
  • 成都网站设计制作苏州新闻
  • 黑色网站设计iis 网站 红
  • 专业做家居的网站佛山做网站永网
  • 医疗网站建设讯息企业门户网站建设思路
  • 四川建设安全监督管理局网站网站传送门怎么做
  • 哪家网站做推广好优化师和运营区别
  • 鹰潭网站建设公司南宁行业平台开发公司
  • 织梦如何仿手机网站源码奉贤区专业建网站
  • 上海网站建设接单wordpress htaccess 404
  • 长春网站优化指导网站怎样做301跳转
  • 做网站域名是什么意思临沧网站开发
  • 怎么在网站上做网页专业图库网站 西安
  • 龙南建设局网站wordpress 购物导航网站
  • 做数据分析好看的网站自己做背景的网站