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

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

?? os_mem.c

?? 瑞泰創新的GX-ARM9-2410EP教學實驗系統的所有基礎實驗源代碼,內容齊全,解析清楚,基本上每個實驗結果都有圖片顯示
?? C
?? 第 1 頁 / 共 2 頁
字號:
#endif

/*$PAGE*/
/*
*********************************************************************************************************
*                                 ASSIGN A NAME TO A MEMORY PARTITION
*
* Description: This function assigns a name to a memory partition.
*
* Arguments  : pmem      is a pointer to the memory partition
*
*              pname     is a pointer to an ASCII string that contains the name of the memory partition.
*
*              err       is a pointer to an error code that can contain one of the following values:
*
*                        OS_NO_ERR                  if the name was copied to 'pname'
*                        OS_MEM_INVALID_PMEM        if you passed a NULL pointer for 'pmem'
*                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
*						 OS_MEM_NAME_TOO_LONG       if the name doesn't fit in the storage area
*
* Returns    : None
*********************************************************************************************************
*/

#if OS_MEM_NAME_SIZE > 0
void  OSMemNameSet (OS_MEM *pmem, char *pname, INT8U *err)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif
    INT8U      len;


    OS_ENTER_CRITICAL();
#if OS_ARG_CHK_EN > 0
    if (pmem == (OS_MEM *)0) {                   /* Is 'pmem' a NULL pointer?                          */
        OS_EXIT_CRITICAL();                      /* Yes                                                */
        *err = OS_MEM_INVALID_PMEM;
    }
    if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                         */
        OS_EXIT_CRITICAL();                      /* Yes                                                */
        *err = OS_ERR_PNAME_NULL;
        return;
    }
#endif
    len = strlen(pname);                         /* Can we fit the string in the storage area?         */
    if (len > (OS_EVENT_NAME_SIZE - 1)) {        /* No                                                 */
        OS_EXIT_CRITICAL();
        *err = OS_MEM_NAME_TOO_LONG;
        return;
    } 
    (void)strcpy(pmem->OSMemName, pname);        /* Yes, copy name to the memory partition header      */
    OS_EXIT_CRITICAL();
    *err = OS_NO_ERR;
}
#endif

/*$PAGE*/
/*
*********************************************************************************************************
*                                         RELEASE A MEMORY BLOCK
*
* Description : Returns a memory block to a partition
*
* Arguments   : pmem    is a pointer to the memory partition control block
*
*               pblk    is a pointer to the memory block being released.
*
* Returns     : OS_NO_ERR            if the memory block was inserted into the partition
*               OS_MEM_FULL          if you are returning a memory block to an already FULL memory 
*                                    partition (You freed more blocks than you allocated!)
*               OS_MEM_INVALID_PMEM  if you passed a NULL pointer for 'pmem'
*               OS_MEM_INVALID_PBLK  if you passed a NULL pointer for the block to release.
*********************************************************************************************************
*/

INT8U  OSMemPut (OS_MEM *pmem, void *pblk)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif    
    
    
#if OS_ARG_CHK_EN > 0
    if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition             */
        return (OS_MEM_INVALID_PMEM);
    }
    if (pblk == (void *)0) {                     /* Must release a valid block                         */
        return (OS_MEM_INVALID_PBLK);
    }
#endif
    OS_ENTER_CRITICAL();
    if (pmem->OSMemNFree >= pmem->OSMemNBlks) {  /* Make sure all blocks not already returned          */
        OS_EXIT_CRITICAL();
        return (OS_MEM_FULL);
    }
    *(void **)pblk      = pmem->OSMemFreeList;   /* Insert released block into free block list         */
    pmem->OSMemFreeList = pblk;
    pmem->OSMemNFree++;                          /* One more memory block in this partition            */
    OS_EXIT_CRITICAL();
    return (OS_NO_ERR);                          /* Notify caller that memory block was released       */
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                          QUERY MEMORY PARTITION
*
* Description : This function is used to determine the number of free memory blocks and the number of
*               used memory blocks from a memory partition.
*
* Arguments   : pmem    is a pointer to the memory partition control block
*
*               pdata   is a pointer to a structure that will contain information about the memory
*                       partition.
*
* Returns     : OS_NO_ERR            If no errors were found.
*               OS_MEM_INVALID_PMEM  if you passed a NULL pointer for 'pmem'
*               OS_MEM_INVALID_PDATA if you passed a NULL pointer for the block to release.
*********************************************************************************************************
*/

#if OS_MEM_QUERY_EN > 0
INT8U  OSMemQuery (OS_MEM *pmem, OS_MEM_DATA *pdata)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr;
#endif    
    
    
#if OS_ARG_CHK_EN > 0
    if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition             */
        return (OS_MEM_INVALID_PMEM);
    }
    if (pdata == (OS_MEM_DATA *)0) {             /* Must release a valid storage area for the data     */
        return (OS_MEM_INVALID_PDATA);
    }
#endif
    OS_ENTER_CRITICAL();
    pdata->OSAddr     = pmem->OSMemAddr;
    pdata->OSFreeList = pmem->OSMemFreeList;
    pdata->OSBlkSize  = pmem->OSMemBlkSize;
    pdata->OSNBlks    = pmem->OSMemNBlks;
    pdata->OSNFree    = pmem->OSMemNFree;
    OS_EXIT_CRITICAL();
    pdata->OSNUsed    = pdata->OSNBlks - pdata->OSNFree;
    return (OS_NO_ERR);
}
#endif                                           /* OS_MEM_QUERY_EN                                    */
/*$PAGE*/
/*
*********************************************************************************************************
*                                    INITIALIZE MEMORY PARTITION MANAGER
*
* Description : This function is called by uC/OS-II to initialize the memory partition manager.  Your
*               application MUST NOT call this function.
*
* Arguments   : none
*
* Returns     : none
*
* Note(s)    : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/

void  OS_MemInit (void)
{
#if OS_MAX_MEM_PART == 1
    OSMemFreeList = (OS_MEM *)&OSMemTbl[0];           /* Point to beginning of free list               */
    (void)memset(&OSMemTbl[0], 0, sizeof(OSMemTbl));  /* Clear the memory partition table              */
#endif

#if OS_MAX_MEM_PART >= 2
    OS_MEM  *pmem;
    INT16U   i;


    (void)memset(&OSMemTbl[0], 0, sizeof(OSMemTbl));  /* Clear the memory partition table              */
    pmem = (OS_MEM *)&OSMemTbl[0];                    /* Point to memory control block (MCB)           */
    for (i = 0; i < (OS_MAX_MEM_PART - 1); i++) {     /* Init. list of free memory partitions          */
        pmem->OSMemFreeList = (void *)&OSMemTbl[i+1]; /* Chain list of free partitions                 */
#if OS_MEM_NAME_SIZE > 0
        (void)strcpy(pmem->OSMemName, "?");           /* Unknown name                                  */
#endif
        pmem++;
    }
    pmem->OSMemFreeList = (void *)0;                  /* Initialize last node                          */
#if OS_MEM_NAME_SIZE > 0
    (void)strcpy(pmem->OSMemName, "?");               /* Unknown name                                  */
#endif

    OSMemFreeList       = (OS_MEM *)&OSMemTbl[0];     /* Point to beginning of free list               */
#endif
}
#endif                                                /* OS_MEM_EN                                     */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品一区二区夜色| 26uuu国产电影一区二区| 欧美电视剧免费观看| 免费成人美女在线观看| 精品999久久久| 99久久伊人久久99| 久久久久久久久伊人| 99精品国产热久久91蜜凸| 国产盗摄女厕一区二区三区| 成人欧美一区二区三区| 色吧成人激情小说| 久久成人免费网| 亚洲精品精品亚洲| 2021中文字幕一区亚洲| 国产亚洲欧美日韩日本| 欧美日韩一级片在线观看| 国产又粗又猛又爽又黄91精品| 毛片不卡一区二区| 国产精品电影一区二区三区| 4438成人网| 99国产欧美久久久精品| 色久综合一二码| 制服丝袜亚洲网站| 国产欧美日韩不卡| 精品久久久久久久久久久久久久久| 色系网站成人免费| 成人福利在线看| 国产一区二区在线免费观看| 国产成人精品一区二区三区四区 | 亚洲三级电影全部在线观看高清| 欧美精品 日韩| 91福利精品视频| 777久久久精品| 国产精品亲子伦对白| 欧美成人bangbros| 亚洲人成亚洲人成在线观看图片 | 国产一区二区美女| 91玉足脚交白嫩脚丫在线播放| 国产精品综合久久| 美国精品在线观看| 99久久久精品免费观看国产蜜| 欧美日韩的一区二区| 色8久久人人97超碰香蕉987| 日韩欧美一级精品久久| 国产精品国产三级国产专播品爱网| 亚洲成人高清在线| 午夜一区二区三区在线观看| 中文字幕第一区二区| 久久久久久久久97黄色工厂| 一区二区三区在线观看动漫| 一二三四区精品视频| 国产一区二区三区综合| 欧美三级日本三级少妇99| 国产欧美精品一区| 激情综合五月婷婷| 成人毛片在线观看| 91网站黄www| 国产日韩精品一区| 九九国产精品视频| 日韩亚洲欧美在线观看| 精品国产乱码久久久久久1区2区| 亚洲乱码中文字幕综合| 国产精品资源网| 日韩精品一区二区三区中文不卡| 午夜欧美在线一二页| 日本电影亚洲天堂一区| 亚洲青青青在线视频| 97se狠狠狠综合亚洲狠狠| 国产欧美一区二区精品忘忧草| 久久狠狠亚洲综合| 精品奇米国产一区二区三区| 日韩和的一区二区| 视频在线在亚洲| 欧美日韩一区不卡| 亚洲成a人片在线观看中文| 欧美亚洲精品一区| 久久久久99精品一区| 国产一区二区三区免费播放 | 国产欧美一区二区三区在线看蜜臀| 免费av成人在线| 欧美一区二区美女| 中文字幕亚洲一区二区av在线 | 亚洲欧洲综合另类| 一本色道久久加勒比精品| 亚洲美女免费在线| 欧美久久一区二区| 久久精品国产亚洲aⅴ| 久久综合久久综合亚洲| 成人午夜视频在线| 亚洲精品国久久99热| 欧美日韩美少妇| 久草这里只有精品视频| 国产片一区二区| 一本久道中文字幕精品亚洲嫩| 亚洲午夜在线视频| caoporm超碰国产精品| 亚洲精品第1页| 欧美一级高清片在线观看| 国产伦精品一区二区三区免费迷| 国产欧美精品日韩区二区麻豆天美| 91在线视频免费观看| 亚洲国产精品久久久久婷婷884| 91精品久久久久久久99蜜桃| 国产美女精品人人做人人爽| 国产精品久久99| 5566中文字幕一区二区电影 | 不卡一区在线观看| 午夜在线成人av| 国产午夜精品美女毛片视频| 色狠狠av一区二区三区| 日本美女一区二区三区| 国产精品大尺度| 欧美一级久久久久久久大片| 成年人网站91| 狠狠色丁香久久婷婷综合_中| 亚洲手机成人高清视频| 日韩欧美国产一区在线观看| 99热这里都是精品| 国产一区二区三区香蕉| 亚洲国产日韩a在线播放性色| 国产人成一区二区三区影院| 精品视频免费看| 99热国产精品| 国产精品一二一区| 日本午夜精品视频在线观看| 亚洲图片你懂的| 中文字幕不卡一区| 欧美mv日韩mv国产网站app| 在线中文字幕一区二区| 国产成人免费av在线| 久久精品国产久精国产| 亚洲成人av福利| 一区二区三区鲁丝不卡| 中文字幕一区二区三区不卡| 精品99一区二区| 欧美xxxx老人做受| 欧美一区二区在线看| 在线观看区一区二| 日韩综合在线视频| 亚洲自拍与偷拍| 日韩一级片在线观看| 欧美性一二三区| 色视频欧美一区二区三区| 懂色中文一区二区在线播放| 一区2区3区在线看| 亚洲视频一区在线| 亚洲欧洲另类国产综合| 亚洲国产成人在线| 欧美国产欧美亚州国产日韩mv天天看完整| 4438x亚洲最大成人网| 正在播放一区二区| 日韩欧美三级在线| 欧美成人精品福利| 久久综合久久鬼色| 国产欧美一二三区| 国产精品白丝在线| 亚洲欧美偷拍三级| 亚洲动漫第一页| 午夜精品aaa| 久久不见久久见免费视频1| 麻豆成人综合网| 国产xxx精品视频大全| 成人精品gif动图一区| 91亚洲精华国产精华精华液| 色综合天天做天天爱| 美女一区二区在线观看| 国产综合色产在线精品| 国产成人av福利| 不卡一卡二卡三乱码免费网站| 成人小视频免费观看| 91小视频在线免费看| 欧美日韩三级在线| 日韩精品专区在线影院观看 | 99精品视频在线播放观看| 色婷婷一区二区三区四区| 欧美性三三影院| 精品剧情在线观看| 国产精品理论片| 亚洲电影你懂得| 激情综合色播五月| 99久久免费国产| 日韩欧美电影在线| 中文字幕字幕中文在线中不卡视频| 一级女性全黄久久生活片免费| 蜜桃av噜噜一区| 99久久99久久综合| 日韩区在线观看| 亚洲啪啪综合av一区二区三区| 首页国产丝袜综合| www.一区二区| 欧美不卡一区二区三区四区| 国产精品成人免费精品自在线观看 | 国产精品一区二区视频| 99精品视频在线免费观看| 日韩一区二区免费在线观看| 亚洲国产高清aⅴ视频| 美腿丝袜亚洲三区| 91麻豆福利精品推荐| 久久夜色精品一区| 日产精品久久久久久久性色|