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

📄 ggt_msg.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 1   


ARM COMPILER V2.32a, COMPILATION OF MODULE GGT_Msg
OBJECT MODULE PLACED IN .\Output\GGT_Msg.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\Kernel\GGT_Msg.c ARM BROWSE DEBUG PRINT(.\LIST\GGT_MSG.
                    -LST) TABS(4) OBJECT(.\Output\GGT_Msg.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_Msg.c
   13          **  创建人: 卢益贵
   14          **  日 期: 2007年12月8日
   15          **  版  本: V1.00.0
   16          **  描  述: Gogoto OS 消息功能单元
   17          **
   18          
   19          **------------------修改记录------------------------------------------------------------------------
   20          **  修改人:
   21          **  版  本:
   22          **  日 期:
   23          **  描 述:
   24          **
   25          
   26          ****************************************************************************************************/
   27          
   28          #include        "GGT_OS.h"
   29          #include        "GGT_CPU.h"
   30          #include        "GGT_Type.h"
   31          #include        "GGT_SysType.h"
   32          #include        "GGT_SysCfg.h"
   33          #include        "GGT_Kernel.h"
   34          
   35          #if(OS_MSG)
   36          
   37          UINT32 *pOSBoxMsg;
   38          
   39          /****************************************************************************************************
   40          **  函数名: OSMsgInit
   41          **  描  述: 初始化消息空间
   42          **  输 入: 无
   43          **  输 出: 无
   44          **  创建人: 卢益贵
   45          **  日 期: 2007年12月8日
   46          
   47          **------------------修改记录------------------------------------------------------------------------
   48          **  修改人: 
   49          **  日 期:
   50          **  说  明:
   51          **  原代码:
   52          **--------------------------------------------------------------------------------------------------
   53          ****************************************************************************************************/
   54          void OSMsgInit(void)
   55          {
   56   1          pOSBoxMsg = (UINT32 *)OSGetBoxMsg();
   57   1          BoxInit(pOSBoxMsg, sizeof(_BoxHead) + OSGetSumMsg() * sizeof(_OSMsg), sizeof(_OSMsg));
   58   1      }
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 2   

   59          
   60          /****************************************************************************************************
   61          **  函数名: OSMsgPost
   62          **  描  述: 消息发送函数,不等待目标处理,不管收到与否
   63          **  输 入: TaskID:目标任务的ID,
   64                      Msg:消息内容,
   65                      wParam:消息参数
   66                      lParam:消息参数
   67          **  输 出: 返回TRUE表示成功
   68          **  创建人: 卢益贵
   69          **  日 期: 2007年12月8日
   70          
   71          **------------------修改记录------------------------------------------------------------------------
   72          **  修改人: 
   73          **  日 期:
   74          **  说  明:
   75          **  原代码:
   76          **--------------------------------------------------------------------------------------------------
   77          ****************************************************************************************************/
   78          BOOL OSMsgPost(const UINT32 TaskID, const UINT32 Msg, const UINT32 wParam, const UINT32 lParam)
   79          {
   80   1          BOOL R;
   81   1          _pOSMsg pMsg;
   82   1          _pOSTask pTask;
   83   1      
   84   1          OSIRQLock();
   85   1      
   86   1          pMsg = (_pOSMsg)BoxAlloc(pOSBoxMsg);
   87   1          R = pMsg != NULL;
   88   1          if(R)
   89   1          {
   90   2              pMsg->Sender = pOSTskNow->ID;
   91   2              pMsg->Msg = Msg;
   92   2              pMsg->wParam = wParam;
   93   2              pMsg->lParam = lParam;
   94   2          
   95   2              pTask = &pOSTask[TaskID - 1];
   96   2              ListAppend((void *)(&(pTask->pMsg)), pMsg);
   97   2          
   98   2              //如果对方正在等待,则加载他
   99   2              if(OS_TSK_STATE_WAIT_MSG == pTask->State)
  100   2                  OSTaskPushReady(pTask);
  101   2          }
  102   1          
  103   1          OSIRQUnlock();
  104   1          return(R);
  105   1      }
  106          
  107          /****************************************************************************************************
  108          **  函数名: OSMsgPeek
  109          **  描  述: 消息窥探
  110          **  输 入: pMsg:指向消息结构的指针
  111          **  输 出: 返回TRUE表示有消息
  112          **  创建人: 卢益贵
  113          **  日 期: 2007年12月8日
  114          
  115          **------------------修改记录------------------------------------------------------------------------
  116          **  修改人: 
  117          **  日 期:
  118          **  说  明:
  119          **  原代码:
  120          **--------------------------------------------------------------------------------------------------
  121          ****************************************************************************************************/
  122          BOOL OSMsgPeek(_pMsg pMsg)
  123          {
  124   1          BOOL R;
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 3   

  125   1          _pOSMsg pOSMsg;
  126   1      
  127   1          OSIRQLock();
  128   1      
  129   1          R = (NULL != pOSTskNow->pMsg);
  130   1          if(R)
  131   1          {
  132   2              pOSMsg = pOSTskNow->pMsg;
  133   2              *pMsg = *((_pMsg)(&(pOSMsg->Sender)));
  134   2              pOSTskNow->pMsg = (pOSTskNow->pMsg)->pNext;
  135   2              BoxFree(pOSBoxMsg, pOSMsg);
  136   2          }
  137   1      
  138   1          OSIRQUnlock();
  139   1          
  140   1          return(R);
  141   1      }
  142          
  143          /****************************************************************************************************
  144          **  函数名: OSMsgWait
  145          **  描  述: 消息等待函数,没有消息不返回,一直挂起等待
  146          **  输 入: pMsg:指向消息结构的指针
  147          **  输 出: 返回TRUE表示有消息
  148          **  创建人: 卢益贵
  149          **  日 期: 2007年12月8日
  150          
  151          **------------------修改记录------------------------------------------------------------------------
  152          **  修改人: 
  153          **  日 期:
  154          **  说  明:
  155          **  原代码:
  156          **--------------------------------------------------------------------------------------------------
  157          ****************************************************************************************************/
  158          BOOL OSMsgWait(_pMsg pMsg)
  159          {
  160   1      DoWait:
  161   1          if(OSMsgPeek(pMsg))
  162   1          {
  163   2              return(TRUE);
  164   2          }else
  165   1          {
  166   2              pOSTskNow->State = OS_TSK_STATE_WAIT_MSG;
  167   2              OSTaskIsNULLLoadDef();
  168   2              OSTaskSW();
  169   2              goto DoWait;
  170   2          }
  171   1      }
  172          
  173          /****************************************************************************************************
  174          **  函数名: OSMsgWaitFor
  175          **  描  述: 等待指定消息的函数,等不到指定消息不返回,一直挂起等待
  176          **  输 入: pMsg:指向消息结构的指针
  177          **  输 出: 返回TRUE表示有消息
  178          **  创建人: 卢益贵
  179          **  日 期: 2007年12月8日
  180          
  181          **------------------修改记录------------------------------------------------------------------------
  182          **  修改人: 
  183          **  日 期:
  184          **  说  明:
  185          **  原代码:
  186          **--------------------------------------------------------------------------------------------------
  187          ****************************************************************************************************/
  188          BOOL OSMsgWaitFor(const UINT32 Msg, _pMsg pMsg)
  189          {
  190   1      DoWait:
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 4   

  191   1          if(OSMsgPeek(pMsg))
  192   1          {
  193   2              if(Msg == pMsg->Msg)            
  194   2                  return(TRUE);
  195   2              else
  196   2                  goto DoWait;
  197   2          }else
  198   1          {
  199   2              pOSTskNow->State = OS_TSK_STATE_WAIT_MSG;
  200   2              OSTaskIsNULLLoadDef();
  201   2              OSTaskSW();
  202   2              goto DoWait;
  203   2          }
  204   1      }
  205          
  206          #endif
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE32 (ListAppend?A)
 EXTERN CODE32 (BoxInit?A)
 EXTERN CODE32 (BoxAlloc?A)
 EXTERN CODE32 (BoxFree?A)
 EXTERN CODE32 (SWI_Handler?A)
 EXTERN DATA (pOSTskNow)
 EXTERN DATA (pOSTask)
 EXTERN CODE32 (OSTaskPushReady?A)
 EXTERN CODE32 (OSTaskIsNULLLoadDef?A)
 EXTERN CODE32 (OSGetSumMsg?A)
 EXTERN CODE32 (OSGetBoxMsg?A)



*** PUBLICS:
 PUBLIC         OSMsgWaitFor?A
 PUBLIC         OSMsgWait?A
 PUBLIC         OSMsgPeek?A
 PUBLIC         OSMsgPost?A
 PUBLIC         OSMsgInit?A
 PUBLIC         pOSBoxMsg



*** DATA SEGMENT '?DT0?GGT_Msg':
 00000000          pOSBoxMsg:
 00000000            DS          4



*** CODE SEGMENT '?PR?OSMsgInit?A?GGT_Msg':
   54: void OSMsgInit(void)
 00000000  E92D4000  STMDB       R13!,{LR}
   56:     pOSBoxMsg = (UINT32 *)OSGetBoxMsg();
 00000004  EBFFFFFD  BL          OSGetBoxMsg?A  ; Targ=0x0
 00000008  E5101000  LDR         R1,=pOSBoxMsg ; pOSBoxMsg

⌨️ 快捷键说明

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