00. 目录
01. 命令概述
ipcs命令用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。
02. 命令格式
格式:ipcs [选项] [参数]
用法:
ipcs [resource ...] [output-format]
ipcs [resource] -i <id>
- 1
- 2
- 3
- 4
03. 常用选项
选项:
-i, --id <id> 打印由 id 标识的资源的详细信息
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
资源选项:
-m, --shmems 共享内存段
-q, --queues 消息队列
-s, --semaphores 信号量
-a, --all 全部(默认)
输出格式:
-t, --time 显示附加、脱离和更改时间
-p, --pid 显示 PID 的创建者和最后操作
-c, --creator 显示创建者和拥有者
-l, --limits 显示资源限制
-u, --summary 显示状态摘要
--human 以易读格式显示大小
-b, --bytes 以字节数显示大小
更多信息请参阅 ipcs(1)。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
04. 参考示例
4.1 显示所有的IPC信息
[deng@localhost ~]$ ipcs
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息
------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
--------- 信号量数组 -----------
键 semid 拥有者 权限 nsems
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.2 显示所有的IPC信息
[deng@localhost ~]$ ipcs -a
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息
------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
--------- 信号量数组 -----------
键 semid 拥有者 权限 nsems
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
4.3 显示所有消息队列信息
[deng@localhost ~]$ ipcs -q
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.4 显示所有共享内存信息
[deng@localhost ~]$ ipcs -m
------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.5 显示所有信号量信息
[deng@localhost ~]$ ipcs -s
--------- 信号量数组 -----------
键 semid 拥有者 权限 nsems
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.6 显示IPC设施的详细信息
# ipcs -q -i id
- 1
id 对应shmid、semid、msgid等。-q对应设施的类型(队列),查看信号量详细情况使用-s,查看共享内存使用-m。
4.7 显示IPC设施的限制大小(共享内存)
[root@localhost ~]# ipcs -m -l
---------- 同享内存限制 ------------
最大段数 = 4096
最大段大小 (千字节) = 2097152
最大总共享内存 (千字节) = 8388608
最小段大小 (字节) = 1
[root@localhost ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-m对应设施类型,可选参数包括-q、-m、-s。
4.8 显示创建者和拥有者
[root@localhost ~]# ipcs -c
---------- 消息队列 创建者/拥有者 ------------
msqid 权限 cuid cgid uid gid
------------- 共享内存段创建者/拥有者 ---------------
shmid 权限 cuid cgid uid gid
----------- 信号量数组创建者/拥有者 ------------
semid 权限 cuid cgid uid gid
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
4.9 显示创建者和拥有者(共享内存)
[root@localhost ~]# ipcs -m -c
------------- 共享内存段创建者/拥有者 ---------------
shmid 权限 cuid cgid uid gid
- 1
- 2
- 3
- 4
4.10 显示创建者和拥有者(消息队列)
[root@localhost ~]# ipcs -q -c
---------- 消息队列 创建者/拥有者 ------------
msqid 权限 cuid cgid uid gid
- 1
- 2
- 3
- 4
4.11 显示创建者和拥有者(信号量数组)
[root@localhost ~]# ipcs -s -c
----------- 信号量数组创建者/拥有者 ------------
semid 权限 cuid cgid uid gid
- 1
- 2
- 3
- 4
4.12 显示 PID 的创建者和最后操作
[root@localhost ~]# ipcs -p
--------- 消息队列 PID -----------
msqid 拥有者 lspid lrpid
-------- 共享内存 创建者/上次修改者 PID ----------
shmid 拥有者 cpid lpid
[root@localhost ~]# ipcs -m -p
[root@localhost ~]# ipcs -s -p
[root@localhost ~]# ipcs -q -p
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.13 显示附加、脱离和更改时间
[root@localhost ~]# ipcs -t
----------- 消息队列 发送/接收/更改 时间 ------------
msqid 拥有者 发送 接收 更改
------------ 共享内存 添加/脱离/更改 时间 --------------
shmid 拥有者 已连上 已断开 已更改
------------ 信号量 操作/更改 时间 -------------
semid 拥有者 上一操作 上次更改
[root@localhost ~]# ipcs -m -t
[root@localhost ~]# ipcs -s -t
[root@localhost ~]# ipcs -q -t
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
4.14 显示状态摘要
[root@localhost ~]# ipcs -u
---------- 消息状态 -----------
已分配队列数 = 0
已用消息头(header)数 = 0
已用空间 = 0 字节
---------- 共享内存状态 ------------
段已分配 0
页已分配 0
页驻留 0
页交换 0
交换性能:0 次尝试 0 次成功
--------- 信号量状态 -----------
已使用数组 = 0
已分配信号量数 = 0
[root@localhost ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
4.15 以字节数显示大小
[root@localhost ~]# ipcs -b
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息
------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
--------- 信号量数组 -----------
键 semid 拥有者 权限 nsems
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
05. 附录
概述
功能简介
RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系统,确保断电后系统时间的连续性。
运作机制
在HDF框架中,RTC的接口适配模式采用独立服务模式,在这种模式下,每一个设备对象会独立发布一个设备服务来处理外部访问,设备管理器收到API的访问请求之后,通过提取该请求的参数,达到调用实际设备对象的相应内部方法的目的。独立服务模式可以直接借助HDFDeviceManager的服务管理能力,但需要为每个设备单独配置设备节点,增加内存占用。
独立服务模式下,核心层不会统一发布一个服务供上层使用,因此这种模式下驱动要为每个控制器发布一个服务,具体表现为:
-
驱动适配者需要实现HdfDriverEntry的Bind钩子函数以绑定服务。
-
device_info.hcs文件中deviceNode的policy字段为1或2,不能为0。
图 1 RTC独立服务模式结构图
RTC模块各分层作用:
-
接口层提供打开RTC设备、RTC设备读取时间、RTC设备设置时间、RTC设备读取警报时间、RTC设备设置警报时间、RTC设备定时报警回调函数、RTC设备设置定时报警中断使能去使能、RTC设备设置RTC外频、RTC设备读取RTC外频、复位RTC、设置RTC自定义寄存器配置,读取RTC自定义寄存器配置以及关闭RTC设备的接口。
-
核心层主要提供RTC控制器的创建、销毁,通过钩子函数与适配层交互。
-
适配层主要是将钩子函数的功能实例化,实现具体的功能。
开发指导
场景介绍
RTC主要用于提供实时时间和定时报警功能。当驱动开发者需要将RTC设备适配到OpenHarmony时,需要进行RTC驱动适配,下文将介绍如何进行RTC驱动适配。
接口说明
为了保证上层在调用RTC接口时能够正确的操作硬件,核心层在//drivers/hdf_core/framework/support/platform/include/rtc/rtc_core.h中定义了以下钩子函数。驱动适配者需要在适配层实现这些函数的具体功能,并与这些钩子函数挂接,从而完成接口层与核心层的交互。
RtcMethod定义:
struct RtcMethod {
int32_t (*ReadTime)(struct RtcHost *host, struct RtcTime *time);
int32_t (*WriteTime)(struct RtcHost *host, const struct RtcTime *time);
int32_t (*ReadAlarm)(struct RtcHost *host, enum RtcAlarmIndex alarmIndex, struct RtcTime *time);
int32_t (*WriteAlarm)(struct RtcHost *host, enum RtcAlarmIndex alarmIndex, const struct RtcTime *time);
int32_t (*RegisterAlarmCallback)(struct RtcHost *host, enum RtcAlarmIndex alarmIndex, RtcAlarmCallback cb);
int32_t (*AlarmInterruptEnable)(struct RtcHost *host, enum RtcAlarmIndex alarmIndex, uint8_t enable);
int32_t (*GetFreq)(struct RtcHost *host, uint32_t *freq);
int32_t (*SetFreq)(struct RtcHost *host, uint32_t freq);
int32_t (*Reset)(struct RtcHost *host);
int32_t (*ReadReg)(struct RtcHost *host, uint8_t usrDefIndex, uint8_t *value);
int32_t (*WriteReg)(struct RtcHost *host, uint8_t usrDefIndex, uint8_t value);
};
c
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: