当前位置:  技术问答>linux和unix

tc 下面,中断函数的编写及线程的调度!

    来源: 互联网  发布时间:2015-08-29

    本文导语:  我做了一个操作系统的线程调度程序,有点问题,各位帮忙看看! 是在tc 下面做的。涉及到中断函数的编写。 #include  #include  #include  #include  #include  #define TL 5 #define FINISHED 0 #define RUNNING 1 #define READY 2 #define...

我做了一个操作系统的线程调度程序,有点问题,各位帮忙看看!
是在tc 下面做的。涉及到中断函数的编写。

#include 
#include 
#include 
#include 
#include 

#define TL 5
#define FINISHED 0
#define RUNNING 1
#define READY 2
#define BLOCKED 3
#define NTCB  10
#define GET_INDOS 0x34
#define GET_CRIT_ERR 0x5d06

char far *indos_ptr=0;
char far *crit_err_ptr=0;
extern int current=0;/**/
int timeout=0;

void interrupt(*old_int8)(void);
void interrupt new_int8(void);
typedef int(far *codeptr)(void);
void interrupt swtch(void);
void tcb_state(void);
int create(char *name,codeptr code,int stacklen);
void over(void);
void InitInDos(void);
int DosBusy(void);
int P_choice(void);

struct int_regs{
    unsigned bp;
    unsigned di;
    unsigned si;
    unsigned ds;
    unsigned es;
    unsigned dx;
    unsigned cx;
    unsigned bx;
    unsigned ax;
    unsigned ip;
    unsigned cs;
    unsigned flags;
};
struct char_regs
{
    unsigned char al;
    unsigned char ah;
    unsigned char bl;
    unsigned char bh;
    unsigned char cl;
    unsigned char ch;
    unsigned char dl;
    unsigned char dh;
};
union fregs{
    struct int_regs x;
    struct char_regs h;
};
struct fsregs{
    unsigned   es;
    unsigned   cs;
    unsigned   ss;
    unsigned   ds;

};
struct TCB{
    unsigned char* stack;
    unsigned int ss;
    unsigned int sp;
    char state;
    char name[10];
}tcb[NTCB];

void interrupt swtch(void){
     int i;
    (*old_int8)();
    InitInDos();
    if(DosBusy){
        disable();
        tcb[current].ss=_SS;
        tcb[current].sp=_SP;
        if(tcb[current].state==RUNNING)
            tcb[current].state=READY;
        i=P_choice();
        _SP=tcb[i].sp;
        _SS=tcb[i].ss;
        tcb[i].state=RUNNING;
        current=i;
        timeout=0;
        enable();
    }
}
void interrupt new_int8(void){
    int i;
    (*old_int8)();
    InitInDos();
    if(timeout++

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 中断函数用法的问题
  • 如何计算中断处理函数消耗的CPU时钟?
  • 中断处理函数中使用自旋锁的疑问
  • socket编程中的函数send和recv如何被信号中断?
  • REDHAT LINUX 9中如何使用signal这个函数进行中断通信?
  • arm linux 中设置中断低电平触发的函数
  • 关于SIGALRM中断函数调用问题。
  • 中断处理函数 IRQn_interupt 在那里定义的
  • atmel_interrupt中断函数
  • 请问下linux SOCKET recv()函数如何被中断,小弟急呀大家帮忙 马上给分
  • 在linux上怎么编写一个模块来提供某个中断的中断处理程序呢?而且有哪些中断可以自己添加中断处理程序呢?
  • Linux 系统中的中断是不是没有中断优先级
  • 请问软件中断的中断号与端口号是什么关系?
  • 中断上下文,进程上下文 ,内核抢占,用户抢占,中断
  • 求助,ADS调试中断2440无法进入中断服务。。。
  • 除零中断那些中断是怎么工作的?
  • 傻傻得问,如果两个设备共享一个中断线,中断响应程序怎么区分?
  • 求教:一进程执行过程中被同一外部中断程序大量反复中断会不会引起内核栈溢出?
  • kernel 什么时候可以中断 什么时候不可以中断
  • 在Linux驱动中如何开中断和关中断?
  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • linux内核中的中断向量号是如何与硬件的中断Pin关联的?
  • 书上说,中断用自旋锁,进程,用信号量,但是,为什么中断不能用信号量?
  • ucosII 移植到arm 用ads,关于关中断、开中断
  • 检测不到中断,无法进入中断处理程序。
  • linux中断处理 如何调用内核的中断操作
  • 关于中断共享的问题:ADC 与触摸屏的中断共享
  • Linux驱动中注册的中断号与实际的硬件中断号的关系
  • 内核会丢中断吗?
  • 为什么这个中断会一直响应呢????


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3