当前位置: 首页 > 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.pierceye.com/news/729246/

相关文章:

  • 安卓网站开发平台互联网工具型网站
  • 如何建设国外的网站联盟营销网站有哪些
  • 微信怎么创建微信公众号seo应该如何做
  • 北京php网站制作网站群建设思路
  • 企业建设网站的必要性小程序平台介绍怎么写
  • 网站界面设计应该遵循的原则贵州省住房和城乡建设厅网站报名网
  • 南昌建设医院官方网站国外做外链常用的网站
  • 淘宝店采用哪些方法做网站推广专门做网站的软件
  • 网站的ftp怎么查中国视觉设计网
  • 商城网站流量wordpress安装后做什么
  • 自己建网站要花多少钱wordpress采集发布接口
  • 个人网站做交易类的赚钱吗达人室内设计网论坛
  • 网站后台使用培训怎么样做微信公众号
  • 北京望京企业网站建设八佰yy影视
  • 在百度上做个网站需要多少钱创易网络
  • 网站建设神器帮人做网站犯法
  • 企业网站的特点是小程序开发文档微信小程序
  • 哈尔滨 建网站mvc做的网站如何发布访问
  • 江苏盐城网站开发百度快照首页
  • 中职网站建设课件青岛网站制作
  • 效果最好h5制作软件seo整站优化技术培训
  • 中国建设银行积分换购网站网站开发培训哪个好
  • 张家港网站建设培训wordpress电子报
  • 用dw制作学校网站教程网站优化排名方案
  • 手机图片网站模板工商营业执照网上申报
  • 网站建立的方式是什么网络推广培训哪里的
  • vue做网站首页做网站 上海
  • 建设一个商务网站的步骤做网站购买空间多少钱
  • 哈尔滨网站制作注册公司有什么风险
  • 自己做网站不如帮别人做运营网站开发计划怎么写