亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? portisr.c

?? ertfs文件系統(tǒng)里面既有完整ucos程序
?? C
字號:
//
// portisr.c
//  
//   EBS - ERTFS
//  
//   Copyright EBS Inc , 1993,1994,1995
//   All rights reserved.
//   This code may not be redistributed in source or linkable object form
//   without the consent of its author.
//
//
//    Module description:
//        This file contains interrupt sevice routines and associated
//        HISR mechanisms for RTFS.
//
//  

// This is for ERTFS_STAND_ALONE only. Not used in RTIP enviroment

#include <pcdisk.h>

/* These routines are only needed if these sub-systems are included */
#if (USE_ATA || USE_FLOPPY || INCLUDE_PCMCIA)

/* These are pc specific PIC functions.. see below */
void ks_mask_isr_on(int irq);
void ks_mask_isr_off(int irq);
void ks_clear_isr(int irq);
int  ks_isr_to_vector(int irq);


/* Define macros to declare an interrupt service routine and to declare
   storage to hold the previous value of the interrupt vector that 
   we are replacing */
#if (defined(POLLOS))
#include <dos.h>
#define KS_INTFN_DECLARE(x) void interrupt KS_FAR x(void)
#define KS_INTFN_POINTER(x) void (interrupt KS_FAR *x)(void)
#elif (defined(RTPX))
#include <dos.h>
#define KS_INTFN_DECLARE(x) void interrupt KS_FAR x(void)
#define KS_INTFN_POINTER(x) void (interrupt KS_FAR *x)(void)
#elif (defined(UCOS))
#define KS_INTFN_DECLARE(x)   void KS_FAR x(void)
#define KS_INTFN_POINTER(x)   void KS_FAR *x
/* See the provided copy of Ix86L_A.ASM for these routines */
extern void asm_ide_isr_0(void);
extern void asm_ide_isr_1(void);
extern void asm_floppy_isr(void);
#elif (defined(__PSOS__))
#error declare interrupt function types for PSOS
#define KS_INTFN_DECLARE(x)   void x(void)
#define KS_INTFN_POINTER(x)   void *x
#elif (defined(CMX))
#define KS_INTFN_DECLARE(x)   void KS_FAR x(void)
#define KS_INTFN_POINTER(x)   void KS_FAR *x
#if (defined(CMXRM))
/* See the provided copy of Ix86L_A.ASM for these routines */
extern void asm_ide_isr_0(void);
extern void asm_ide_isr_1(void);
extern void asm_floppy_isr(void);
#endif
#elif (defined(PLUS))
#define KS_INTFN_DECLARE(x)   void KS_FAR x(void)
#define KS_INTFN_POINTER(x)   void KS_FAR *x
#if (USE_ATA)
/* ide HISR data */
NU_HISR     ide_HISR_Control[2];
char        ide_HISR_Stack[2][1024];
void ide_hisr_0(void);
void ide_hisr_1(void);
#endif
#if (USE_FLOPPY)
    /* floppy HISR data */
NU_HISR     floppy_HISR_Control;
char        floppy_HISR_Stack[1024];
void floppy_hisr(void);
#endif

#else
#error - Define KS_INTFN_DECLARE and KS_INTFN_POINTER(x) for your environment
#endif

/* Saved off old values from the interrupt vector table */
KS_INTFN_POINTER(oldint[15]);


#if (USE_ATA)
/* IDE interrupt management package */
/* Signals touched in this file */

/* irq number for ide controllers saved at hook time */
int ide_isr_no[2];
int pcmcia_isr_no;


/* This is the isr function in ide_drv.c */
void ide_isr(int controller_no);

/* This is the interrupt service routine for IDE controller number zero
   it calls the ide_isr() routine in ide_drv.c which calls ks_invoke_ide_interrupt(0)
   in this file 
*/

KS_INTFN_DECLARE(ide_isr_0)
{
#if (defined(RTPX))
    px_isr_enter();
#endif
    ide_isr(0);
    ks_clear_isr(ide_isr_no[0]);
#if (defined(RTPX))
    px_isr_exit();
#endif
}

/* This is the interrupt service routine for IDE controller number one
   it calls the ide_isr() routine in ide_drv.c which calls ks_invoke_ide_interrupt(0)
   in this file 
*/
KS_INTFN_DECLARE(ide_isr_1)
{
#if (defined(RTPX))
    px_isr_enter();
#endif
    ide_isr(1);
    ks_clear_isr(ide_isr_no[1]);
#if (defined(RTPX))
    px_isr_exit();
#endif
}

/* This is called by the isr to execute the hisr for the interrupt */ 
void ks_invoke_ide_interrupt(int controller_number)
{
#if (defined(PLUS))
    NU_Activate_HISR(&ide_HISR_Control[controller_number]);
#elif (defined(POLLOS)||defined(RTPX)||defined(CMX)||defined(UCOS))
    ks_set_ide_signal(controller_number);
#else
#error - Signal ide from ISR for your kernel. Following code may be correct
    ks_set_ide_signal(controller_number);
#endif
}

/* This is the routine that hooks the interrupt for the IDE controller */
void hook_ide_interrupt(int irq, int controller_number)
{
int vector_no;

    ide_isr_no[controller_number] = irq;

    /* Convert irq number to vector number for register lisr */
    vector_no = ks_isr_to_vector(irq);

    if (controller_number==0)
    {
#if (defined(PLUS))
        NU_Create_HISR(&ide_HISR_Control[0], "HISR", ide_hisr_0,
                        2, &ide_HISR_Stack[0][0], 1024);
        NU_Register_LISR(vector_no, ide_isr_0, &(oldint[irq]));
#elif (defined(POLLOS))
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, ide_isr_0);
#elif (defined(RTPX))
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, ide_isr_0);
#elif (defined(CMXRM))
/* See the provided copy of Ix86L_A.ASM for these routines */
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, asm_ide_isr_0);
#elif (defined(CMXD860))
        // Nothing. done up front
#elif (defined(UCOS))
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, (void (interrupt *)(void))asm_ide_isr_0);
#elif (defined(__PSOS__))
#error implement interrupt hook function for PSOS

#else
#error - Implement hook ide vector for your system
#endif
    }
    else
    {
#if (defined(PLUS))
        NU_Create_HISR(&ide_HISR_Control[1], "HISR", ide_hisr_1,
                    2, &ide_HISR_Stack[1][0], 1024);
        NU_Register_LISR(vector_no, ide_isr_1, &(oldint[irq]));
#elif (defined(POLLOS))
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, ide_isr_1);
#elif (defined(RTPX))
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, ide_isr_1);
#elif (defined(CMXRM))
/* See the provided copy of Ix86L_A.ASM for these routines */
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, asm_ide_isr_1);
#elif (defined(CMXD860))
        // Nothing. done up front
#elif (defined(UCOS))
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, (void (interrupt *)(void))asm_ide_isr_1);
#elif (defined(__PSOS__))
#error implement interrupt hook function for PSOS

#else
#error - Implement hook ide vector for your system
#endif
    }
    /* mask on the interrupt 8259. pc specific */
    ks_mask_isr_on(irq);
    /* clear any stray interrupts */
    ks_clear_isr(irq);
}

#endif /* (USE_ATA) */

#if (USE_FLOPPY)

void  KS_FAR floppy_isr(int controller_no);

void ks_set_floppy_signal(void);

/* irq number for floppy disk saved at hook time */
int floppy_isr_no;


/* This is the interrupt service routine for IDE controller number zero
   it calls the ide_isr() routine in ide_drv.c which calls ks_invoke_ide_interrupt(0)
   in this file 
*/
KS_INTFN_DECLARE(floppy_isr_0)
{
#if (defined(RTPX))
    px_isr_enter();
#endif
    floppy_isr(0);
    ks_clear_isr(floppy_isr_no);
#if (defined(RTPX))
    px_isr_exit();
#endif
}



/* This is called by the isr to execute the hisr for the interrupt */ 
void ks_invoke_floppy_interrupt(int controller_no)
{
#if (defined(PLUS))
    NU_Activate_HISR(&floppy_HISR_Control);
#elif (defined(POLLOS)||defined(RTPX)||defined(CMX)||defined(UCOS))
    ks_set_floppy_signal();
#else
#error - Signal floppy from ISR for your kernel. Followin code may be correct
    ks_set_floppy_signal();
#endif

}

/* This is the routine that hooks the interrupt for the IDE controller */
void hook_floppy_interrupt(int irq)
{
int vector_no;

    floppy_isr_no = irq;

    /* Convert irq number to vector number for register lisr */
    vector_no = ks_isr_to_vector(irq);
#if (defined(PLUS))
    NU_Create_HISR(&floppy_HISR_Control, "HISR", floppy_hisr,
                    2, &floppy_HISR_Stack[0], 1024);
    NU_Register_LISR(vector_no, floppy_isr_0, &(oldint[irq]));
#elif (defined(POLLOS))
    oldint[irq] = _dos_getvect (vector_no);
    _dos_setvect (vector_no, floppy_isr_0);
#elif (defined(RTPX))
    oldint[irq] = _dos_getvect (vector_no);
    _dos_setvect (vector_no, floppy_isr_0);
#elif (defined(CMXRM))
/* See the provided copy of Ix86L_A.ASM for these routines */
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, asm_floppy_isr_0);
#elif (defined(CMXD860))
        // Nothing. done up front
#elif (defined(UCOS))
    oldint[irq] = _dos_getvect (vector_no);
    _dos_setvect (vector_no, (void (interrupt *)(void))asm_floppy_isr);
#elif (defined(__PSOS__))
#error implement interrupt hook function for PSOS
#else
#error - Implement hook floppy vector for your system
#endif

    /* mask on the interrupt 8259. pc specific */
    ks_mask_isr_on(irq);
    /* clear any stray interrupts */
    ks_clear_isr(irq);
}
#endif /* (USE_FLOPPY) */

#if (INCLUDE_PCMCIA)
/* This section manages the pcmcia management interrupt (see pcmctrl.)
   there are no HISRs required so it is a simple LISR hook and 
   dispatch */

void mgmt_isr(int arg);

#if (defined(PLUS))
void KS_FAR pcmcia_isr(void)
#elif (defined(POLLOS))
void interrupt KS_FAR pcmcia_isr(void)
#elif (defined(RTPX))
void interrupt KS_FAR pcmcia_isr(void)
#elif (defined(CMXRM))
void interrupt KS_FAR pcmcia_isr(void)
#elif (defined(CMXD860))
void  KS_FAR pcmcia_isr(void)
#elif (defined(UCOS))
void interrupt KS_FAR pcmcia_isr(void)
#elif (defined(__PSOS__))
#error implement interrupt hook function for PSOS
void  pcmcia_isr(void) ????
#else
#error define Interrupt function for IDE
#endif
{
    mgmt_isr(0);
    ks_clear_isr(pcmcia_isr_no);
}

void hook_pcmcia_interrupt(int irq)
{
int vector_no;

    pcmcia_isr_no = irq;

    /* Convert irq number to vector number for register lisr */
    vector_no = ks_isr_to_vector(irq);

#if (defined(PLUS))
    NU_Register_LISR(vector_no, pcmcia_isr, &(oldint[irq]));
#elif (defined(POLLOS))
    oldint[irq] = _dos_getvect (vector_no);
    _dos_setvect (vector_no, pcmcia_isr);
#elif (defined(RTPX))
    oldint[irq] = _dos_getvect (vector_no);
    _dos_setvect (vector_no, pcmcia_isr);
#elif (defined(CMXRM))
/* See the provided copy of Ix86L_A.ASM for these routines */
        oldint[irq] = _dos_getvect (vector_no);
        _dos_setvect (vector_no, pcmcia_isr);
#elif (defined(CMXD860))
        // Nothing. done up front
#elif (defined(UCOS))
    oldint[irq] = _dos_getvect (vector_no);
    _dos_setvect (vector_no, (void (interrupt *)(void))pcmcia_isr);
#elif (defined(__PSOS__))
#error implement interrupt hook function for PSOS
#else
#error - Implement hook pcmcia vector for your system
#endif

    /* mask on the interrupt 8259. pc specific */
    ks_mask_isr_on(irq);
    /* clear any stray interrupts */
    ks_clear_isr(irq);
}
#endif /* (USE_ATA) */

/* Common routines */
void ks_restore_vectors()
{
int i;

    for (i = 0; i < 15; i++)
    {
        if (oldint[i])
        {
#if (defined(PLUS))
            NU_Register_LISR(ks_isr_to_vector(i),oldint[i], &oldint[i]);
#elif (defined(POLLOS))
            _dos_setvect (ks_isr_to_vector(i),oldint[i]);
#elif (defined(RTPX))
            _dos_setvect (ks_isr_to_vector(i),oldint[i]);
#elif (defined(UCOS))
            _dos_setvect (ks_isr_to_vector(i),(void (interrupt *)(void))oldint[i]);
#elif (defined(CMXRM))
            _dos_setvect (ks_isr_to_vector(i),(void (interrupt *)(void))oldint[i]);
#elif (defined(CMXD860))
        // Nothing. done up front
#else
#error Implement retore vector for your kernel
#endif
        }
    }

}

#if (IS_NOT_PC_ARCH)

int ks_isr_to_vector(int irq)
{
    return(irq);
}

// turn on the interrupt thru 8259 interrupt controller
void ks_mask_isr_on(int irq)
{
}

// turn off the interrupt thru 8259 interrupt controller
void ks_mask_isr_off(int irq)
{
}

/* clear any stray interupts or acknowledge to interrupt controller */
void ks_clear_isr(int irq)
{
}
#elif (IS_PC_ARCH)

/****** Interrupt Controller Registers ******/
#define MR8259A     0x21        /* interrupt controller 1 */
#define IR8259A     0x20
#define MR8259B     0xA1        /* interrupt controller 2 */
#define IR8259B     0xA0

/****** 8259 REGISTER DEFINITIONS ******/
#define EOI     0x20        /* end of interrupt */
#define RIRR    0x0a        /* read interrupt request register */


int ks_isr_to_vector(int irq)
{
int vector_no;
    /* map the interrupt number to a position in the int table */
    if ( irq > 7)
        vector_no = 0x70 + ( irq - 8);
    else
        vector_no =  irq + 8;
    return(vector_no);
}



// turn on the interrupt thru 8259 interrupt controller
void ks_mask_isr_on(int irq)
{
    if ( irq > 7)      /* if using second int controller */
    {
       OUTBYTE(MR8259B, INBYTE(MR8259B) & ~(1 << ( irq - 8)));
    }
    else
    {
       OUTBYTE (MR8259A, INBYTE(MR8259A) & ~(1 << irq));
    }
}

// turn off the interrupt thru 8259 interrupt controller
void ks_mask_isr_off(int irq)
{
    if ( irq > 7)      /* if using second int controller */
    {
       OUTBYTE(MR8259B, INBYTE(MR8259B) | (1 << ( irq - 8)));
    }
    else
    {
       OUTBYTE (MR8259A, INBYTE(MR8259A) | (1 << irq));
    }
}

/* clear any stray interupts or acknowledge to interrupt controller */
void ks_clear_isr(int irq)
{
    if ( irq > 7)
        OUTBYTE (IR8259B, EOI);
    OUTBYTE (IR8259A, EOI);
}
#else
#error must define ks_isr_to_vector, ks_mask_isr_on(int irq)
#error void ks_mask_isr_off(int irq)
#error void ks_clear_isr(int irq)
#endif


#if (defined(PLUS))
#if (USE_ATA)
    /* These are hisr routines for the ide driver. they are scheduled when the
        ide interrupt service routine calls ks_invoke_ide_interrupt(controller_number) */
void ide_hisr_0(void)
{
    ks_set_ide_signal(0);
}

void ide_hisr_1(void)
{
    ks_set_ide_signal(1);
}
#endif
#if (USE_FLOPPY)
    /* This is the hisr routines for the floppy driver. It is scheduled when the
    floppy interrupt service routine calls floppy_interrupt_signal() */
void floppy_hisr(void)
{
    ks_set_floppy_signal();
}
#endif
#endif /* Nucleus */

#endif //  (USE_ATA || USE_FLOPPY || INCLUDE_PCMCIA)





















?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆国产欧美一区二区三区| 欧美私人免费视频| 久久久777精品电影网影网| 久久99国产精品久久99果冻传媒| 欧美久久久久久久久久| 日韩精品一二三| 日韩欧美高清一区| 国产乱国产乱300精品| 久久久久久久精| av在线播放不卡| 亚洲国产综合91精品麻豆| 91麻豆精品国产91久久久更新时间| 日韩不卡一区二区| 久久久欧美精品sm网站| 日本电影欧美片| 99久久精品国产网站| 欧美肥妇bbw| 精品少妇一区二区三区日产乱码| 亚洲精品在线三区| 亚洲欧美一区二区三区孕妇| 日韩中文字幕一区二区三区| 美女视频黄频大全不卡视频在线播放| 日本大胆欧美人术艺术动态| 国产成人亚洲精品青草天美| 国产精品女同一区二区三区| 亚洲已满18点击进入久久| 欧美日韩中文国产| 久久99国内精品| 亚洲人成电影网站色mp4| 欧美久久久久久久久久| 国产麻豆精品视频| 亚洲自拍偷拍综合| 亚洲精品一区二区三区四区高清| 91视频观看视频| 另类小说一区二区三区| 亚洲视频一区二区在线| 日韩欧美在线不卡| av日韩在线网站| 久久电影国产免费久久电影| 中文字幕日韩精品一区| 欧美一区二区视频观看视频| 成人小视频在线观看| 日韩不卡在线观看日韩不卡视频| 中文在线资源观看网站视频免费不卡| 欧美视频自拍偷拍| www.久久久久久久久| 麻豆精品一区二区| 亚洲一二三级电影| 国产日本欧洲亚洲| 日韩一区二区在线观看| 91丨九色丨蝌蚪丨老版| 欧美性一级生活| 成人国产精品免费观看动漫| 免费观看久久久4p| 亚洲综合清纯丝袜自拍| 国产精品女主播在线观看| 精品国产乱码久久久久久久| 欧美日韩一区二区欧美激情| www.亚洲在线| 91精品福利在线| 亚洲欧美中日韩| 欧美一区二区人人喊爽| 国产精品一品二品| 亚洲欧洲另类国产综合| 欧美日韩美少妇| 国产一区二区在线免费观看| 中文字幕一区二区三区精华液| 99久久夜色精品国产网站| 亚洲美女屁股眼交3| 久久精品亚洲麻豆av一区二区| 91在线精品一区二区| 亚洲专区一二三| 中文字幕亚洲视频| 国产精品视频你懂的| 久久综合av免费| 精品国免费一区二区三区| 色94色欧美sute亚洲线路二| 成人综合在线观看| 成人免费精品视频| 国产福利一区二区三区视频在线| 毛片不卡一区二区| 免费在线观看一区| 免费久久精品视频| 免费观看在线综合色| 麻豆91在线播放免费| 日韩 欧美一区二区三区| 亚洲1区2区3区4区| 午夜视频一区二区三区| 午夜视频一区二区| 麻豆精品国产传媒mv男同| 伦理电影国产精品| 激情综合网av| 国产精品一区二区三区网站| 欧美久久一二区| 欧美一区二区人人喊爽| 精品国产乱码久久久久久久| 精品成人在线观看| 国产亚洲精品aa| 国产精品美女久久福利网站| 最近中文字幕一区二区三区| 欧美一区二区在线不卡| 6080国产精品一区二区| 精品国产免费一区二区三区香蕉| 精品国产99国产精品| 国产精品入口麻豆九色| 亚洲精品国产a| 亚洲国产三级在线| 裸体一区二区三区| 国产盗摄一区二区| 色欲综合视频天天天| 在线成人免费观看| 337p粉嫩大胆色噜噜噜噜亚洲| 国产欧美日韩在线看| 亚洲激情图片小说视频| 日韩国产精品久久久久久亚洲| 狠狠色丁香婷婷综合| 9人人澡人人爽人人精品| 欧美美女一区二区三区| 国产婷婷色一区二区三区| 伊人一区二区三区| 日韩avvvv在线播放| 成人av先锋影音| 欧美日韩高清一区二区不卡| 久久精品人人做| 亚洲成人av一区二区三区| 国产一区欧美日韩| 欧美中文字幕一二三区视频| 精品久久久久久综合日本欧美| 成人欧美一区二区三区1314| 日本麻豆一区二区三区视频| 91天堂素人约啪| 欧美大肚乱孕交hd孕妇| 中文字幕视频一区二区三区久| 日本不卡免费在线视频| 91麻豆自制传媒国产之光| 精品国产伦理网| 一区二区三区四区在线免费观看| 免费人成在线不卡| 色噜噜狠狠色综合欧洲selulu| 日韩精品一区第一页| 91丨九色丨国产丨porny| 精品日韩在线一区| 亚洲午夜羞羞片| 成人国产在线观看| 精品国产露脸精彩对白| 午夜影视日本亚洲欧洲精品| 成人福利在线看| 久久久久久久久久看片| 免费在线观看不卡| 欧美色网一区二区| √…a在线天堂一区| 国产麻豆视频一区二区| 欧美mv日韩mv国产网站app| 亚洲国产欧美一区二区三区丁香婷| 成人看片黄a免费看在线| 精品国产乱码久久久久久夜甘婷婷 | heyzo一本久久综合| 精品久久久久久久久久久久包黑料 | 丰满白嫩尤物一区二区| 欧美成人在线直播| 亚洲成人tv网| 欧美性猛交xxxx黑人交| 亚洲免费观看高清完整版在线| 国产成人自拍在线| 久久久五月婷婷| 精品亚洲aⅴ乱码一区二区三区| 制服丝袜av成人在线看| 日日夜夜一区二区| 欧美日韩国产精品成人| 亚洲成人精品一区二区| 欧美日韩高清在线| 亚洲国产一区二区在线播放| 色婷婷精品大在线视频| 一区二区在线看| 在线免费精品视频| 亚洲精品你懂的| 91国模大尺度私拍在线视频| 亚洲男人天堂av| 色综合久久88色综合天天 | 亚洲欧美成人一区二区三区| caoporen国产精品视频| 中文字幕乱码亚洲精品一区| 粉嫩一区二区三区性色av| 欧美国产综合一区二区| 成人在线视频一区二区| 最新中文字幕一区二区三区| 91亚洲国产成人精品一区二区三| 亚洲视频狠狠干| 欧美日韩一本到| 日本午夜精品视频在线观看| 精品伦理精品一区| 国产成人午夜视频| 中文字幕一区二区三区四区不卡 | 久久久久97国产精华液好用吗| 国产成人在线网站| 国产精品久久久久影院亚瑟| 色悠悠久久综合| 日本中文在线一区| 久久亚洲欧美国产精品乐播| 成人av在线影院|