fp_trap 子例程
用途
查询或更改用户进程的方式,以允许浮点异常生成陷阱。
库
标准 C 库 (libc.a)
语法
描述
fp_trap 子例程查询并更改用户进程的方式,以允许或不允许浮点异常捕获。 仅当进程正在以启用陷阱的方式执行时,才能生成浮点陷阱。
缺省状态是在 pipelined 方式下执行,而不是生成浮点陷阱。
在调用 fp_trap (FP_TRP_SYNC) 例程之前,先前的浮点操作可以将浮点状态和控制寄存器 (FPSCR) 中的某些异常位设置为 True。 启用这些 Cexceptions 并调用 fp_trap (FP_TRP_SYNC) 例程并不会导致立即发生陷阱。 也就是说,这些陷阱的操作是边缘敏感的,而不是级别敏感的。
fp_trap 子例程不清除异常历史记录。 您可以使用下列任何子例程来查询此历史记录:
- fp_any_xcp
- fp_divbyzero
- fp_iop_convert
- fp_iop_infdinf
- fp_iop_infmzr
- fp_iop_infsinf
- fp_iop_invcmp
- fp_iop_snan
- fp_iop_sqrt
- fp_iop_vxsoft
- fp_iop_zrdzr
- fp_inexact
- fp_invalid_op
- fp_overflow
- fp_underflow
参数
| 项 | 描述 |
|---|---|
| 标记 | 指定用户进程的查询或用户进程的方式更改:
注: 某些硬件型号不支持所有方式。 如果请求了不受支持的方式,那么 fp_trap 子例程将返回 FP_TRAP_UNIMPL。
|
返回值
如果使用 FP_TRAP_OFF, FP_TRAP_IMP, FP_TRAP_IMP_REC或 FP_TRAP_SYNC 标志调用,那么 fp_trap 子例程将返回一个值,指示如果硬件支持请求的方式,那么哪个标志处于进程的先前方式。 如果硬件不支持请求的方式,那么 fp_trap 子例程返回 FP_TRAP_UNIMPL。
如果使用 FP_TRAP_QUERY 标志进行调用,那么 fp_trap 子例程将返回一个值,指示进程的当前方式 ( FP_TRAP_OFF, FP_TRAP_IMP, FP_TRAP_IMP_REC或 FP_TRAP_SYNC 标志)。
如果使用 FP_TRAP_FASTMODE进行调用,那么 fp_trap 子例程将设置最快的可用方式并返回所选方式。
错误代码
如果使用无效参数调用 fp_trap 子例程,那么该子例程将返回 FP_TRAP_ERROR。
如果请求的方式在硬件平台上不受支持,那么子例程将返回 FP_TRAP_UNIMPL。