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

📄 ggt_func.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 5 页
字号:
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 1   


ARM COMPILER V2.32a, COMPILATION OF MODULE GGT_Func
OBJECT MODULE PLACED IN .\Output\GGT_Func.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\Kernel\GGT_Func.c ARM BROWSE DEBUG PRINT(.\LIST\GGT_FUN
                    -C.LST) TABS(4) OBJECT(.\Output\GGT_Func.obj) 

stmt  level    source

    1          /****************************************************************************************************
    2          **                                        Gogoto OS
    3          **                           (c) Copyright 2007-2008, luyigui(卢益贵)
    4          **                                     All Rights Reserved
    5          **                                         V1.00.0
    6          **
    7          **                             狗狗兔嵌入式多任务系统(基于消息机制)    
    8          **                       绿城代码、GGT-OS、Gogoto OS、狗狗兔嵌入式、狗狗兔系统
    9          **                                      QQ:48092788
   10          **
   11          **------------------文件信息------------------------------------------------------------------------
   12          **  文件名: GGT_Func.c
   13          **  创建人: 卢益贵
   14          **  日 期: 2007年12月8日
   15          **  版  本: V1.00.0
   16          **  描  述: Gogoto OS 功能 函数单元
   17          **
   18          
   19          **------------------修改记录------------------------------------------------------------------------
   20          **  修改人: 卢益贵
   21          **  版  本: 1.80.0
   22          **  日 期: 2008年1月8日
   23          **  描 述: 增加常用的功能函数
   24          **
   25          
   26          ****************************************************************************************************/
   27          
   28          #include        "GGT_OS.h"
   29          #include        "GGT_SysType.h"
   30          
   31          /****************************************************************************************************
   32          **  函数名: ListFirst
   33          **  描  述: 链表头
   34          **  输 入: pFirst:链表头变量地址
   35                      pNode:节点地址
   36          **  输 出: 无
   37          **  创建人: 卢益贵
   38          **  日 期: 2007年12月8日
   39          
   40          **------------------修改记录------------------------------------------------------------------------
   41          **  修改人: 
   42          **  日 期:
   43          **  说  明:
   44          **  原代码:
   45          **--------------------------------------------------------------------------------------------------
   46          ****************************************************************************************************/
   47          void ListFirst(void *pFirst, void *pNode)
   48          {
   49   1          *(void **)pNode = *(void **)pFirst;
   50   1          *(void **)pFirst = pNode;
   51   1      }
   52          
   53          /****************************************************************************************************
   54          **  函数名: ListAppend
   55          **  描  述: 链表挂尾
   56          **  输 入: pFirst:链表头变量地址
   57                      pNode:节点地址
   58          **  输 出: 无
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 2   

   59          **  创建人: 卢益贵
   60          **  日 期: 2007年12月8日
   61          
   62          **------------------修改记录------------------------------------------------------------------------
   63          **  修改人: 
   64          **  日 期:
   65          **  说  明:
   66          **  原代码:
   67          **--------------------------------------------------------------------------------------------------
   68          ****************************************************************************************************/
   69          void ListAppend(void *pFirst, void *pNode)
   70          {
   71   1          *(void **)pNode = 0;
   72   1          while(*(void **)pFirst)
   73   1              pFirst = (void **)(*(void **)pFirst);
   74   1          *(void **)pFirst = pNode;
   75   1      }
   76          
   77          /****************************************************************************************************
   78          **  函数名: ListDelete
   79          **  描  述: 链表节点删除
   80          **  输 入: pFirst:链表头变量地址
   81                      pNode:节点地址
   82          **  输 出: 无
   83          **  创建人: 卢益贵
   84          **  日 期: 2007年12月8日
   85          
   86          **------------------修改记录------------------------------------------------------------------------
   87          **  修改人: 
   88          **  日 期:
   89          **  说  明:
   90          **  原代码:
   91          **--------------------------------------------------------------------------------------------------
   92          ****************************************************************************************************/
   93          void ListDelete(void *pFirst, void *pNode)
   94          {
   95   1          while(*(void **)pFirst)
   96   1          {
   97   2              if(*(void **)pFirst == pNode)
   98   2              {
   99   3                  *(void **)pFirst = *(void **)pNode;
  100   3                  return;
  101   3              }
  102   2              pFirst = (void **)(*(void **)pFirst);
  103   2          }
  104   1      }
  105          
  106          /****************************************************************************************************
  107          **  函数名: ListInsert
  108          **  描  述: 链表节点插入
  109          **  输 入: pFirst:链表头变量地址
  110                      pNode:节点地址
  111                      pIsHere:判断插入点函数
  112          **  输 出: 无
  113          **  创建人: 卢益贵
  114          **  日 期: 2007年12月8日
  115          
  116          **------------------修改记录------------------------------------------------------------------------
  117          **  修改人: 
  118          **  日 期:
  119          **  说  明:
  120          **  原代码:
  121          **--------------------------------------------------------------------------------------------------
  122          ****************************************************************************************************/
  123          void ListInsert(void *pFirst, void *pNode,
  124                          BOOL (*pIsHere)(void *pNode, void *pNodeIns))
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 3   

  125          {
  126   1          while(*(void **)pFirst)
  127   1          {
  128   2              if(NULL == (*pIsHere)(*(void **)pFirst, pNode))
  129   2              {
  130   3                  *(void **)pNode = *(void **)pFirst;
  131   3                  *(void **)pFirst = pNode;
  132   3                  return;
  133   3              }
  134   2              pFirst = (void **)(*(void **)pFirst);
  135   2          }
  136   1          *(void **)pNode = 0;
  137   1          *(void **)pFirst = pNode;
  138   1      }
  139          
  140          /****************************************************************************************************
  141          **  函数名: BoxInit
  142          **  描  述: 内存合初始化
  143          **  输 入: pBoxHead:盒子头
  144                      BoxSize:盒子空间大小
  145                      BoxSize:块空间大小
  146          **  输 出: 无
  147          **  创建人: 卢益贵
  148          **  日 期: 2007年12月8日
  149          
  150          **------------------修改记录------------------------------------------------------------------------
  151          **  修改人: 
  152          **  日 期:
  153          **  说  明:
  154          **  原代码:
  155          **--------------------------------------------------------------------------------------------------
  156          ****************************************************************************************************/
  157          void BoxInit(void *pBoxHead, INT32 BoxSize, INT32 BlockSize) 
  158          {
  159   1          void *pEnd, *pBlock, *pNext;
  160   1      
  161   1          if((sizeof(UINT32) > BlockSize) || ((BlockSize + sizeof(_BoxHead) > BoxSize)))
  162   1              return;
  163   1      
  164   1          pBlock = ((UINT8 *)pBoxHead) + sizeof(_BoxHead);
  165   1          ((_pBoxHead)pBoxHead)->pFree = pBlock;
  166   1          pEnd = ((UINT8 *)pBoxHead) + BoxSize;
  167   1      
  168   1          pEnd = ((UINT8 *)pEnd) - BlockSize;
  169   1          while(1)  
  170   1          {
  171   2              pNext = ((UINT8 *)pBlock) + BlockSize;
  172   2              if(pNext > pEnd)  
  173   2                  break;
  174   2              *((void **)pBlock) = pNext;
  175   2              pBlock = pNext;
  176   2          }
  177   1      
  178   1          *((void **)pBlock) = 0;
  179   1      }
  180          
  181          /****************************************************************************************************
  182          **  函数名: BoxAlloc
  183          **  描  述: 内存块分配
  184          **  输 入: pBoxHead:盒子头
  185          **  输 出: 无
  186          **  创建人: 卢益贵
  187          **  日 期: 2007年12月8日
  188          
  189          **------------------修改记录------------------------------------------------------------------------
  190          **  修改人: 
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 4   

  191          **  日 期:
  192          **  说  明:
  193          **  原代码:
  194          **--------------------------------------------------------------------------------------------------
  195          ****************************************************************************************************/
  196          void *BoxAlloc(void *pBoxHead)
  197          {
  198   1          void **pFree;
  199   1      
  200   1          pFree = ((_pBoxHead)pBoxHead)->pFree;
  201   1          if(pFree) 
  202   1              ((_pBoxHead)pBoxHead)->pFree = *pFree;
  203   1      
  204   1          return(pFree);
  205   1      }
  206          
  207          /****************************************************************************************************
  208          **  函数名: BoxFree
  209          **  描  述: 内存块释放
  210          **  输 入: pBoxHead:盒子头
  211                      pBox:块地址
  212          **  输 出: 无
  213          **  创建人: 卢益贵
  214          **  日 期: 2007年12月8日
  215          
  216          **------------------修改记录------------------------------------------------------------------------
  217          **  修改人: 
  218          **  日 期:
  219          **  说  明:
  220          **  原代码:
  221          **--------------------------------------------------------------------------------------------------
  222          ****************************************************************************************************/
  223          void BoxFree(void *pBoxHead, void *pBox)
  224          {
  225   1          *((void **)pBox) = ((_pBoxHead)pBoxHead)->pFree;
  226   1          ((_pBoxHead)pBoxHead)->pFree = pBox;
  227   1      }
  228          
  229          void ClearBuf(UINT8 *pBuf, INT32 Len)
  230          {
  231   1          while(Len--)
  232   1              *pBuf++ = 0;
  233   1      }
  234          
  235          void FullBuf(UINT8 *pBuf, INT32 Len, UINT8 Data)
  236          {
  237   1          while(Len--)
  238   1              *pBuf++ = Data;
  239   1      }
  240          
  241          UINT32 StrToDWord(UINT8 *pStr)
  242          {
  243   1          UINT32 R;
  244   1      
  245   1          R = 0;
  246   1          while(*pStr)
  247   1          {
  248   2              R = R * 10 + (*pStr - '0');
  249   2              pStr++;
  250   2          }
  251   1          return(R);
  252   1      }
  253          
  254          INT32 StrToInt(UINT8 *pStr)
  255          {
  256   1          if('-' == *pStr)
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 5   

  257   1              return(-((int)StrToDWord(pStr + 1)));
  258   1          else
  259   1              return((int)StrToDWord(pStr));
  260   1      }
  261          
  262          UINT32 HexCharToDWord(UINT8 Char)
  263          {
  264   1          if(('0' <= Char) && ('9' >= Char))
  265   1              return(Char - '0');
  266   1          else
  267   1          if(('A' <= Char) && ('F' >= Char))
  268   1              return(10 + (Char - 'A'));
  269   1          else
  270   1          if(('a' <= Char) && ('f' >= Char))
  271   1              return(10 + (Char - 'a'));
  272   1          else
  273   1              return(0);
  274   1      }
  275          
  276          UINT32 HexToDWord(UINT8 *pStr)
  277          {
  278   1          UINT32 R;
  279   1      
  280   1          R = 0;
  281   1          while(*pStr)
  282   1          {
  283   2              R = R * 16 + HexCharToDWord(*pStr);
  284   2              pStr++;
  285   2          }
  286   1          return(R);
  287   1      }
  288          
  289          float StrToFloat(UINT8 *pStr)
  290          {
  291   1          float R, RR;
  292   1          UINT8 IsFloat;
  293   1          
  294   1          R = 0;
  295   1          IsFloat = 0;
  296   1          
  297   1          if('-' == *pStr)
  298   1          {
  299   2              RR = -1;

⌨️ 快捷键说明

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