什么CPU可以允许在中断处理句柄中使用ClockCycles()函数?

我使用的是Qnx6.1.0 +PatchA。
我曾编写了一个硬件驱动程序,其中在中断处理句柄中使用了ClockCycles()函数用于记录中断发生时的系统时间,程序工作正常(本人当前所使用的CPU 是PIII866MHz)。

1。目前,要换机器(系统仍为Qnx6.1.0 +PatchA),CPU 为赛扬800(为降低功耗),我不知ClockCycles()函数是否能正常工作于基于赛扬CPU系统的硬件驱动程序中断处理句柄中?

2。在帮助手册中,提及ClockCycles()函数可以正常使用在中断处理句柄中。但在新闻组中好像在某些CPU系统中,ClockCycles()函数不能正常使用在中断处理句柄中。那么,哪些CPU系统可以将ClockCycles()函数正常使用在中断处理句柄中?它包括pentium,pentium pro ,PII ,PIII,PIV,celeron CPU? 它包括AMD
CPU吗?

3。在帮助手册中,又提及了似乎是ClockCycles()函数调用rdtsc指令,是不是只要真正(通过硬件读取)可以执行rdtsc指令的CPU,在编写驱动程序时,其ClockCycles()函数可正常使用在中断处理句柄中?

4。手册中经常出现"x86"系统,似乎是个统称,那么什么是x86系统,是指CPU而言吗?它包括pentium,pentium pro ,PII ,PIII,PIV,celeron CPU? 它包括AMD
CPU吗?

5。如果将操作系统变为QNX6.2.1,在奔腾和赛扬CPU的系统中,ClockCycles()能否正常使用在中断处理句柄中(帮助手册中似乎将ClockCycles()使用在中断处理句柄中视为不安全)?

6。倘若ClockCycles()不能安全使用在中断处理句柄中,有什么其他方法可以在中断处理句柄中记录中断发生的系统时间?

希望听到任何建议。

你看的是那一个手册?根据这个,ClockCycles()不能用在ISR当中。

ClockCycles()在不同的CPU上的实现不同,RDTSC是Pentium指令(AMD好象也有)。如果ClockCycles()是由硬件指令完成的,也可以在ISR中用。

其它可以用来记时的,是Syspage()中的时间指针。

我是根据Qnx6.1.0 帮助文档,ClockCycles()可以用在ISR当中。
http://www.qnx.com/developers/docs/qnx_6.1_docs/neutrino/lib_ref/c/clockcycles.html

RDTSC是Pentium指令,那就是说pentium,pentium pro ,PII ,PIII,PIV,celeron CPU 均包含此指令了,不知是否正确?

对于使用Syspage()中的时间指针,是否有相关的资料说明,或能否具体说明一下? 因为我只看到SYSPAGE_ENTRY(qtime)->cycles_per_sec 和SYSPAGE_ENTRY(qtime)-> boot_time 的意义。