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

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

?? os_mem.c

?? OS : ucos-2 Target : MSP430
?? C
?? 第 1 頁 / 共 2 頁
字號:
    OS_ENTER_CRITICAL();
    len   = OS_StrCopy(pname, pmem->OSMemName);  /* Copy name from OS_MEM                              */
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_NONE;
    return (len);
}
#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.
*
*              perr      is a pointer to an error code that can contain one of the following values:
*
*                        OS_ERR_NONE                if the name was copied to 'pname'
*                        OS_ERR_MEM_INVALID_PMEM    if you passed a NULL pointer for 'pmem'
*                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
*                        OS_ERR_MEM_NAME_TOO_LONG   if the name doesn't fit in the storage area
*                        OS_ERR_NAME_SET_ISR        if you called this function from an ISR
*
* Returns    : None
*********************************************************************************************************
*/

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



#if OS_ARG_CHK_EN > 0
    if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
        return;
    }
    if (pmem == (OS_MEM *)0) {                   /* Is 'pmem' a NULL pointer?                          */
        *perr = OS_ERR_MEM_INVALID_PMEM;
        return;
    }
    if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
        *perr = OS_ERR_PNAME_NULL;
        return;
    }
#endif
    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
        *perr = OS_ERR_NAME_SET_ISR;
        return;
    }
    OS_ENTER_CRITICAL();
    len = OS_StrLen(pname);                      /* Can we fit the string in the storage area?         */
    if (len > (OS_MEM_NAME_SIZE - 1)) {          /* No                                                 */
        OS_EXIT_CRITICAL();
        *perr = OS_ERR_MEM_NAME_TOO_LONG;
        return;
    }
    (void)OS_StrCopy(pmem->OSMemName, pname);    /* Yes, copy name to the memory partition header      */
    OS_EXIT_CRITICAL();
    *perr = OS_ERR_NONE;
}
#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_ERR_NONE              if the memory block was inserted into the partition
*               OS_ERR_MEM_FULL          if you are returning a memory block to an already FULL memory
*                                        partition (You freed more blocks than you allocated!)
*               OS_ERR_MEM_INVALID_PMEM  if you passed a NULL pointer for 'pmem'
*               OS_ERR_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 = 0;
#endif



#if OS_ARG_CHK_EN > 0
    if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition             */
        return (OS_ERR_MEM_INVALID_PMEM);
    }
    if (pblk == (void *)0) {                     /* Must release a valid block                         */
        return (OS_ERR_MEM_INVALID_PBLK);
    }
#endif
    OS_ENTER_CRITICAL();
    if (pmem->OSMemNFree >= pmem->OSMemNBlks) {  /* Make sure all blocks not already returned          */
        OS_EXIT_CRITICAL();
        return (OS_ERR_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_ERR_NONE);                        /* 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
*
*               p_mem_data  is a pointer to a structure that will contain information about the memory
*                           partition.
*
* Returns     : OS_ERR_NONE               if no errors were found.
*               OS_ERR_MEM_INVALID_PMEM   if you passed a NULL pointer for 'pmem'
*               OS_ERR_MEM_INVALID_PDATA  if you passed a NULL pointer to the data recipient.
*********************************************************************************************************
*/

#if OS_MEM_QUERY_EN > 0
INT8U  OSMemQuery (OS_MEM *pmem, OS_MEM_DATA *p_mem_data)
{
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif



#if OS_ARG_CHK_EN > 0
    if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition             */
        return (OS_ERR_MEM_INVALID_PMEM);
    }
    if (p_mem_data == (OS_MEM_DATA *)0) {        /* Must release a valid storage area for the data     */
        return (OS_ERR_MEM_INVALID_PDATA);
    }
#endif
    OS_ENTER_CRITICAL();
    p_mem_data->OSAddr     = pmem->OSMemAddr;
    p_mem_data->OSFreeList = pmem->OSMemFreeList;
    p_mem_data->OSBlkSize  = pmem->OSMemBlkSize;
    p_mem_data->OSNBlks    = pmem->OSMemNBlks;
    p_mem_data->OSNFree    = pmem->OSMemNFree;
    OS_EXIT_CRITICAL();
    p_mem_data->OSNUsed    = p_mem_data->OSNBlks - p_mem_data->OSNFree;
    return (OS_ERR_NONE);
}
#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
    OS_MemClr((INT8U *)&OSMemTbl[0], sizeof(OSMemTbl));   /* Clear the memory partition table          */
    OSMemFreeList               = (OS_MEM *)&OSMemTbl[0]; /* Point to beginning of free list           */
#if OS_MEM_NAME_SIZE > 1
    OSMemFreeList->OSMemName[0] = '?';                    /* Unknown name                              */
    OSMemFreeList->OSMemName[1] = OS_ASCII_NUL;
#endif
#endif

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


    OS_MemClr((INT8U *)&OSMemTbl[0], sizeof(OSMemTbl));   /* Clear the memory partition table          */
    pmem = &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 > 1
        pmem->OSMemName[0]  = '?';                        /* Unknown name                              */
        pmem->OSMemName[1]  = OS_ASCII_NUL;
#endif
        pmem++;
    }
    pmem->OSMemFreeList = (void *)0;                      /* Initialize last node                      */
#if OS_MEM_NAME_SIZE > 1
    pmem->OSMemName[0]  = '?';                            /* Unknown name                              */
    pmem->OSMemName[1]  = OS_ASCII_NUL;
#endif

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色激情天天射综合网| 一本色道久久综合精品竹菊| 91网站最新地址| 国产精品人成在线观看免费| 国产成人精品在线看| 国产欧美精品一区二区色综合| 国产裸体歌舞团一区二区| 欧美成人aa大片| 国产精品白丝jk白祙喷水网站 | 成人激情黄色小说| 国产精品视频yy9299一区| 丰满放荡岳乱妇91ww| 国产精品久久久久久久久快鸭| 91亚洲精品乱码久久久久久蜜桃| 亚洲激情图片一区| 欧美一区二区成人6969| 国产精品亚洲综合一区在线观看| **网站欧美大片在线观看| 欧美日韩午夜在线视频| 精品亚洲成a人| 亚洲人成网站色在线观看| 7777精品伊人久久久大香线蕉最新版| 久久超碰97人人做人人爱| 国产精品久久久久婷婷二区次| 在线视频中文字幕一区二区| 久久99蜜桃精品| 亚洲视频在线一区| 日韩欧美国产三级电影视频| 国产凹凸在线观看一区二区| 亚洲综合色网站| 精品日本一线二线三线不卡| 91麻豆高清视频| 九九**精品视频免费播放| 最新日韩在线视频| 精品国产一区二区三区四区四| 99久久精品费精品国产一区二区| 偷拍亚洲欧洲综合| 精品国产乱码91久久久久久网站| 一本大道av伊人久久综合| 美国欧美日韩国产在线播放| 17c精品麻豆一区二区免费| 精品国产免费久久| 欧美另类高清zo欧美| 欧美区在线观看| 国产精品中文字幕欧美| 午夜精品国产更新| 椎名由奈av一区二区三区| 精品久久国产字幕高潮| 欧美日韩国产一二三| 91丨九色丨蝌蚪丨老版| 国产精品99久久不卡二区| 奇米一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 国产欧美日韩卡一| 久久精品夜色噜噜亚洲a∨| 7777精品伊人久久久大香线蕉完整版 | 日韩中文欧美在线| 一区二区三区四区乱视频| 国产精品嫩草影院com| 精品国产凹凸成av人导航| 91麻豆精品国产91久久久| 欧美在线色视频| 91色.com| 91亚洲精品久久久蜜桃网站| 成人免费毛片a| 成人久久视频在线观看| 国产大陆精品国产| 国产一区不卡视频| 国产精品一区在线观看你懂的| 久久福利视频一区二区| 日本一区中文字幕| 日韩国产高清在线| 日韩精品一区第一页| 日日夜夜一区二区| 日本成人在线看| 美国av一区二区| 国产在线播放一区| 韩国欧美国产1区| 国产一本一道久久香蕉| 国产成人午夜视频| eeuss国产一区二区三区| 99免费精品视频| 91国偷自产一区二区三区观看 | 国产精品国产三级国产有无不卡 | 久久99精品国产麻豆不卡| 日本vs亚洲vs韩国一区三区二区 | 91丨九色丨国产丨porny| av中文字幕亚洲| 色婷婷亚洲精品| 欧美日韩日本视频| 91精品国产一区二区三区蜜臀 | 日韩av午夜在线观看| 久久精品久久久精品美女| 久久av老司机精品网站导航| 国产精品影视天天线| 99久久精品情趣| 欧美视频在线一区| 日韩精品一区二区三区视频播放| 26uuu久久天堂性欧美| 国产精品麻豆久久久| 亚洲精品第一国产综合野| 亚洲大尺度视频在线观看| 久久成人麻豆午夜电影| 成人三级伦理片| 欧美视频一区二| 日韩精品一区国产麻豆| 国产精品久久久久久久久免费丝袜| 亚洲一区视频在线| 久久国产生活片100| 99久久久国产精品| 91精品国产综合久久久久久漫画 | 一区二区三区色| 免费成人av资源网| 白白色 亚洲乱淫| 欧美精品高清视频| 亚洲国产精品v| 亚洲h精品动漫在线观看| 九色|91porny| 欧美在线影院一区二区| 欧美精品一区二区三区蜜桃视频| 亚洲欧美综合在线精品| 蜜桃精品视频在线| 色天天综合久久久久综合片| 日韩女优av电影| 亚洲第一av色| av电影天堂一区二区在线| 7777女厕盗摄久久久| 中文字幕在线不卡国产视频| 日韩经典一区二区| 色先锋久久av资源部| 久久精品欧美一区二区三区不卡| 亚洲精品乱码久久久久久久久| 国产精品资源网站| 日韩视频不卡中文| 亚洲主播在线播放| 成人福利视频在线看| 欧美精品一区二区久久久 | 日韩电影免费一区| 91福利视频在线| 亚洲欧美综合另类在线卡通| 日本91福利区| 欧美日韩dvd在线观看| 亚洲人成精品久久久久久 | 亚洲线精品一区二区三区| 韩国女主播成人在线| 欧美精品丝袜中出| 亚洲尤物在线视频观看| 9i看片成人免费高清| 久久色视频免费观看| 奇米精品一区二区三区在线观看一| 91女人视频在线观看| 国产精品电影院| 国产福利一区在线| 久久久99精品久久| 国产一区二区主播在线| 日韩欧美色综合网站| 日韩主播视频在线| 欧美日本国产视频| 午夜精品久久久久久久久久久| 色美美综合视频| 一区二区高清在线| 日本韩国一区二区三区视频| 亚洲欧美日韩一区二区| 99久久精品情趣| 亚洲日本在线看| 在线一区二区观看| 午夜视频在线观看一区二区| 色婷婷国产精品综合在线观看| 1区2区3区国产精品| 91国在线观看| 亚洲国产日产av| 欧美高清你懂得| 久久超级碰视频| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品亚洲综合一区在线观看| 久久久久久免费| 粉嫩13p一区二区三区| 国产精品久久午夜| 色网综合在线观看| 五月天激情小说综合| 欧美一区二区精品在线| 极品少妇xxxx精品少妇| 欧美国产禁国产网站cc| 色综合中文字幕国产 | 欧美精品一区二区三区在线播放 | 精品无码三级在线观看视频| 久久久久久久性| 色婷婷久久久久swag精品| 亚洲高清在线视频| 欧美大片日本大片免费观看| 国产成人午夜精品影院观看视频 | 亚洲18色成人| 欧美xxxx在线观看| 成人h动漫精品一区二| 亚洲高清在线精品| 久久久久97国产精华液好用吗| 成人黄动漫网站免费app| 亚洲五码中文字幕| 久久久欧美精品sm网站| 91福利国产精品|