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

📄 os_flag.lst

📁 ARM仿真案例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   0000008E   0090               STR      R0,[SP, #+0]
   \   00000090   06E0               B        ??OSFlagDel_10
    315                       while (pnode != (OS_FLAG_NODE *)0) {          /* Ready ALL tasks waiting for flags        */
    316                           OS_FlagTaskRdy(pnode, (OS_FLAGS)0);
   \                     ??OSFlagDel_11:
   \   00000092   0021               MOVS     R1,#+0
   \   00000094   0098               LDR      R0,[SP, #+0]
   \   00000096   ........           BL       OS_FlagTaskRdy
    317                           pnode = (OS_FLAG_NODE *)pnode->OSFlagNodeNext;
   \   0000009A   0098               LDR      R0,[SP, #+0]
   \   0000009C   0068               LDR      R0,[R0, #+0]
   \   0000009E   0090               STR      R0,[SP, #+0]
    318                       }
   \                     ??OSFlagDel_10:
   \   000000A0   0098               LDR      R0,[SP, #+0]
   \   000000A2   0028               CMP      R0,#+0
   \   000000A4   F5D1               BNE      ??OSFlagDel_11
    319          #if OS_EVENT_NAME_SIZE > 1
    320                       pgrp->OSFlagName[0]  = '?';                   /* Unknown name                             */
   \   000000A6   3F20               MOVS     R0,#+63
   \   000000A8   A072               STRB     R0,[R4, #+10]
    321                       pgrp->OSFlagName[1]  = OS_ASCII_NUL;
   \   000000AA   0020               MOVS     R0,#+0
   \   000000AC   E072               STRB     R0,[R4, #+11]
    322          #endif
    323                       pgrp->OSFlagType     = OS_EVENT_TYPE_UNUSED;
   \   000000AE   0020               MOVS     R0,#+0
   \   000000B0   2070               STRB     R0,[R4, #+0]
    324                       pgrp->OSFlagWaitList = (void *)OSFlagFreeList;/* Return group to free list                */
   \   000000B2   ....               LDR      R0,??DataTable8  ;; OSFlagFreeList
   \   000000B4   0068               LDR      R0,[R0, #+0]
   \   000000B6   6060               STR      R0,[R4, #+4]
    325                       pgrp->OSFlagFlags    = (OS_FLAGS)0;
   \   000000B8   0020               MOVS     R0,#+0
   \   000000BA   2081               STRH     R0,[R4, #+8]
    326                       OSFlagFreeList       = pgrp;
   \   000000BC   ....               LDR      R0,??DataTable8  ;; OSFlagFreeList
   \   000000BE   0460               STR      R4,[R0, #+0]
    327                       OS_EXIT_CRITICAL();
   \   000000C0   3000               MOVS     R0,R6
   \   000000C2   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    328                       if (tasks_waiting == TRUE) {                  /* Reschedule only if task(s) were waiting  */
   \   000000C6   012F               CMP      R7,#+1
   \   000000C8   01D1               BNE      ??OSFlagDel_12
    329                           OS_Sched();                               /* Find highest priority task ready to run  */
   \   000000CA   ........           _BLF     OS_Sched,??OS_Sched??rT
    330                       }
    331                       *err = OS_NO_ERR;
   \                     ??OSFlagDel_12:
   \   000000CE   0020               MOVS     R0,#+0
   \   000000D0   2870               STRB     R0,[R5, #+0]
    332                       return ((OS_FLAG_GRP *)0);                    /* Event Flag Group has been deleted        */
   \   000000D2   0020               MOVS     R0,#+0
   \   000000D4   05E0               B        ??OSFlagDel_1
    333          
    334                  default:
    335                       OS_EXIT_CRITICAL();
   \                     ??OSFlagDel_8:
   \   000000D6   3000               MOVS     R0,R6
   \   000000D8   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    336                       *err = OS_ERR_INVALID_OPT;
   \   000000DC   0720               MOVS     R0,#+7
   \   000000DE   2870               STRB     R0,[R5, #+0]
    337                       return (pgrp);
   \   000000E0   2000               MOVS     R0,R4
   \                     ??OSFlagDel_1:
   \   000000E2   02B0               ADD      SP,SP,#+8
   \   000000E4   F0BC               POP      {R4-R7}
   \   000000E6   02BC               POP      {R1}
   \   000000E8   0847               BX       R1               ;; return
    338              }
    339          }
    340          #endif
    341          /*$PAGE*/
    342          /*
    343          *********************************************************************************************************
    344          *                                 GET THE NAME OF AN EVENT FLAG GROUP
    345          *
    346          * Description: This function is used to obtain the name assigned to an event flag group
    347          *
    348          * Arguments  : pgrp      is a pointer to the event flag group.
    349          *
    350          *              pname     is a pointer to an ASCII string that will receive the name of the event flag
    351          *                        group.  The string must be able to hold at least OS_FLAG_NAME_SIZE characters.
    352          *
    353          *              err       is a pointer to an error code that can contain one of the following values:
    354          *
    355          *                        OS_NO_ERR                  if the requested task is resumed
    356          *                        OS_ERR_EVENT_TYPE          if 'pevent' is not pointing to an event flag group
    357          *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
    358          *                        OS_FLAG_INVALID_PGRP       if you passed a NULL pointer for 'pgrp'
    359          *
    360          * Returns    : The length of the string or 0 if the 'pgrp' is a NULL pointer.
    361          *********************************************************************************************************
    362          */
    363          
    364          #if OS_FLAG_NAME_SIZE > 1

   \                                 In segment CODE, align 4, keep-with-next
    365          INT8U  OSFlagNameGet (OS_FLAG_GRP *pgrp, char *pname, INT8U *err)
    366          {
   \                     OSFlagNameGet:
   \   00000000   F0B5               PUSH     {R4-R7,LR}
   \   00000002   0600               MOVS     R6,R0
   \   00000004   0F00               MOVS     R7,R1
   \   00000006   1400               MOVS     R4,R2
    367          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    368              OS_CPU_SR  cpu_sr;
    369          #endif
    370              INT8U      len;
    371          
    372          
    373              OS_ENTER_CRITICAL();
   \   00000008   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
   \   0000000C   0500               MOVS     R5,R0
    374          #if OS_ARG_CHK_EN > 0
    375              if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
   \   0000000E   002E               CMP      R6,#+0
   \   00000010   06D1               BNE      ??OSFlagNameGet_0
    376                  OS_EXIT_CRITICAL();                      /* Yes                                                */
   \   00000012   2800               MOVS     R0,R5
   \   00000014   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    377                  *err = OS_FLAG_INVALID_PGRP;
   \   00000018   9620               MOVS     R0,#+150
   \   0000001A   2070               STRB     R0,[R4, #+0]
    378                  return (0);
   \   0000001C   0020               MOVS     R0,#+0
   \   0000001E   1EE0               B        ??OSFlagNameGet_1
    379              }
    380              if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                         */
   \                     ??OSFlagNameGet_0:
   \   00000020   002F               CMP      R7,#+0
   \   00000022   06D1               BNE      ??OSFlagNameGet_2
    381                  OS_EXIT_CRITICAL();                      /* Yes                                                */
   \   00000024   2800               MOVS     R0,R5
   \   00000026   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    382                  *err = OS_ERR_PNAME_NULL;
   \   0000002A   0F20               MOVS     R0,#+15
   \   0000002C   2070               STRB     R0,[R4, #+0]
    383                  return (0);
   \   0000002E   0020               MOVS     R0,#+0
   \   00000030   15E0               B        ??OSFlagNameGet_1
    384              }
    385          #endif
    386              if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
   \                     ??OSFlagNameGet_2:
   \   00000032   3078               LDRB     R0,[R6, #+0]
   \   00000034   0528               CMP      R0,#+5
   \   00000036   06D0               BEQ      ??OSFlagNameGet_3
    387                  OS_EXIT_CRITICAL();
   \   00000038   2800               MOVS     R0,R5
   \   0000003A   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    388                  *err = OS_ERR_EVENT_TYPE;
   \   0000003E   0120               MOVS     R0,#+1
   \   00000040   2070               STRB     R0,[R4, #+0]
    389                  return (0);
   \   00000042   0020               MOVS     R0,#+0
   \   00000044   0BE0               B        ??OSFlagNameGet_1
    390              }
    391              len  = OS_StrCopy(pname, pgrp->OSFlagName);  /* Copy name from OS_FLAG_GRP                         */
   \                     ??OSFlagNameGet_3:
   \   00000046   0A36               ADDS     R6,R6,#+10
   \   00000048   3100               MOVS     R1,R6
   \   0000004A   3800               MOVS     R0,R7
   \   0000004C   ........           _BLF     OS_StrCopy,??OS_StrCopy??rT
   \   00000050   0600               MOVS     R6,R0
    392              OS_EXIT_CRITICAL();
   \   00000052   2800               MOVS     R0,R5
   \   00000054   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    393              *err = OS_NO_ERR;
   \   00000058   0020               MOVS     R0,#+0
   \   0000005A   2070               STRB     R0,[R4, #+0]
    394              return (len);
   \   0000005C   3000               MOVS     R0,R6
   \                     ??OSFlagNameGet_1:
   \   0000005E   F0BC               POP      {R4-R7}
   \   00000060   02BC               POP      {R1}
   \   00000062   0847               BX       R1               ;; return
    395          }
    396          #endif
    397          
    398          /*$PAGE*/
    399          /*
    400          *********************************************************************************************************
    401          *                                 ASSIGN A NAME TO AN EVENT FLAG GROUP
    402          *
    403          * Description: This function assigns a name to an event flag group.
    404          *
    405          * Arguments  : pgrp      is a pointer to the event flag group. 
    406          *
    407          *              pname     is a pointer to an ASCII string that will be used as the name of the event flag
    408          *                        group.  The string must be able to hold at least OS_FLAG_NAME_SIZE characters.
    409          *
    410          *              err       is a pointer to an error code that can contain one of the following values:
    411          *
    412          *                        OS_NO_ERR                  if the requested task is resumed
    413          *                        OS_ERR_EVENT_TYPE          if 'pevent' is not pointing to an event flag group
    414          *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
    415          *                        OS_FLAG_INVALID_PGRP       if you passed a NULL pointer for 'pgrp'
    416          *
    417          * Returns    : None
    418          *********************************************************************************************************
    419          */
    420          
    421          #if OS_FLAG_NAME_SIZE > 1

   \                                 In segment CODE, align 4, keep-with-next

⌨️ 快捷键说明

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