Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
9d525449
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
9d525449
编写于
7月 27, 2022
作者:
O
openharmony_ci
提交者:
Gitee
7月 27, 2022
浏览文件
操作
浏览文件
下载
差异文件
!7100 删除旧的sysparam文档
Merge pull request !7100 from Mupceet/remove_old_file
上级
dbfc4543
db03af61
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
0 addition
and
301 deletion
+0
-301
zh-cn/device-dev/subsystems/subsys-boot-syspara.md
zh-cn/device-dev/subsystems/subsys-boot-syspara.md
+0
-301
未找到文件。
zh-cn/device-dev/subsystems/subsys-boot-syspara.md
已删除
100755 → 0
浏览文件 @
dbfc4543
# syspara系统属性组件
## 系统参数简介
syspara系统为各系统服务提供简单易用的键值对访问接口,使得各个系统服务可以通过各自的系统参数来进行业务功能的配置。系统参数的访问和操作有下图所示几个基本原语:
**图1**
系统参数操作原语
!
[
zh-cn_image_0000001154900834
](
figures/zh-cn_image_0000001154900834.png
)
**表1**
系统参数操作原语说明
| 功能 | 说明 |
| -------- | -------- |
| get | 获取系统参数的值。 |
| set | 设置系统参数的值。 |
| wait | 同步等待系统参数的值变更。 |
| watch | 异步观察系统参数的值变更。 |
系统参数名称采用点分格式由多段组成,每一段由字母、数字、下划线组成,总长度不超过96字节。系统参数名称分为两类:
**表2**
系统参数名称
| 类别 | 名称 | 示例 | 说明 |
| -------- | -------- | -------- | -------- |
| 参数名称 | Parameter
Name | const.product.
**name**
| 完整的系统参数名称,末尾不是"."。 |
| 参数目录 | Parameter
Directory | const.product
**.**
| 以"."结尾,标识相同前缀的所有系统参数集合。 |
系统参数一共分为三大类:
**表3**
系统参数分类
| 类别 | 前缀 | 说明 |
| -------- | -------- | -------- |
| 常量 |
**const.**
| 常量参数,一旦赋值后续不会再变更,值最大长度为4096字节(包括结束符)。 |
| 可写 | 其它 | 可写参数,重启后丢失,值最大长度96字节(包括结束符)。 |
| 可持久化 |
**persist.**
| 可写并可持久化保存参数,重启后不会丢失,值最大长度96字节(包括结束符)。 |
每个系统参数名称总体格式如下:[
**const**
|
**persist**
].
**$sub_system**
.
**$desc**
。
$sub_system为子系统或模块的名称。
$desc为子系统或模块下参数的描述字符,可以为点分格式进行分级描述。
## 系统参数定义规则
每个子系统定义各自模块的系统参数,包括系统参数名称、默认值以及系统参数的权限访问信息。
### 系统参数值定义文件
系统参数值定义文件后缀名为
**".para"**
,其格式示例如下:
```
# This is comment
const.product.name=OHOS-PRODUCT
const.os.version.api=26
const.telephony.enable=false|true
const.test.withblank=My Value
```
注意:系统参数值不支持注释及换行。
```
# 不支持
const.test.withcomment=MyValue # This should be omitted
# 不支持
const.test.multiline="This is a multiline parameter.
Line2 value.
Last line."
```
系统参数必须通过完整的系统参数命令来赋值,赋值方式分为三大类:
**表4**
系统参数赋值方式
| 类别 | 示例 | 说明 |
| -------- | -------- | -------- |
| 字符串 | const.product.name=OHOS-PRODUCT | 不支持多行字符串,不支持注释。 |
| 数字 | const.os.version.api=26 | 数字不需要引号。 |
| 布尔 | const.telephony.enable=false | 布尔型的可以为0,1或false,true。 |
### 系统参数DAC访问控制定义文件
当前系统参数的访问权限控制通过自主访问控制(Discretionary Access Control)方式管理,访问权限定义文件后缀名为
**".para.dac"**
,示例如下:
```
const.product.="root:root:660"
```
如上所示,可以通过
**参数路径**
为相同前缀的所有系统参数定义一类访问权限信息;DAC信息通过":"分三段来描述,分别为参数的user,group以及UGO规则信息。
UGO规则信息每一位的定义如下图所示:
**图2**
UGO规则信息
!
[
zh-cn_image_0000001155060626
](
figures/zh-cn_image_0000001155060626.png
)
### 系统参数定义文件安装方法
.para和.para.dac文件都通过ohos_prebuilt_para模版安装到/etc/param/目录下,GN脚本示例如下:
```
go
import
(
"//base/startup/init_lite/services/etc/param/param_fixer.gni"
)
ohos_prebuilt_para
(
"ohos.para"
)
{
source
=
"//base/startup/init_lite/services/etc/ohos.para"
part_name
=
"init"
module_install_dir
=
"etc/param"
}
ohos_prebuilt_para
(
"ohos.para.dac"
)
{
source
=
"//base/startup/init_lite/services/etc/ohos.para.dac"
part_name
=
"init"
module_install_dir
=
"etc/param"
}
```
ohos_prebuilt_para模版会对para文件进行格式化处理,包括去注释,去空格等操作。该模版还支持通过extra_paras参数扩展编译时参数,示例如下:
```
go
ohos_prebuilt_para
(
"ohos.para"
)
{
source
=
"//base/startup/init_lite/services/etc/param/ohos.para"
part_name
=
"init"
if
(
target_cpu
==
"arm64"
)
{
extra_paras
=
[
"const.product.cpu.abilist=arm64-v8a"
]
}
module_install_dir
=
"etc/param"
}
```
其中extra_paras值的系统参数值处理方式为:source文件中没有定义该系统参数则添加;source文件中已经定义该参数则覆盖。
### 系统参数值定义文件的加载顺序
系统参数值的加载顺序如下:
**表5**
系统参数加载顺序
| 类别 | 路径 | 说明 |
| -------- | -------- | -------- |
| 内核参数 | /proc/cmdline | 内核参数中ohospara.xxx=valXXX类型的参数都转换成ohos.boot.xxx=valXXX系统参数。 |
| OS固定值 | /system/etc/param/ohos_const/
\*
.para | OS固定系统参数值参数优先加载。 |
| vendor参数值 | /vendor/etc/param/
\*
.para | 厂商参数值定义文件次优先级加载,可以覆盖system参数值定义。 |
| system参数值 | /system/etc/param/
\*
.para | 最后加载system参数值定义文件,文件中的系统参数值如果已经存在,则忽略掉。 |
## shell命令使用说明
通过shell命令中可直接操作系统参数。系统参数shell命令如下表所示:
**表6**
系统参数shell命令说明
| 功能 | 说明 |
| -------- | -------- |
| param
get
[
**key**
] | 获取指定key名称的系统参数值;如果不指定任何name,则返回所有系统参数值。 |
| param
set
**key
value
**
| 设置指定key名称的参数值为value。 |
| param
wait
**keyvalue**
| 同步等待指定key名称的系统参数值与value匹配。value可支持模糊匹配,如"
\*
"表示任何值,"val
\*
"表示只匹配前三个val字符。 |
| param
dump | 显示系统参数的统计信息。 |
## syspara系统接口说明
**表7**
系统属性接口说明
| 接口名 | 描述 |
| -------- | -------- |
| int
GetParameter(const
char\*
key,
const
char\*
def,
char\*
value,
unsigned
int
len) | 获取系统参数。 |
| int
SetParameter(const
char\*
key,
const
char\*
value) | 设置/更新系统参数。 |
| const
char\*
GetDeviceType(void) | 返回当前设备类型。 |
| const
char\*
GetManufacture(void) | 返回当前设备生产厂家信息。 |
| const
char\*
GetBrand(void) | 返回当前设备品牌信息。 |
| const
char\*
GetMarketName(void) | 返回当前设备传播名。 |
| const
char\*
GetProductSeries(void) | 返回当前设备产品系列名。 |
| const
char\*
GetProductModel(void) | 返回当前设备认证型号。 |
| const
char\*
GetSoftwareModel(void) | 返回当前设备内部软件子型号。 |
| const
char\*
GetHardwareModel(void) | 返回当前设备硬件版本号。 |
| const
char\*
GetHardwareProfile(void) | 返回当前设备硬件profile。 |
| const
char\*
GetSerial(void) | 返回当前设备序列号(SN号)。 |
| const
char\*
GetOSFullName(void) | 返回操作系统名。 |
| const
char\*
GetDisplayVersion(void) | 返回当前设备用户可见的软件版本号。 |
| const
char\*
GetBootloaderVersion(void) | 返回当前设备Bootloader版本号。 |
| const
char\*
GetSecurityPatchTag(void) | 返回安全补丁标签。 |
| const
char\*
GetAbiList(void) | 返回当前设备支持的指令集(Abi)列表。 |
| int
GetSdkApiVersion(void) | 返回与当前系统软件匹配的SDK
API
版本号。 |
| int
GetFirstApiVersion(void) | 返回系统软件首版本SDK
API
版本号。 |
| const
char\*
GetIncrementalVersion(void) | 返回差异版本号。 |
| const
char\*
GetVersionId(void) | 返回版本id。 |
| const
char\*
GetBuildType(void) | 返回构建类型。 |
| const
char\*
GetBuildUser(void) | 返回构建账户用户名。 |
| const
char\*
GetBuildHost(void) | 返回构建主机名。 |
| const
char\*
GetBuildTime(void) | 返回构建时间。 |
| const
char\*
GetBuildRootHash(void) | 返回当前版本hash。 |
| const
char\*
GetOsReleaseType(void) | 返回系统发布类型。 |
| int
GetDevUdid(char
\*udid,
int
size) | 获取设备udid。 |
## 开发实例
系统属性使用实例
```
// set && get
char key1[] = "rw.sys.version";
char value1[] = "10.1.0";
int ret = SetParameter(key1, value1);
char valueGet1[128] = {0};
ret = GetParameter(key1, "version=10.1.0", valueGet1, 128);
// get sysparm
char* value1 = GetDeviceType();
printf("Product type =%s\n", value1);
free(value1);
char* value2 = GetManufacture();
printf("Manufacture =%s\n", value2);
free(value2);
char* value3 = GetBrand();
printf("GetBrand =%s\n", value3);
free(value3);
char* value4 = GetMarketName();
printf("MarketName =%s\n", value4);
free(value4);
char* value5 = GetProductSeries();
printf("ProductSeries =%s\n", value5);
free(value5);
char* value6 = GetProductModel();
printf("ProductModel =%s\n", value6);
free(value6);
char* value7 = GetSoftwareModel();
printf("SoftwareModel =%s\n", value7);
free(value7);
char* value8 = GetHardwareModel();
printf("HardwareModel =%s\n", value8);
free(value8);
char* value9 = GetHardwareProfile();
printf("Software profile =%s\n", value9);
free(value9);
char* value10 = GetSerial();
printf("Serial =%s\n", value10);
free(value10);
char* value11 = GetOSFullName();
printf("OS name =%s\n", value11);
free(value11);
char* value12 = GetDisplayVersion();
printf("Display version =%s\n", value12);
free(value12);
char* value13 = GetBootloaderVersion();
printf("bootloader version =%s\n", value13);
free(value13);
char* value14 = GetSecurityPatchTag();
printf("secure patch level =%s\n", value14);
free(value14);
char* value15 = GetAbiList();
printf("abi list =%s\n", value15);
free(value15);
int value16 = GetFirstApiVersion();
printf("first api level =%d\n", value16);
free(value16);
char* value17 = GetIncrementalVersion();
printf("Incremental version = %s\n", value17);
free(value17);
char* value18 = GetVersionId();
printf("formal id =%s\n", value18);
free(value18);
char* value19 = GetBuildType();
printf("build type =%s\n", value19);
free(value19);
char* value20 = GetBuildUser();
printf("build user =%s\n", value20);
free(value20);
char* value21 = GetBuildHost();
printf("Build host = %s\n", value21);
free(value21);
char* value22 = GetBuildTime();
printf("build time =%s\n", value22);
free(value22);
char* value23 = GetBuildRootHash();
printf("build root later..., %s\n", value23);
free(value23);
char* value24 = GetOsReleaseType();
printf("OS release type =%s\n", value24);
free(value24);
char* value25 = GetOsReleaseType();
printf("OS release type =%s\n", value25);
free(value25);
char value26[65] = {0};
GetDevUdid(value26, 65);
printf("device udid =%s\n", value26);
free(value26);
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录