我正在使用HOCA系统变体开发OS类项目。
我试图创建操作系统的中断处理程序部分,检测和处理I / O设备中断。
(如果你对HOCA一无所知,这很好)我的问题实际上是关于C的内部操纵。
整个系统的工作方式如下:
操作系统的主要功能是调用init(),其中所有部件都已初始化。
初始化操作系统后,将创建根进程,并将第一个应用程序调度()到特定应用程序。然后创建应用程序进程并在以根进程为根的树结构中进行schedule()。
void schedule(){
proc_t *front;
front = headQueue(RQ); //return the first available process in the Ready Queue
if (checkPointer(front)) {
intschedule(); // load a timeslice to the OS
LDST(&(front->p_s)); // load the state to the OS
// so that OS can process the application specified by p_s
// LDST() is system function to load a state to processor
}
else {
intdeadlock(); // unlock a process from the blocked list and put in RQ
}
}
使用gdb,我看到一切正常,直到它在if之前处理(checkPointer(front))
int checkPointer(void *p){
return ((p != (void *) ENULL)&&(p != (void *)NULL));
}
gdb回复:
trap:不存在的内存地址:-1内存大小:131072错误: 地址大于MEMORYSIZE
这出了什么问题?
checkPointer()位于另一个文件中。
非常感谢您的帮助。