亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_task.lst

?? keil下單片機C8051F020的源程序
?? LST
?? 第 1 頁 / 共 4 頁
字號:
C51 COMPILER V7.50   OS_TASK                                                               12/12/2007 16:55:25 PAGE 7   

 365          *              4) The lock nesting counter is incremented because, for a brief instant, if the current
 366          *                 task is being deleted, the current task would not be able to be rescheduled because it
 367          *                 is removed from the ready list.  Incrementing the nesting counter prevents another task
 368          *                 from being schedule.  This means that the ISR would return to the current task which is
 369          *                 being deleted.  The rest of the deletion would thus be able to be completed.
 370          *********************************************************************************************************
 371          */
 372          /*$PAGE*/
 373          #if OS_TASK_DEL_EN
              INT8U OSTaskDel (INT8U prio) reentrant
              {
                  OS_TCB   *ptcb;
                  OS_EVENT *pevent;
              
              
                  if (prio == OS_IDLE_PRIO) {                                 /* Not allowed to delete idle task     */
                      return (OS_TASK_DEL_IDLE);
                  }
                  if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) {       /* Task priority valid ?               */
                      return (OS_PRIO_INVALID);
                  }
                  OS_ENTER_CRITICAL();
                  if (OSIntNesting > 0) {                                     /* See if trying to delete from ISR    */
                      OS_EXIT_CRITICAL();
                      return (OS_TASK_DEL_ISR);
                  }
                  if (prio == OS_PRIO_SELF) {                                 /* See if requesting to delete self    */
                      prio = OSTCBCur->OSTCBPrio;                             /* Set priority to delete to current   */
                  }
                  if ((ptcb = OSTCBPrioTbl[prio]) != (OS_TCB *)0) {           /* Task to delete must exist           */
                      if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {/* Make task not ready                 */
                          OSRdyGrp &= ~ptcb->OSTCBBitY;
                      }
                      if ((pevent = ptcb->OSTCBEventPtr) != (OS_EVENT *)0) {  /* If task is waiting on event         */
                          if ((pevent->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) { /* ... remove task from */
                              pevent->OSEventGrp &= ~ptcb->OSTCBBitY;                        /* ... event ctrl block */
                          }
                      }
                      ptcb->OSTCBDly  = 0;                                    /* Prevent OSTimeTick() from updating  */
                      ptcb->OSTCBStat = OS_STAT_RDY;                          /* Prevent task from being resumed     */
                      OSLockNesting++;
                      OS_EXIT_CRITICAL();                                     /* Enabling INT. ignores next instruc. */
                      OSDummy();                                              /* ... Dummy ensures that INTs will be */
                      OS_ENTER_CRITICAL();                                    /* ... disabled HERE!                  */
                      OSLockNesting--;
                      OSTaskDelHook(ptcb);                                    /* Call user defined hook              */
                      OSTaskCtr--;                                            /* One less task being managed         */
                      OSTCBPrioTbl[prio] = (OS_TCB *)0;                       /* Clear old priority entry            */
                      if (ptcb->OSTCBPrev == (OS_TCB *)0) {                   /* Remove from TCB chain               */
                          ptcb->OSTCBNext->OSTCBPrev = (OS_TCB *)0;
                          OSTCBList                  = ptcb->OSTCBNext;
                      } else {
                          ptcb->OSTCBPrev->OSTCBNext = ptcb->OSTCBNext;
                          ptcb->OSTCBNext->OSTCBPrev = ptcb->OSTCBPrev;
                      }
                      ptcb->OSTCBNext = OSTCBFreeList;                        /* Return TCB to free TCB list         */
                      OSTCBFreeList   = ptcb;
                      OS_EXIT_CRITICAL();
                      OSSched();                                              /* Find new highest priority task      */
                      return (OS_NO_ERR);
                  } else {
                      OS_EXIT_CRITICAL();
C51 COMPILER V7.50   OS_TASK                                                               12/12/2007 16:55:25 PAGE 8   

                      return (OS_TASK_DEL_ERR);
                  }
              }
              #endif
 431          /*$PAGE*/
 432          /*
 433          *********************************************************************************************************
 434          *                                    REQUEST THAT A TASK DELETE ITSELF
 435          *
 436          * Description: This function is used to:
 437          *                   a) notify a task to delete itself.
 438          *                   b) to see if a task requested that the current task delete itself.
 439          *              This function is a little tricky to understand.  Basically, you have a task that needs
 440          *              to be deleted however, this task has resources that it has allocated (memory buffers,
 441          *              semaphores, mailboxes, queues etc.).  The task cannot be deleted otherwise these
 442          *              resources would not be freed.  The requesting task calls OSTaskDelReq() to indicate that
 443          *              the task needs to be deleted.  Deleting of the task is however, deferred to the task to
 444          *              be deleted.  For example, suppose that task #10 needs to be deleted.  The requesting task
 445          *              example, task #5, would call OSTaskDelReq(10).  When task #10 gets to execute, it calls
 446          *              this function by specifying OS_PRIO_SELF and monitors the returned value.  If the return
 447          *              value is OS_TASK_DEL_REQ, another task requested a task delete.  Task #10 would look like
 448          *              this:
 449          *
 450          *                   void Task(void *data)
 451          *                   {
 452          *                       .
 453          *                       .
 454          *                       while (1) {
 455          *                           OSTimeDly(1);
 456          *                           if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ) {
 457          *                               Release any owned resources;
 458          *                               De-allocate any dynamic memory;
 459          *                               OSTaskDel(OS_PRIO_SELF);
 460          *                           }
 461          *                       }
 462          *                   }
 463          *
 464          * Arguments  : prio    is the priority of the task to request the delete from
 465          *
 466          * Returns    : OS_NO_ERR          if the task exist and the request has been registered
 467          *              OS_TASK_NOT_EXIST  if the task has been deleted.  This allows the caller to know whether
 468          *                                 the request has been executed.
 469          *              OS_TASK_DEL_IDLE   if you requested to delete uC/OS-II's idle task
 470          *              OS_PRIO_INVALID    if the priority you specify is higher that the maximum allowed 
 471          *                                 (i.e. >= OS_LOWEST_PRIO) or, you have not specified OS_PRIO_SELF.
 472          *              OS_TASK_DEL_REQ    if a task (possibly another task) requested that the running task be 
 473          *                                 deleted.
 474          *********************************************************************************************************
 475          */
 476          /*$PAGE*/
 477          #if OS_TASK_DEL_EN
              INT8U OSTaskDelReq (INT8U prio) reentrant
              {
                  BOOLEAN  stat;
                  INT8U    err;
                  OS_TCB  *ptcb;
              
              
                  if (prio == OS_IDLE_PRIO) {                                 /* Not allowed to delete idle task     */
                      return (OS_TASK_DEL_IDLE);
                  }
                  if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) {       /* Task priority valid ?               */
C51 COMPILER V7.50   OS_TASK                                                               12/12/2007 16:55:25 PAGE 9   

                      return (OS_PRIO_INVALID);
                  }
                  if (prio == OS_PRIO_SELF) {                                 /* See if a task is requesting to ...  */
                      OS_ENTER_CRITICAL();                                    /* ... this task to delete itself      */
                      stat = OSTCBCur->OSTCBDelReq;                           /* Return request status to caller     */
                      OS_EXIT_CRITICAL();
                      return (stat);
                  } else {
                      OS_ENTER_CRITICAL();
                      if ((ptcb = OSTCBPrioTbl[prio]) != (OS_TCB *)0) {       /* Task to delete must exist           */
                          ptcb->OSTCBDelReq = OS_TASK_DEL_REQ;                /* Set flag indicating task to be DEL. */
                          err               = OS_NO_ERR;
                      } else {
                          err               = OS_TASK_NOT_EXIST;              /* Task must be deleted                */
                      }
                      OS_EXIT_CRITICAL();
                      return (err);
                  }
              }
              #endif
 509          /*$PAGE*/
 510          /*
 511          *********************************************************************************************************
 512          *                                        RESUME A SUSPENDED TASK
 513          *
 514          * Description: This function is called to resume a previously suspended task.  This is the only call that
 515          *              will remove an explicit task suspension.
 516          *
 517          * Arguments  : prio     is the priority of the task to resume.
 518          *
 519          * Returns    : OS_NO_ERR                if the requested task is resumed
 520          *              OS_PRIO_INVALID          if the priority you specify is higher that the maximum allowed 
 521          *                                       (i.e. >= OS_LOWEST_PRIO)
 522          *              OS_TASK_RESUME_PRIO      if the task to resume does not exist
 523          *              OS_TASK_NOT_SUSPENDED    if the task to resume has not been suspended
 524          *********************************************************************************************************
 525          */
 526          
 527          #if OS_TASK_SUSPEND_EN
              INT8U OSTaskResume (INT8U prio) reentrant
              {
                  OS_TCB   *ptcb;
              
              
                  if (prio >= OS_LOWEST_PRIO) {                               /* Make sure task priority is valid    */
                      return (OS_PRIO_INVALID);
                  }
                  OS_ENTER_CRITICAL();
                  if ((ptcb = OSTCBPrioTbl[prio]) == (OS_TCB *)0) {           /* Task to suspend must exist          */
                      OS_EXIT_CRITICAL();
                      return (OS_TASK_RESUME_PRIO);
                  } else {
                      if (ptcb->OSTCBStat & OS_STAT_SUSPEND) {                           /* Task must be suspended   */
                          if (((ptcb->OSTCBStat &= ~OS_STAT_SUSPEND) == OS_STAT_RDY) &&  /* Remove suspension        */
                               (ptcb->OSTCBDly  == 0)) {                                 /* Must not be delayed      */
                              OSRdyGrp               |= ptcb->OSTCBBitY;                 /* Make task ready to run   */
                              OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
                              OS_EXIT_CRITICAL();
                              OSSched();
                          } else {
                              OS_EXIT_CRITICAL();
                          }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品视频一区| 777a∨成人精品桃花网| 激情伊人五月天久久综合| 亚洲一二三专区| 在线观看国产日韩| 99久久国产综合精品色伊| 日韩精品免费专区| 五月婷婷综合网| 日韩精品高清不卡| 久久99日本精品| 国产成人亚洲精品青草天美| 国产一区二区三区免费在线观看| 精品一区二区三区免费视频| 石原莉奈一区二区三区在线观看| 亚洲国产精品精华液网站| 亚洲在线观看免费视频| 蜜臀va亚洲va欧美va天堂| 午夜精品久久久久久不卡8050| 日韩一区精品字幕| 精品亚洲成av人在线观看| 国产成人精品亚洲777人妖| 99久久久精品| 日韩一区二区免费视频| 国产精品国产三级国产| 美女一区二区视频| 国产成人av一区二区三区在线| 不卡一区在线观看| 一本久久a久久精品亚洲| 久久久久久久久99精品| 亚洲午夜三级在线| 日本女人一区二区三区| 99亚偷拍自图区亚洲| 7777精品伊人久久久大香线蕉经典版下载 | 日韩免费高清av| 亚洲香肠在线观看| 91一区二区三区在线观看| 26uuu亚洲| 亚洲一区二区精品久久av| 国产成人8x视频一区二区| www.欧美日韩| 欧美在线影院一区二区| 色综合天天综合网国产成人综合天| 欧美一级一区二区| 亚洲chinese男男1069| 国产一区二区三区黄视频| 欧美色图在线观看| 夜夜爽夜夜爽精品视频| 在线观看欧美日本| 亚洲国产欧美在线人成| 欧美亚日韩国产aⅴ精品中极品| 日韩一级大片在线| 国产日韩欧美不卡在线| 亚洲九九爱视频| 亚洲欧洲无码一区二区三区| 久久99热99| 欧美变态tickle挠乳网站| 久久se这里有精品| 亚洲人吸女人奶水| 国产婷婷色一区二区三区四区 | 国内精品国产成人国产三级粉色| 日韩精品一区二区三区视频播放 | 黄页网站大全一区二区| 国产亚洲成年网址在线观看| 成人午夜免费av| 婷婷久久综合九色综合伊人色| 91丨porny丨户外露出| 午夜精品一区二区三区免费视频 | 亚洲va在线va天堂| 国产亚洲一本大道中文在线| 99热精品一区二区| 蜜桃在线一区二区三区| 一区在线观看视频| 2020国产成人综合网| 欧美三级在线看| 99精品偷自拍| 亚洲一二三四久久| 精品久久久久久无| 欧美一级二级三级蜜桃| 欧美性生活大片视频| 色婷婷综合视频在线观看| 日本vs亚洲vs韩国一区三区二区 | 久久精品av麻豆的观看方式| 一区二区三区电影在线播| 日韩欧美国产一区二区三区 | 欧美天堂亚洲电影院在线播放| 国产成人综合视频| 久久精品国产一区二区三区免费看| 亚洲乱码一区二区三区在线观看| 欧美一区二区女人| 欧美一区二区日韩| 精品少妇一区二区三区在线播放 | 欧美日韩一区二区不卡| 日韩亚洲欧美成人一区| 久久网站最新地址| 一区二区视频在线看| 亚洲丶国产丶欧美一区二区三区| 亚洲一区二区三区三| 男男gaygay亚洲| 成人激情综合网站| 欧美电影在哪看比较好| 国产清纯白嫩初高生在线观看91| 亚洲欧美日韩精品久久久久| 亚洲福利视频三区| 国产一区二区三区观看| 911精品国产一区二区在线| 国产精品私房写真福利视频| 午夜成人免费电影| 色婷婷综合久久久中文一区二区| 日韩精品一区二区三区老鸭窝| 综合欧美一区二区三区| 国产一区二区中文字幕| 67194成人在线观看| 亚洲欧美国产毛片在线| 国产成人自拍网| 日韩女优av电影在线观看| 亚洲免费视频成人| 不卡一区在线观看| 国产精品婷婷午夜在线观看| 国产在线一区二区| 欧美sm美女调教| 毛片不卡一区二区| 欧美一区二区三区播放老司机 | 97久久超碰精品国产| 国产精品三级av在线播放| 国产成人自拍高清视频在线免费播放| 4438成人网| 天天影视色香欲综合网老头| 欧美日韩aaaaaa| 九色综合狠狠综合久久| 欧美xxxxx裸体时装秀| 精彩视频一区二区三区| 国产日韩av一区| 91啪亚洲精品| 丝袜美腿亚洲色图| 精品国产91乱码一区二区三区 | 亚洲激情自拍偷拍| 欧美一级夜夜爽| 成人自拍视频在线观看| 一区二区中文字幕在线| 欧美日韩久久一区二区| 久久国内精品视频| 亚洲日本青草视频在线怡红院 | 亚洲综合免费观看高清完整版在线 | 99视频有精品| 午夜精品久久久久久不卡8050| 欧美一级理论性理论a| 国产91在线看| 美女网站一区二区| 一区二区三区在线播放| 欧美sm极限捆绑bd| 欧美日韩夫妻久久| 成a人片亚洲日本久久| 日本不卡视频一二三区| 亚洲丝袜美腿综合| 国产精品网站导航| 国产午夜精品久久久久久免费视| 麻豆成人综合网| 国产精品高潮久久久久无| 欧美视频在线观看一区| 丁香网亚洲国际| 91亚洲大成网污www| 日本在线不卡视频| 亚洲超碰精品一区二区| 亚洲欧美另类图片小说| 日韩免费观看2025年上映的电影| 欧美视频一区在线| 国产精品123| 亚洲免费观看在线视频| 91久久精品一区二区二区| 亚洲综合男人的天堂| 亚洲欧美日韩系列| 亚洲一级在线观看| 国模冰冰炮一区二区| 欧美亚洲尤物久久| 欧美国产视频在线| 国产一区二区视频在线| 欧美性三三影院| ...xxx性欧美| 国产在线观看免费一区| 99久精品国产| 88在线观看91蜜桃国自产| 日韩精品一区二区三区视频播放| 久久久精品蜜桃| 亚洲综合激情网| 国产一区二区三区免费| 日本高清成人免费播放| 日韩视频在线你懂得| 日韩一区中文字幕| 视频一区视频二区中文字幕| 国产不卡一区视频| 欧美日韩中文字幕一区| 久久亚洲影视婷婷| 日韩成人伦理电影在线观看| 91亚洲大成网污www| 国产欧美一区二区精品仙草咪| 三级影片在线观看欧美日韩一区二区| 懂色av噜噜一区二区三区av| 日韩午夜激情视频| 日本成人中文字幕| 欧美精品第一页|