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

📄 os_flag.lst

📁 ARM仿真案例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \                     ??OSFlagDel_1:
   \   000000BC   2870               STRB     R0,[R5, #+0]
    337                       return (pgrp);
   \   000000BE   2000               MOVS     R0,R4
   \                     ??OSFlagDel_3:
   \   000000C0   01B0               ADD      SP,SP,#+4
   \   000000C2   F0BC               POP      {R4-R7}
   \   000000C4   02BC               POP      {R1}
   \   000000C6   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   05D1               BNE      ??OSFlagNameGet_0
    376                  OS_EXIT_CRITICAL();                      /* Yes                                                */
   \   00000012   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    377                  *err = OS_FLAG_INVALID_PGRP;
   \   00000016   9620               MOVS     R0,#+150
   \                     ??OSFlagNameGet_1:
   \   00000018   2070               STRB     R0,[R4, #+0]
    378                  return (0);
   \   0000001A   0020               MOVS     R0,#+0
   \   0000001C   1BE0               B        ??OSFlagNameGet_2
    379              }
    380              if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                         */
   \                     ??OSFlagNameGet_0:
   \   0000001E   002F               CMP      R7,#+0
   \   00000020   03D1               BNE      ??OSFlagNameGet_3
    381                  OS_EXIT_CRITICAL();                      /* Yes                                                */
   \   00000022   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    382                  *err = OS_ERR_PNAME_NULL;
   \   00000026   0F20               MOVS     R0,#+15
   \   00000028   F6E7               B.N      ??OSFlagNameGet_1
    383                  return (0);
    384              }
    385          #endif
    386              if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
   \                     ??OSFlagNameGet_3:
   \   0000002A   3078               LDRB     R0,[R6, #+0]
   \   0000002C   0528               CMP      R0,#+5
   \   0000002E   06D0               BEQ      ??OSFlagNameGet_4
    387                  OS_EXIT_CRITICAL();
   \   00000030   2800               MOVS     R0,R5
   \   00000032   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    388                  *err = OS_ERR_EVENT_TYPE;
   \   00000036   0120               MOVS     R0,#+1
   \   00000038   2070               STRB     R0,[R4, #+0]
    389                  return (0);
   \   0000003A   0020               MOVS     R0,#+0
   \   0000003C   0BE0               B        ??OSFlagNameGet_2
    390              }
    391              len  = OS_StrCopy(pname, pgrp->OSFlagName);  /* Copy name from OS_FLAG_GRP                         */
   \                     ??OSFlagNameGet_4:
   \   0000003E   0A36               ADDS     R6,R6,#+10
   \   00000040   3100               MOVS     R1,R6
   \   00000042   3800               MOVS     R0,R7
   \   00000044   ........           _BLF     OS_StrCopy,??OS_StrCopy??rT
   \   00000048   0600               MOVS     R6,R0
    392              OS_EXIT_CRITICAL();
   \   0000004A   2800               MOVS     R0,R5
   \   0000004C   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    393              *err = OS_NO_ERR;
   \   00000050   0020               MOVS     R0,#+0
   \   00000052   2070               STRB     R0,[R4, #+0]
    394              return (len);
   \   00000054   3000               MOVS     R0,R6
   \                     ??OSFlagNameGet_2:
   \   00000056   F0BC               POP      {R4-R7}
   \   00000058   02BC               POP      {R1}
   \   0000005A   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
    422          void  OSFlagNameSet (OS_FLAG_GRP *pgrp, char *pname, INT8U *err)
    423          {
   \                     OSFlagNameSet:
   \   00000000   F0B5               PUSH     {R4-R7,LR}
   \   00000002   0500               MOVS     R5,R0
   \   00000004   0E00               MOVS     R6,R1
   \   00000006   1400               MOVS     R4,R2
    424          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    425              OS_CPU_SR  cpu_sr;
    426          #endif
    427              INT8U      len;
    428          
    429          
    430              OS_ENTER_CRITICAL();
   \   00000008   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
   \   0000000C   0700               MOVS     R7,R0
    431          #if OS_ARG_CHK_EN > 0
    432              if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
   \   0000000E   002D               CMP      R5,#+0
   \   00000010   03D1               BNE      ??OSFlagNameSet_0
    433                  OS_EXIT_CRITICAL();                      /* Yes                                                */
   \   00000012   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    434                  *err = OS_FLAG_INVALID_PGRP;
   \   00000016   9620               MOVS     R0,#+150
   \   00000018   20E0               B.N      ??OSFlagNameSet_1
    435                  return;
    436              }
    437              if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                         */
   \                     ??OSFlagNameSet_0:
   \   0000001A   002E               CMP      R6,#+0
   \   0000001C   03D1               BNE      ??OSFlagNameSet_2
    438                  OS_EXIT_CRITICAL();                      /* Yes                                                */
   \   0000001E   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    439                  *err = OS_ERR_PNAME_NULL;
   \   00000022   0F20               MOVS     R0,#+15
   \   00000024   1AE0               B.N      ??OSFlagNameSet_1
    440                  return;
    441              }
    442          #endif
    443              if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
   \                     ??OSFlagNameSet_2:
   \   00000026   2878               LDRB     R0,[R5, #+0]
   \   00000028   0528               CMP      R0,#+5
   \   0000002A   04D0               BEQ      ??OSFlagNameSet_3
    444                  OS_EXIT_CRITICAL();
   \   0000002C   3800               MOVS     R0,R7
   \   0000002E   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    445                  *err = OS_ERR_EVENT_TYPE;
   \   00000032   0120               MOVS     R0,#+1
   \   00000034   12E0               B.N      ??OSFlagNameSet_1
    446                  return;
    447              }
    448              len = OS_StrLen(pname);                      /* Can we fit the string in the storage area?         */
   \                     ??OSFlagNameSet_3:
   \   00000036   3000               MOVS     R0,R6
   \   00000038   ........           _BLF     OS_StrLen,??OS_StrLen??rT
    449              if (len > (OS_FLAG_NAME_SIZE - 1)) {         /* No                                                 */
   \   0000003C   2028               CMP      R0,#+32
   \   0000003E   04D3               BCC      ??OSFlagNameSet_4
    450                  OS_EXIT_CRITICAL();
   \   00000040   3800               MOVS     R0,R7
   \   00000042   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    451                  *err = OS_ERR_FLAG_NAME_TOO_LONG;
   \   00000046   0D20               MOVS     R0,#+13

⌨️ 快捷键说明

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