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

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

?? os_mem.lst

?? ucos v2.62 安裝程序 附帶已移植到C8051F020的UCOS源碼
?? LST
?? 第 1 頁 / 共 2 頁
字號:
C51 COMPILER V8.05a   OS_MEM                                                               04/11/2007 16:19:49 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE OS_MEM
OBJECT MODULE PLACED IN ..\Output\os_mem.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE ..\SOURCE\os_mem.c LARGE BROWSE INCDIR(..\app;..\Main;..\Port
                    -;..\SOURCE) DEBUG OBJECTEXTEND PRINT(..\Output\os_mem.lst) OBJECT(..\Output\os_mem.obj)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                                uC/OS-II
   4          *                                          The Real-Time Kernel
   5          *                                            MEMORY MANAGEMENT
   6          *
   7          *                          (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
   8          *                                           All Rights Reserved
   9          *
  10          * File : OS_MEM.C
  11          * By   : Jean J. Labrosse
  12          *********************************************************************************************************
  13          */
  14          
  15          #ifndef  OS_MASTER_FILE
  16          #include "includes.h"
  17          #endif
  18          
  19          #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)
              {
              #if OS_CRITICAL_METHOD == 3                           /* Allocate storage for CPU status register      */
                  OS_CPU_SR  cpu_sr;
              #endif    
                  OS_MEM    *pmem;
                  INT8U     *pblk;
C51 COMPILER V8.05a   OS_MEM                                                               04/11/2007 16:19:49 PAGE 2   

                  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  = *plink;
                      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
C51 COMPILER V8.05a   OS_MEM                                                               04/11/2007 16:19:49 PAGE 3   

              *********************************************************************************************************
              */
              
              void  *OSMemGet (OS_MEM *pmem, INT8U *err)
              {
              #if OS_CRITICAL_METHOD == 3                           /* Allocate storage for CPU status register      */
                  OS_CPU_SR  cpu_sr;
              #endif    
                  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*/
              /*
              *********************************************************************************************************
              *                                   GET THE NAME OF A MEMORY PARTITION
              *
              * Description: This function is used to obtain the name assigned to a memory partition.
              *
              * Arguments  : pmem      is a pointer to the memory partition
              *
              *              pname     is a pointer to an ASCII string that will receive the name of the memory partitio
             -n.
              *
              *              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'
              *
              * Returns    : The length of the string or 0 if 'pmem' is a NULL pointer.
              *********************************************************************************************************
              */
              
              #if OS_MEM_NAME_SIZE > 0
              INT8U  OSMemNameGet (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();
C51 COMPILER V8.05a   OS_MEM                                                               04/11/2007 16:19:49 PAGE 4   

              #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;
                      return (0);
                  }
                  if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                         */
                      OS_EXIT_CRITICAL();                      /* Yes                                                */
                      *err = OS_ERR_PNAME_NULL;
                      return (0);
                  }
              #endif
                  (void)strcpy(pname, pmem->OSMemName);        /* Yes, copy name from OS_MEM                         */
                  len  = strlen(pname);
                  OS_EXIT_CRITICAL();
                  *err = OS_NO_ERR;
                  return (len);
              }
              #endif
              

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
菠萝蜜视频在线观看一区| 亚洲va天堂va国产va久| 亚洲欧美在线视频| 亚洲成人激情社区| 国产一区在线精品| 欧美日韩一区二区在线视频| 久久日一线二线三线suv| 一区二区三区在线视频免费| 日本一不卡视频| 日本高清无吗v一区| 精品国产一区二区亚洲人成毛片| 亚洲精品免费电影| 国产精品白丝av| 日韩免费福利电影在线观看| 亚洲欧洲国产日韩| 国产剧情一区二区| 日韩欧美一级片| 午夜激情久久久| 丝袜美腿一区二区三区| 蜜桃传媒麻豆第一区在线观看| 97精品国产97久久久久久久久久久久| 欧美成人bangbros| 日韩高清在线一区| 在线电影欧美成精品| 亚洲视频免费在线观看| 成人午夜视频在线| 久久精品夜色噜噜亚洲aⅴ| 免费看欧美女人艹b| 欧美日韩一区二区三区不卡| 亚洲一区在线观看网站| 波多野结衣中文字幕一区 | 日本高清不卡一区| 欧美极品美女视频| 国产美女一区二区| 欧美不卡一区二区三区四区| 蜜桃在线一区二区三区| 欧美麻豆精品久久久久久| 国产精品传媒在线| 99国产欧美另类久久久精品| 久久99国内精品| 久久er精品视频| 在线观看免费亚洲| 欧美日本一区二区| 国产精品久久久久影院色老大 | 久99久精品视频免费观看| 99久久精品情趣| 一区二区三区国产豹纹内裤在线 | 日韩高清不卡一区二区三区| 国产精品美女久久久久av爽李琼 | 国产精品国产三级国产aⅴ原创| 成人免费高清在线观看| 久久精品一区二区三区av| 青青草精品视频| 蜜桃视频在线观看一区| 免费欧美在线视频| 日韩精品五月天| 亚洲一区视频在线| 国产精品99久久久久久似苏梦涵 | 秋霞影院一区二区| 777亚洲妇女| 欧美激情综合网| 精品午夜久久福利影院| 国产精品免费av| 久久99国产精品久久99果冻传媒| 亚洲视频在线一区观看| 国产亚洲综合性久久久影院| 精品国产伦一区二区三区免费| 在线观看亚洲精品视频| 高清成人在线观看| 懂色av中文字幕一区二区三区| 国产精品18久久久久久vr| 日本一区二区三区电影| 99精品视频在线免费观看| 成人免费视频在线观看| 中文字幕中文字幕在线一区| 欧美主播一区二区三区美女| 亚洲丝袜自拍清纯另类| 色婷婷国产精品久久包臀| 久久精品国产久精国产爱| 日韩三级在线观看| 97se亚洲国产综合在线| 黄色精品一二区| 国产午夜亚洲精品理论片色戒| 粉嫩欧美一区二区三区高清影视| 国产欧美日产一区| 视频一区中文字幕国产| 欧美日韩一区二区电影| 国产精品免费观看视频| 一区二区高清在线| 成人精品鲁一区一区二区| 日韩三级伦理片妻子的秘密按摩| 麻豆精品在线视频| 久久久精品一品道一区| 在线精品视频免费观看| 欧美zozo另类异族| 成人av一区二区三区| 一区二区在线观看免费| 一区二区在线观看av| 555夜色666亚洲国产免| 国产精品女上位| 日韩久久一区二区| 国产精品视频免费看| 欧美一区二区三区在线| 99久久er热在这里只有精品15| 国产精品女主播在线观看| 精品成人在线观看| 日韩一区二区三区在线观看 | 亚洲.国产.中文慕字在线| 亚洲国产精品久久人人爱蜜臀| 精品国产伦理网| 欧美日韩高清影院| 色婷婷精品久久二区二区蜜臀av | 日韩欧美激情一区| 色爱区综合激月婷婷| 不卡视频一二三四| 国产99久久久国产精品潘金| 久久成人av少妇免费| 亚洲自拍偷拍图区| 亚洲精品视频在线看| 国产精品成人一区二区艾草| 国产精品网站在线| 久久九九久久九九| 久久久91精品国产一区二区精品| 久久综合99re88久久爱| 日韩你懂的电影在线观看| 一区二区三区在线免费| 亚洲伦在线观看| 一区二区在线观看不卡| 亚洲一区二区在线免费看| 悠悠色在线精品| 亚洲国产日韩在线一区模特 | 亚洲国产一区二区三区| 亚洲无人区一区| 午夜精品一区在线观看| 日韩激情一二三区| 日本不卡视频在线观看| 黄色日韩网站视频| www.色精品| 欧美三区在线视频| 欧美一区二区啪啪| 欧美v国产在线一区二区三区| 精品国产髙清在线看国产毛片 | 国产亚洲制服色| 国产精品嫩草久久久久| 一区二区三区在线视频观看| 日韩电影在线观看电影| 国产一区二区三区黄视频| 国产成都精品91一区二区三| 成人午夜私人影院| 欧美精品在线一区二区| xvideos.蜜桃一区二区| 国产精品久久99| 午夜精品久久久久影视| 激情图片小说一区| 色综合久久综合中文综合网| 欧美日本精品一区二区三区| 精品精品国产高清a毛片牛牛| 国产精品进线69影院| 亚洲高清免费在线| 激情小说欧美图片| 欧美性大战xxxxx久久久| 国产精品88888| 欧美日韩在线观看一区二区| 精品国产不卡一区二区三区| 亚洲视频在线一区观看| 精品一区二区三区在线播放视频| a级高清视频欧美日韩| 欧美精品粉嫩高潮一区二区| 国产午夜亚洲精品午夜鲁丝片 | 色综合久久久久网| 欧美成人精品二区三区99精品| 国产精品久久久久久亚洲毛片| 日本一不卡视频| 91尤物视频在线观看| 久久日韩精品一区二区五区| 天天射综合影视| 91美女在线看| 久久免费视频色| 亚洲高清久久久| 91免费小视频| 国产精品午夜在线| 狂野欧美性猛交blacked| 欧美性猛交xxxx黑人交| 中文字幕一区二区不卡| 国产麻豆91精品| 日韩片之四级片| 午夜精品福利在线| 日本韩国一区二区三区视频| 国产精品情趣视频| 韩国av一区二区三区在线观看| 欧美日韩mp4| 亚洲国产精品综合小说图片区| 9色porny自拍视频一区二区| 久久久电影一区二区三区| 美女网站色91| 日韩久久久精品| 91黄色激情网站| 国产激情偷乱视频一区二区三区| 欧美片网站yy| 亚洲国产va精品久久久不卡综合|