我炼制一些代码,模拟在x86 Windows系统中的上下文切换调度。 该程序编译在Windows XP(编辑:可能不是Windows 7中)与一些古老的Borland C编译器,被移植到被MSVC编译。
在一个点上,代码通过这些不可用功能安装的ISR dos.h
:
void (*)() getvect(int)
void setvect(int, void (*)());
具体而言,编码安装用于一(环状的)定时器中断的ISR。 电话是:
tick_isr_old = getvect(0x08);
setvect(0xF2, tick_isr_old);
setvect(0x08, (void interrupt (*)(void)) tick_isr);
setvect(0xF1, (void interrupt (*)(void)) context_switch_isr);
有没有人有任何想法将设置这些中断服务程序的合理方法(可能与Windows的API?)。 更糟糕的是,该功能是用汇编语言实现的(他们需要执行毕竟上下文切换...)。 是否有至少其中断向量的整数常数(0x08时,0xF2,的0xf1)指任何文件? 谷歌并没有真正拿出的东西,我可以一起工作。
UPDATE:既然是显然不可能得到这些DOS调用工作在Windows 7中,我需要一种方法来异步调用函数的一般单线程环境。
在Linux下, signal()
和raise()
函数可以做到这一点,但在Windows下,他们在这是可能的最起码的方式只支持。 有没有办法实现,在Windows下?