uexadd Kernel Service 的用户方式异常处理程序
用途
处理在用户方式下执行内核线程时发生的异常。
语法
参数
| 项 | 描述 |
|---|---|
| EXP | 指向用于注册此异常处理程序的excepth结构。 |
| MST | 指向进程的当前kmstsave区域。 该指针可用于访问kmstsave区域,以获取有关异常的其他信息。 |
| 项 | 描述 |
|---|---|
| tid | 指定在发生异常时正在执行的内核线程的线程标识。 |
| TYPE | 表示已发生的异常的类型。 此类型值特定于平台。 具体值在/usr/include/sys/except.h文件中定义。 |
描述
用户模式异常处理程序(exp->func)用于处理内核线程在用户模式下执行时检测到的同步异常。 内核异常处理程序会将异常信息保存在结构体的kmstsave区域。 对于用户模式异常,它会调用用户异常处理程序列表中的第一个异常处理程序。 异常处理程序在中断环境中执行,优先级为INTPAGER或INTIODONE。
如果已注册的异常处理程序返回指示已处理异常的返回码,那么内核将从异常处理程序退出,而不会从列表中调用其他异常处理程序。 如果异常处理程序返回返回码,指示未处理异常,那么内核将调用列表中的下一个异常处理程序。 列表中的最后一个异常处理程序是缺省处理程序。 这通常是向线程发送信号。
内核异常处理程序不能发生缺页故障。 如果任何异常处理活动可能导致异常,它还应使用setjmpx内核服务注册异常处理程序。 如果异常处理程序正在处理 I/O ,那么这尤其重要。 如果异常处理程序没有处理异常,则返回代码应设置为用户模式异常处理的EXCEPT_NOT_HANDLED值。
执行环境
uexadd内核服务的用户模式异常处理程序是在INTPAGER或INTIODONE优先级的中断环境中调用的。
返回值
| 项 | 描述 |
|---|---|
| 异常已处理 | 指示已成功处理该异常。 |
| EXCEPT_NOT_HANDLED | 指示未处理此异常。 |