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

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

?? os_mem.src

?? uCOS-II_2.52在51上的移植程序
?? SRC
字號:
; .\OS_MEM.SRC generated from: OS_MEM.C
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE OS_MEM.C LARGE BROWSE ORDER NOAREGS DEBUG OBJECTEXTEND SRC(.\OS_MEM.SRC)

$NOMOD51

NAME	OS_MEM

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
PSW	DATA	0D0H
ACC	DATA	0E0H
B	DATA	0F0H
SP	DATA	081H
DPL	DATA	082H
DPH	DATA	083H
PCON	DATA	087H
TCON	DATA	088H
TMOD	DATA	089H
TL0	DATA	08AH
TL1	DATA	08BH
TH0	DATA	08CH
TH1	DATA	08DH
IE	DATA	0A8H
IP	DATA	0B8H
SCON	DATA	098H
SBUF	DATA	099H
CY	BIT	0D0H.7
AC	BIT	0D0H.6
F0	BIT	0D0H.5
RS1	BIT	0D0H.4
RS0	BIT	0D0H.3
OV	BIT	0D0H.2
P	BIT	0D0H.0
TF1	BIT	088H.7
TR1	BIT	088H.6
TF0	BIT	088H.5
TR0	BIT	088H.4
IE1	BIT	088H.3
IT1	BIT	088H.2
IE0	BIT	088H.1
IT0	BIT	088H.0
EA	BIT	0A8H.7
ES	BIT	0A8H.4
ET1	BIT	0A8H.3
EX1	BIT	0A8H.2
ET0	BIT	0A8H.1
EX0	BIT	0A8H.0
PS	BIT	0B8H.4
PT1	BIT	0B8H.3
PX1	BIT	0B8H.2
PT0	BIT	0B8H.1
PX0	BIT	0B8H.0
RD	BIT	0B0H.7
WR	BIT	0B0H.6
T1	BIT	0B0H.5
T0	BIT	0B0H.4
INT1	BIT	0B0H.3
INT0	BIT	0B0H.2
TXD	BIT	0B0H.1
RXD	BIT	0B0H.0
SM0	BIT	098H.7
SM1	BIT	098H.6
SM2	BIT	098H.5
REN	BIT	098H.4
TB8	BIT	098H.3
RB8	BIT	098H.2
TI	BIT	098H.1
RI	BIT	098H.0
; /*
; *********************************************************************************************************
; *                                                uC/OS-II
; *                                          The Real-Time Kernel
; *                                            MEMORY MANAGEMENT
; *
; *                          (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
; *                                           All Rights Reserved
; *
; * File : OS_MEM.C
; * By   : Jean J. Labrosse
; *********************************************************************************************************
; */
; 
; #ifndef  OS_MASTER_FILE
; #include "includes.h"
; #endif
; 
; #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
; /*
; *********************************************************************************************************
; *                                        CREATE A MEMORY PARTITION
; *
; * Description : Create a fixed-sized memory partition that will be managed by uC/OS-II.
; *
; * Arguments   : addr     is the starting address of the memory partition
; *
; *               nblks    is the number of memory blocks to create from the partition.
; *
; *               blksize  is the size (in bytes) of each block in the memory partition.
; *
; *               err      is a pointer to a variable containing an error message which will be set by
; *                        this function to either:
; *
; *                        OS_NO_ERR            if the memory partition has been created correctly.
; *                        OS_MEM_INVALID_ADDR  you are specifying an invalid address for the memory 
; *                                             storage of the partition.
; *                        OS_MEM_INVALID_PART  no free partitions available
; *                        OS_MEM_INVALID_BLKS  user specified an invalid number of blocks (must be >= 2)
; *                        OS_MEM_INVALID_SIZE  user specified an invalid block size
; *                                             (must be greater than the size of a pointer)
; * Returns    : != (OS_MEM *)0  is the partition was created
; *              == (OS_MEM *)0  if the partition was not created because of invalid arguments or, no
; *                              free partition is available.
; *********************************************************************************************************
; */
; 
; OS_MEM  *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err)
; {
;    
;     OS_MEM    *pmem;
;     INT8U     *pblk;
;     void     **plink;
;     INT32U     i;
; 
; 
; #if OS_ARG_CHK_EN > 0
;     if (addr == (void *)0) {                          /* Must pass a valid address for the memory part. */
;         *err = OS_MEM_INVALID_ADDR;
;         return ((OS_MEM *)0);
;     }
;     if (nblks < 2) {                                  /* Must have at least 2 blocks per partition      */
;         *err = OS_MEM_INVALID_BLKS;
;         return ((OS_MEM *)0);
;     }
;     if (blksize < sizeof(void *)) {                   /* Must contain space for at least a pointer      */
;         *err = OS_MEM_INVALID_SIZE;
;         return ((OS_MEM *)0);
;     }
; #endif
;     OS_ENTER_CRITICAL();
;     pmem = OSMemFreeList;                             /* Get next free memory partition                */
;     if (OSMemFreeList != (OS_MEM *)0) {               /* See if pool of free partitions was empty      */
;         OSMemFreeList = (OS_MEM *)OSMemFreeList->OSMemFreeList;
;     }
;     OS_EXIT_CRITICAL();
;     if (pmem == (OS_MEM *)0) {                        /* See if we have a memory partition             */
;         *err = OS_MEM_INVALID_PART;
;         return ((OS_MEM *)0);
;     }
;     plink = (void **)addr;                            /* Create linked list of free memory blocks      */
;     pblk  = (INT8U *)addr + blksize;
;     for (i = 0; i < (nblks - 1); i++) {
;         *plink = (void *)pblk;
;         plink  = (void **)pblk;
;         pblk   = pblk + blksize;
;     }
;     *plink              = (void *)0;                  /* Last memory block points to NULL              */
;     pmem->OSMemAddr     = addr;                       /* Store start address of memory partition       */
;     pmem->OSMemFreeList = addr;                       /* Initialize pointer to pool of free blocks     */
;     pmem->OSMemNFree    = nblks;                      /* Store number of free blocks in MCB            */
;     pmem->OSMemNBlks    = nblks;
;     pmem->OSMemBlkSize  = blksize;                    /* Store block size of each memory blocks        */
;     *err                = OS_NO_ERR;
;     return (pmem);
; }
; /*$PAGE*/
; /*
; *********************************************************************************************************
; *                                          GET A MEMORY BLOCK
; *
; * Description : Get a memory block from a partition
; *
; * Arguments   : pmem    is a pointer to the memory partition control block
; *
; *               err     is a pointer to a variable containing an error message which will be set by this
; *                       function to either:
; *
; *                       OS_NO_ERR           if the memory partition has been created correctly.
; *                       OS_MEM_NO_FREE_BLKS if there are no more free memory blocks to allocate to caller
; *                       OS_MEM_INVALID_PMEM if you passed a NULL pointer for 'pmem'
; *
; * Returns     : A pointer to a memory block if no error is detected
; *               A pointer to NULL if an error is detected
; *********************************************************************************************************
; */
; 
; void  *OSMemGet (OS_MEM *pmem, INT8U *err)
; {
;   
;     void      *pblk;
; 
; 
; #if OS_ARG_CHK_EN > 0
;     if (pmem == (OS_MEM *)0) {                        /* Must point to a valid memory partition         */
;         *err = OS_MEM_INVALID_PMEM;
;         return ((OS_MEM *)0);
;     }
; #endif
;     OS_ENTER_CRITICAL();
;     if (pmem->OSMemNFree > 0) {                       /* See if there are any free memory blocks       */
;         pblk                = pmem->OSMemFreeList;    /* Yes, point to next free memory block          */
;         pmem->OSMemFreeList = *(void **)pblk;         /*      Adjust pointer to new free list          */
;         pmem->OSMemNFree--;                           /*      One less memory block in this partition  */
;         OS_EXIT_CRITICAL();
;         *err = OS_NO_ERR;                             /*      No error                                 */
;         return (pblk);                                /*      Return memory block to caller            */
;     }
;     OS_EXIT_CRITICAL();
;     *err = OS_MEM_NO_FREE_BLKS;                       /* No,  Notify caller of empty memory partition  */
;     return ((void *)0);                               /*      Return NULL pointer to caller            */
; }
; /*$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_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 *ppdata)
; {
; 
;     
;     
; #if OS_ARG_CHK_EN > 0
;     if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition             */
;         return (OS_MEM_INVALID_PMEM);
;     }
;     if (ppdata == (OS_MEM_DATA *)0) {             /* Must release a valid storage area for the data     */
;         return (OS_MEM_INVALID_PDATA);
;     }
; #endif
;     OS_ENTER_CRITICAL();
;     ppdata->OSAddr     = pmem->OSMemAddr;
;     ppdata->OSFreeList = pmem->OSMemFreeList;
;     ppdata->OSBlkSize  = pmem->OSMemBlkSize;
;     ppdata->OSNBlks    = pmem->OSMemNBlks;
;     ppdata->OSNFree    = pmem->OSMemNFree;
;     OS_EXIT_CRITICAL();
;     ppdata->OSNUsed    = ppdata->OSNBlks - ppdata->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          */
;     OSMemFreeList->OSMemFreeList = (void *)0;              /* Initialize last node                     */
;     OSMemFreeList->OSMemAddr     = (void *)0;              /* Store start address of memory partition  */
;     OSMemFreeList->OSMemNFree    = 0;                      /* No free blocks                           */
;     OSMemFreeList->OSMemNBlks    = 0;                      /* No blocks                                */
;     OSMemFreeList->OSMemBlkSize  = 0;                      /* Zero size                                */
; #endif
; 
; #if OS_MAX_MEM_PART >= 2
;     OS_MEM  *pmem;
;     INT16U   i;
; 
; 
;     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                 */
;         pmem->OSMemAddr     = (void *)0;              /* Store start address of memory partition       */
;         pmem->OSMemNFree    = 0;                      /* No free blocks                                */
;         pmem->OSMemNBlks    = 0;                      /* No blocks                                     */
;         pmem->OSMemBlkSize  = 0;                      /* Zero size                                     */
;         pmem++;
;     }
;     pmem->OSMemFreeList = (void *)0;                  /* Initialize last node                          */
;     pmem->OSMemAddr     = (void *)0;                  /* Store start address of memory partition       */
;     pmem->OSMemNFree    = 0;                          /* No free blocks                                */
;     pmem->OSMemNBlks    = 0;                          /* No blocks                                     */
;     pmem->OSMemBlkSize  = 0;                          /* Zero size                                     */
; 
;     OSMemFreeList       = (OS_MEM *)&OSMemTbl[0];     /* Point to beginning of free list               */
; #endif
; }
; #endif                                           /* OS_MEM_EN                                          */
; *** sync lost ***
; *** sync lost ***
; *** sync lost ***
	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区0| 欧美极品aⅴ影院| 国产精品午夜免费| 亚洲国产成人av网| 99在线精品观看| 精品三级av在线| 日产精品久久久久久久性色| 99久久99精品久久久久久| 精品国产乱码久久久久久图片| 亚洲高清免费一级二级三级| 99精品1区2区| 中文字幕va一区二区三区| 久久精品国产成人一区二区三区| 欧美亚洲另类激情小说| 亚洲视频一区二区在线| 国产成人综合在线观看| 久久夜色精品一区| 蜜臀av一区二区| 538prom精品视频线放| 亚洲一二三专区| 色天天综合色天天久久| 亚洲视频你懂的| 99re视频精品| 亚洲欧美aⅴ...| 99国产精品久久久| 亚洲欧美激情插| 色狠狠桃花综合| 亚洲美女屁股眼交| 91激情在线视频| 亚洲一区二区三区四区不卡| 在线视频你懂得一区| 亚洲在线免费播放| 欧美视频日韩视频在线观看| 亚洲一二三区不卡| 欧美区在线观看| 日韩av网站免费在线| 欧美一级免费大片| 激情文学综合丁香| 亚洲国产精品高清| 99精品视频一区| 亚洲综合免费观看高清完整版在线| 91视频观看免费| 亚洲国产日韩在线一区模特| 欧美二区在线观看| 麻豆91免费观看| 久久久精品欧美丰满| av不卡免费在线观看| 亚洲精品乱码久久久久久久久| 欧美亚洲国产怡红院影院| 亚洲成人你懂的| 精品精品欲导航| 成人高清视频在线| 亚洲最大成人综合| 日韩欧美一级特黄在线播放| 国产激情一区二区三区| 亚洲人成伊人成综合网小说| 欧美精品丝袜中出| 国产精品一二三四| 亚洲已满18点击进入久久| 日韩欧美高清一区| av电影在线观看完整版一区二区| 亚洲国产日韩在线一区模特| 日韩精品一区二区三区swag| av在线综合网| 日韩电影一二三区| 中文字幕制服丝袜成人av| 欧美妇女性影城| 成人动漫一区二区在线| 日韩成人免费看| 国产精品传媒视频| 欧美成人福利视频| 一本色道亚洲精品aⅴ| 精品一区二区在线视频| 亚洲精品中文在线| 国产亚洲综合av| 7777精品伊人久久久大香线蕉完整版 | 成人动漫一区二区三区| 亚洲成a人片在线观看中文| 国产肉丝袜一区二区| 69成人精品免费视频| 99久久婷婷国产综合精品电影| 欧美aⅴ一区二区三区视频| 亚洲欧美日韩精品久久久久| 精品欧美一区二区在线观看| 欧美色大人视频| 91丨九色丨国产丨porny| 国产一区二区调教| 日韩 欧美一区二区三区| 一级特黄大欧美久久久| 国产农村妇女毛片精品久久麻豆| 欧美一区二区视频在线观看2020| 色综合视频在线观看| 成人国产精品免费观看动漫| 国内精品免费在线观看| 青椒成人免费视频| 亚洲国产精品久久久男人的天堂 | 日韩精品中午字幕| 欧美无砖专区一中文字| 99视频精品全部免费在线| 国产乱子轮精品视频| 美女视频网站黄色亚洲| 日韩精品久久久久久| 午夜精品久久久久久久| 洋洋成人永久网站入口| 亚洲与欧洲av电影| 一区二区三区四区不卡视频| 亚洲欧洲av在线| 自拍偷拍亚洲综合| 综合av第一页| 亚洲免费电影在线| 亚洲色图视频免费播放| 成人欧美一区二区三区黑人麻豆| 欧美国产日韩a欧美在线观看| 久久久久国产精品麻豆| 久久久91精品国产一区二区精品 | 欧美国产一区视频在线观看| 久久久久久9999| 久久精品欧美一区二区三区不卡 | 国内成人免费视频| 国产麻豆精品视频| 国产精品亚洲专一区二区三区 | 久久精品无码一区二区三区| 精品国产三级电影在线观看| 久久久国产精品午夜一区ai换脸| 欧美精品一区二区久久婷婷 | 日韩天堂在线观看| 亚洲精品一区二区三区精华液| 久久久久青草大香线综合精品| 国产女人aaa级久久久级| 国产精品入口麻豆九色| 亚洲精品精品亚洲| 天堂va蜜桃一区二区三区漫画版| 蜜臀久久99精品久久久画质超高清| 精品一区二区三区免费播放| 国产成人亚洲综合色影视| 99精品热视频| 欧美精品乱人伦久久久久久| 久久综合九色综合久久久精品综合| 国产欧美精品一区二区色综合| 国产精品日日摸夜夜摸av| 亚洲一区中文在线| 狠狠色狠狠色综合| 91啦中文在线观看| 91精品一区二区三区久久久久久| www国产亚洲精品久久麻豆| 国产精品入口麻豆九色| 水蜜桃久久夜色精品一区的特点| 国产精品自在在线| 91成人免费在线| 久久亚洲欧美国产精品乐播| 亚洲品质自拍视频| 久久精品国产网站| 色8久久精品久久久久久蜜 | 麻豆成人久久精品二区三区小说| 懂色av一区二区三区免费观看| 欧美性高清videossexo| 久久久久久久av麻豆果冻| 亚洲一区二区高清| 粉嫩一区二区三区性色av| 欧美日韩成人综合| 国产精品无码永久免费888| 偷拍日韩校园综合在线| 成人av资源在线观看| 日韩欧美一区在线| 一区二区三区免费| 国产成人一区二区精品非洲| 91精品国产综合久久香蕉的特点 | 亚洲黄色免费电影| 精东粉嫩av免费一区二区三区| 91免费版pro下载短视频| 精品国产污网站| 日本女人一区二区三区| 色婷婷激情综合| 中文一区在线播放| 国产在线视频一区二区| 91精品视频网| 亚洲福利一区二区三区| 色欲综合视频天天天| 中文av字幕一区| 国产精品一线二线三线| 日韩一区二区三区精品视频| 午夜影院久久久| 欧美丝袜丝nylons| 亚洲理论在线观看| 91影视在线播放| 中文字幕亚洲综合久久菠萝蜜| 国产精品一区二区久久精品爱涩 | 国产精品国产成人国产三级| 精品一区二区三区在线观看国产| 欧美久久久久久久久中文字幕| 一区二区国产视频| 91麻豆福利精品推荐| 亚洲欧美偷拍另类a∨色屁股| 成人免费的视频| 国产亚洲欧美日韩在线一区| 国产精品综合久久| 国产夜色精品一区二区av| 国产成人综合自拍| 国产精品色婷婷久久58| av动漫一区二区|