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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? guitask.c

?? Keil C下通過的UCGUI,UCGUI的移植源代碼
?? C
字號:
/*
*********************************************************************************************************
*                                                uC/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : GUITASK.C
Purpose     : Saves/Restores task context with supported OSs.
              It also uses a resource semaphore.

  The following externals are used and should typically be defined
  in GUI_X.c:
  
    U32  GUI_X_GetTaskId();
    void GUI_X_Unlock();
    void GUI_X_Lock();

----------------------------------------------------------------------
Version-Date---Author-Explanation
----------------------------------------------------------------------
3.02a   020722 RS     Use of macro GUI_DEBUG_ERROROUT_IF in order
                      to simplify th code.
3.02    020514 RS     Avoided nested calls of GUI_X_Lock, GUI_X_Unlock
                      (because some RTOSes, such as CMX and u/C-OS
                      could not handle this easily)
3.00    010425 RS     Cleanup for emWin Version 3.00
                      a) Dummy routines added to avoid link errors
                        in case some emWin modules are compiled with
                        different settings
1.00.01 990926 RS     Fix in order to make sure init task has no
                      context of its own (_CurrentTaskNo =-1)
1.00.00 990918 RS     Initial version for version control purposes.
                      This is a generic version which can be used with
                      both emWin b/w and emWin GSC; it is based on the
                      Context saver of emWin b/w.
---------------------------END-OF-HEADER------------------------------
*/

#include <stddef.h>           /* needed for definition of NULL */
#include "gui\Core\GUI_Protected.h"
#include "gui\Core\GUIDEBUG.h"

/*********************************************************************
*
*       Configuration defaults
*
*********************************************************************
*/

#ifndef GUI_MAXTASK
  #define GUI_MAXTASK (4)
#endif

#if GUI_OS

/*********************************************************************
*
*       Static data
*
*********************************************************************
*/

static struct {
  U32  TaskID;
  GUI_CONTEXT Context;
} _Save[GUI_MAXTASK];

static int _CurrentTaskNo = -1;
static int _EntranceCnt   =  0;
static U32 _TaskIDLock = 0;

/*********************************************************************
*
*       Static functions
*
*********************************************************************
*/

static int _GetTaskNo(void) {
  int i;
  for (i=0; i< GUI_MAXTASK; i++) {
    U32 TaskId = GUI_X_GetTaskId();
    if (_Save[i].TaskID == TaskId)
      return i;
    if (_Save[i].TaskID == 0) {
      _Save[i].TaskID = TaskId;
      return i;
    }
  }
  GUI_DEBUG_ERROROUT("No Context available for task ... (increase GUI_MAXTASK)");
  return 0;
}

/*********************************************************************
*
*       Public functions
*
*********************************************************************
*/

void GUI_Unlock(void) {
  if (--_EntranceCnt == 0) {
    GUI_X_Unlock();
  }
  /* Test if _EntranceCnt is in reasonable range ... Not required in release builds */
  GUI_DEBUG_ERROROUT_IF((_EntranceCnt < 0), "GUITASK.c: GUI_Unlock() _EntranceCnt underflow ");
}

void GUI_Lock(void) {
  if (_EntranceCnt == 0) {
    GUI_X_Lock();
    _TaskIDLock = GUI_X_GetTaskId();         /* Save task ID */
  } else {
    if (_TaskIDLock != GUI_X_GetTaskId()) {
      GUI_X_Lock();
      _TaskIDLock = GUI_X_GetTaskId();         /* Save task ID */
    }
  }
  if (++_EntranceCnt == 1) {
    int TaskNo = _GetTaskNo();
    if (TaskNo != _CurrentTaskNo) {
      /* Save data of current task */
      if (_CurrentTaskNo>=0) {  /* Make sure _CurrentTaskNo is valid */
        _Save[_CurrentTaskNo].Context = GUI_Context;
      }
      /* Load data of this task */
      GUI_Context = _Save[TaskNo].Context;
      _CurrentTaskNo = TaskNo;
    }
  }
  /* Test if _EntranceCnt is in reasonable range ... Not required in release builds */
  GUI_DEBUG_ERROROUT_IF((_EntranceCnt>12), "GUITASK.c: GUI_Lock() _EntranceCnt overflow ");
}

void GUITASK_Init(void) {
  int i;
  _CurrentTaskNo =-1;   /* Invalidate */
  GUI_X_InitOS();
  for (i=0; i<GUI_MAXTASK; i++) {
    _Save[i].Context = GUI_Context;
  }
}

#else

/*********************************************************************
*
*       Dummy Kernel routines

The routines below are dummies in case configuration tells us not
to use any kernel. In this case the routines below should
not be required, but it can not hurt to have them. The linker
will eliminate them anyhow.

*/

void GUI_Unlock(void) {}
void GUI_Lock(void) {}
void GUITASK_Init(void) {}
void GUITASK_StoreDefaultContext(void) {}

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产3级a| 欧美一区二区久久| 日本伊人精品一区二区三区观看方式| 欧美va在线播放| 色婷婷av一区二区三区大白胸| 青青国产91久久久久久| 国产精品乱人伦中文| 欧美xxxxxxxxx| 欧美日韩国产大片| 91麻豆精东视频| 欧美日韩高清在线播放| 欧美日韩国产高清一区二区| 日韩av成人高清| 欧美一区二区成人| 精品视频1区2区| 91老师片黄在线观看| 国产成人午夜视频| 国产伦精品一区二区三区免费迷| 午夜国产精品一区| 亚洲综合在线免费观看| 1024精品合集| 一区二区三区欧美久久| 1024国产精品| 亚洲狠狠丁香婷婷综合久久久| 亚洲国产精品黑人久久久| 日韩一二三四区| 日韩美女主播在线视频一区二区三区| 欧美日韩日日摸| 欧美日韩高清在线播放| 欧美高清www午色夜在线视频| 欧美视频一区二区| 日韩欧美在线不卡| 国产亚洲一区二区在线观看| 国产欧美日韩视频在线观看| 欧美激情一区二区三区全黄| 亚洲欧美日韩在线| 亚洲一区二区高清| 日本不卡中文字幕| 狠狠色综合播放一区二区| 成人网男人的天堂| 91美女片黄在线观看91美女| 欧美精品亚洲二区| wwwwxxxxx欧美| 亚洲三级视频在线观看| 日韩av一区二| 色综合久久久久综合| 欧美精品色一区二区三区| 久久久精品国产免费观看同学| 国产精品美女久久久久久久| 日韩精品电影在线| av亚洲精华国产精华精华| 欧美日韩免费高清一区色橹橹| 欧美精品一区二区在线观看| 伊人色综合久久天天人手人婷| 免费高清在线一区| 欧美午夜宅男影院| 欧美国产日韩一二三区| 婷婷中文字幕综合| 99精品热视频| 中文字幕精品一区二区精品绿巨人 | 韩国女主播一区| 欧美一级日韩不卡播放免费| 中文字幕一区二区三| 蜜桃视频在线一区| 欧美一区二区三区日韩| 亚洲日本成人在线观看| 国产成人av电影在线观看| 日韩午夜电影在线观看| 日韩高清一区在线| 欧美视频日韩视频在线观看| 亚洲欧美另类综合偷拍| 北条麻妃国产九九精品视频| 久久精品网站免费观看| 久久精品国产99| 91精品国产欧美一区二区成人| 亚洲国产精品久久久久秋霞影院| 91在线看国产| 亚洲韩国精品一区| 欧美另类高清zo欧美| 麻豆成人综合网| xfplay精品久久| 福利电影一区二区| 国产精品动漫网站| 色婷婷久久99综合精品jk白丝| 国产精品久久久久9999吃药| 91色九色蝌蚪| 男人的天堂亚洲一区| 久久久国产精品不卡| 成人ar影院免费观看视频| 曰韩精品一区二区| 欧美mv日韩mv亚洲| 成人午夜激情影院| 一区二区在线观看免费视频播放| 精品污污网站免费看| 精品一区二区免费视频| 一区二区中文视频| 91精品久久久久久蜜臀| 国产成人自拍网| 亚洲二区在线视频| 欧美成人a∨高清免费观看| 成人aaaa免费全部观看| 日韩电影在线一区二区三区| 国产精品水嫩水嫩| 宅男在线国产精品| 91丨porny丨最新| 国产在线看一区| 日韩精品一区第一页| 国产精品久久一级| 久久久久国产精品麻豆| 91成人免费网站| 国产成人精品一区二区三区四区 | 成人免费视频在线观看| 日韩欧美色综合网站| 欧美中文字幕一区| 成人午夜看片网址| 欧美影片第一页| 成人激情开心网| 国产精品一区二区无线| 麻豆国产精品官网| 亚洲伦在线观看| 国产精品电影一区二区| 国产精品久久午夜| 国产精品久久久久久久第一福利| 国产网站一区二区| 久久综合色综合88| 久久久久青草大香线综合精品| 91精品国产综合久久小美女| 欧美精品 国产精品| 欧美日韩国产影片| 欧美日韩一区二区三区在线看| 色就色 综合激情| 欧美久久免费观看| 精品国一区二区三区| 久久久精品天堂| 国产精品精品国产色婷婷| 自拍偷拍国产亚洲| 91首页免费视频| 国产盗摄一区二区三区| 夜夜嗨av一区二区三区四季av| 欧美精品一区二区三区高清aⅴ| 日韩视频中午一区| 久久久午夜精品理论片中文字幕| 国产制服丝袜一区| 国产美女娇喘av呻吟久久| 欧美四级电影网| 亚洲丝袜另类动漫二区| 国产一区二区三区日韩| 欧美日韩国产另类不卡| 中文字幕一区在线观看| 国产一区二区免费视频| 欧美一区二区免费观在线| 亚洲国产综合91精品麻豆| 91久久奴性调教| 国产精品不卡在线观看| 成人99免费视频| 国产精品久久午夜| 99这里只有精品| 一区二区久久久久久| 美女精品一区二区| 久久天天做天天爱综合色| 一区二区久久久久久| 美腿丝袜亚洲三区| 欧美日韩国产区一| 天天操天天色综合| 日韩免费福利电影在线观看| 久久精品99国产精品| 日韩一区二区免费高清| 精品一区二区三区在线视频| 久久品道一品道久久精品| 福利一区二区在线| 亚洲永久精品大片| 7777精品伊人久久久大香线蕉超级流畅 | 日本一区二区三级电影在线观看| 国产一二三精品| 国产精品久久一级| 91精品啪在线观看国产60岁| 成人精品鲁一区一区二区| 中文字幕在线观看不卡视频| 在线免费精品视频| 日本不卡不码高清免费观看| 欧美国产丝袜视频| 3atv一区二区三区| 不卡一区二区中文字幕| 婷婷丁香激情综合| 国产日本一区二区| 欧美日韩三级在线| 成人一级片在线观看| 偷拍一区二区三区| 中文字幕欧美国产| 欧美一区二区三区喷汁尤物| jlzzjlzz国产精品久久| 亚洲国产精品久久一线不卡| 国产精品美女久久久久久久久久久 | 色狠狠一区二区三区香蕉| 国产99精品视频| 裸体健美xxxx欧美裸体表演| 亚洲一区视频在线观看视频| 国产精品久久久久久久久图文区| 欧美一区二区三区人| 欧美日韩www|