⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isreserv.doc

📁 tc图形编程中的鼠标和键盘的重要头文件
💻 DOC
字号:


                                                                     ISRESERV


 ISRESERV    Reserve dynamic memory for use in ISR 
 
 #include <bintrupt.h>
 
 int isreserv(size_t reserve,
              size_t blksize,
              char **ppblock);
 
 reserv      Size of space (in bytes) to reserve for use in an ISR.  
 blksize     Size of block to allocate via malloc().  
 ppblock     Address of pointer to fill with address of block allocated via 
             malloc(), or to fill with NULL if failure.  
 (Returns)   Success code.  Possible values include:  
             IS_OK (0) -- Success.  
             IS_NO_MEMORY (1) -- Insufficient memory.  
             IS_RANGE (2) -- reserve or blksize is out of range.  

 ISRESERV allocates a block of space via malloc() in  such  a  way  that  the
 amount  of space specified by reserve is available for later allocation from
 an ISR or intervention function.  

 In the T, S, and M memory models of Turbo C you  should  use  the  resulting
 allocated  block  as  the  stack(s) for the stack of the ISR or intervention
 function in question.  In the C, L, and H memory models of Turbo C, you  can
 place  the  ISR  stack  or  intervention  function  stack wherever you wish;
 blksize can be as small as 1.  

 size_t is defined in the standard header file stdlib.h.  

 Example:  
 
           /* Prepare an ISR stack for an ISR that will need to        */
           /* allocate dynamic memory via malloc().                    */
       
       #include <bintrupt.h>
       
       #define MY_INTYPE       0x60
       #define MY_STK_SIZE     2048      /* A conservative stack size. */
       #define MY_NUM_STKS        5      /* Maximum nesting depth.     */
       #define MY_RESERVE     20000      /* Needed for malloc() inside */
                                         /* ISR.                       */
       
       void cdecl     my_isr(ALLREG *,ISRCTRL *,ISRMSG *);
       static ISRCTRL isrblk;
       char          *pstacks;
       
       if (IS_OK != isreserv(MY_RESERVE,MY_STK_SIZE*MY_NUM_STKS,&pstacks))
           exit(3);                      /* Quit:  not enough memory   */
       
       isinstal(MY_INTYPE,my_isr,"THIS IS MY ISR.",
                &isrblk,pstacks,MY_STK_SIZE,MY_NUM_STKS);







 BLAISE COMPUTING                                                    Page   1


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -