proch_reg 内核服务
用途
注册调出处理程序。
语法
#include <sys/proc.h> int proch_reg(struct prochr *)注意:prochr 结构包含以下元素,必须在调用proch_reg 之前设置:
参数
| 项 | 描述 |
|---|---|
| int prochr_mask | 指定要对其请求调出的内核事件的集合。 与 old_style 接口不同,只有指定的事件才会调用调出。 此掩码是通过将下列任何已定义的值组合在一起进行 OR 运算而形成的:
|
| proch_handler | 指定发生指定的内核事件时要调用的调出函数。 |
描述
如果同一个struct prochr *注册了多次,内核中只会保留最近指定的信息。
struct prochr *不会复制到内存中的新位置。 因此,如果结构发生更改,那么结果将不可预测。 此结构不需要被置顶。
新型接口的主要考虑点是提高可扩展性。 仅当进行标注时,才会获取锁定。 将保留所有当前已注册的调出事件类型的摘要掩码。 每次调用proch_reg或proch_unreg时,该摘要掩码都会更新,即使在注册相同的struct prochr * 时也是如此。 此外,该锁定是一个复杂锁定,因此一旦注册了调出,调用这些锁定时就不会发生锁定争用,因为该锁定是只读的。
对已注册的处理程序函数进行调出时,传递的参数为:
- 指向已注册 prochr 结构的指针
- 调出请求值,用于表示调出的原因
- 线程或进程 ID
返回值
成功完成后,proch_reg内核服务返回值为 0。 唯一的错误 (非零) 返回是从尝试使用 NULL 指针进行注册。
执行环境
proch_reg内核服务只能从进程环境中调用。