一、编译安装方法
1. 编译安装环境
(1)Linux 操作系统
(2)EPICS BASE 3.15 (3.15.1 or later)
(MCoreUtils中使用了一些EPICS BASE 3.15之后才有的函数,例如epicsThreadHookAdd()函数)
2. 下载安装包
https://github.com/epics-modules/MCoreUtils
3. 编译安装生成mcoreutils库
tar -zxvf MCoreUtils-1.2.2.tar.gz /home/dongxw/modules/MCoreUtils-1.2.2
cd /home/dongxw/modules/MCoreUtils-1.2.2
make
二、使用方法
用户手册:http://epics-modules.github.io/MCoreUtils/index.html
1. 在IOC中引入MCoreUtils
(1)在< path to IOC >/configure/RELEASE文件中,添加MCoreUtils路径:
MCOREUTILS = /home/dongxw/modules/MCoreUtils-1.2.2
(2)在< path to IOC >/< IOC >APP/src/Makefile文件中,添加MCoreUtils库和dbd:
...
<IOC>_DBD += mcoreutils.dbd
...
<IOC>_LIBS += mcoreutils
...
(3)编译运行IOC
注意:MCoreUtils 仅适用于Linux系统,因此只有Linux下编译运行的IOC可以执行上述操作,从而使用MCoreUtils。
2. 在文件中定义线程规则
可以预先设置线程规则文件:
(1) /etc/rtrules文件
(2)$HOME下的EPICS_MCORE_USERCONFIG定义的文件名或.rtrules文件
文件中线程规则定义格式为:
name:policy:priority:affinity:pattern
其中各项的含义:
name: 线程名
policy: 策略名
priority: 优先级(数字形式)
affinity: CPU亲和性,格式为 0,1,2,3 或 0-3 或 0,2-3
pattern: 用来匹配线程名的正则表达式
通过epicsThreadOnce()1和 epicsThreadHookAdd()函数2,在任何epicsThreadOnce()函数之前完成以下操作:读取线程规则文件后,生成threadRules表;令每个线程运行前都根据threadRules表中与id名字对应的规则修改id的线程规则。
3. 执行iocsh命令对线程规则进行操作
shellCommands.c 和 mcoreutils.dbd 文件结合,将一些函数注册为可在iocsh下执行的命令。这些命令在IOC启动时即注册入可执行命令库3,可以在 st.cmd 文件中执行这些命令,也可在 “epics>”命令行执行这些命令。
例如,IOC启动后,在iocsh下查看可执行命令库:
epics> help
...
iocRun iocshCmd iocshLoad iocshRun mcoreMLock
mcoreMUnlock mcoreThreadModify mcoreThreadRuleAdd
mcoreThreadRuleDelete mcoreThreadRulesShow
mcoreThreadShow mcoreThreadShowAll o