⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osdep.h

📁 uMemory 内存管理模块
💻 H
字号:
/*
 * =====================================================================================
 * 
 *       Filename:  osdep.h
 * 
 *    Description:  Operating System dependent services. 
 * 
 *        Version:  1.0
 *        Created:  6/19/2007 6:31:09 PM Tokyo Standard Time
 *       Revision:  none
 * 
 *         Author:  Jian Zhang , zhjwp@hotmail.com
 *                 
 *        Note(s):  This sample is porting for uCOS-II.
 *                  It can be easily portted to other OS.
 *                  For the uMemory module, only the following primitives are used:
 *                 
 *                  'DISABLE_INTERRUPT', 'ENABLE_INTERRUPT', 'CRITICAL_CREATE',
 *                  'CRITICAL_FREE', 'CRITICAL_ENTER', 'CRITICAL_LEAVE'.
 * 
 * =====================================================================================
 */

#ifndef OS_DEP_H
#define OS_DEP_H

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "ucos_ii.h"

#define INLINE      __inline

#define HANDLE      void *

typedef unsigned char  BOOLEAN;
typedef unsigned char  INT8U;                    /* Unsigned  8 bit quantity                           */
typedef signed   char  INT8S;                    /* Signed    8 bit quantity                           */
typedef unsigned short INT16U;                   /* Unsigned 16 bit quantity                           */
typedef signed   short INT16S;                   /* Signed   16 bit quantity                           */
typedef unsigned int   INT32U;                   /* Unsigned 32 bit quantity                           */
typedef signed   int   INT32S;                   /* Signed   32 bit quantity                           */
typedef float          FP32;                     /* Single precision floating point                    */
typedef double         FP64;                     /* Double precision floating point                    */


#define DISABLE_INTERRUPT       OS_ENTER_CRITICAL()
#define ENABLE_INTERRUPT        OS_EXIT_CRITICAL()
extern void  *VMEM_Malloc(INT16U size);
extern void VMEM_Free(void *addr);

INLINE void * NEW(int size)
{
    return VMEM_Malloc((INT16U)size);
}

INLINE void FREE(void * buf)
{
    VMEM_Free(buf);
}

INLINE void DELAY(INT32U milli_sec)
{
    OSTimeDlyHMSM(0, 0, 0, milli_sec);
}

INLINE HANDLE CRITICAL_CREATE(INT8S *name)       
{
    return (HANDLE)OSSemCreate(1);
}

INLINE void CRITICAL_FREE(HANDLE lock)
{
    INT8U err;
    if (lock) {
        OSSemDel((OS_EVENT *)lock, OS_DEL_ALWAYS, &err);
    }
}

INLINE void CRITICAL_ENTER(HANDLE lock)
{
    INT8U err;
    if (lock) {
        OSSemPend((OS_EVENT *)lock, 0, &err);
    }
}

INLINE void CRITICAL_LEAVE(HANDLE lock)
{
    if (lock) {
        OSSemPost((OS_EVENT *)lock);
    }
}

INLINE HANDLE EVENT_CREATE(INT8S *name)
{
    return (HANDLE)OSSemCreate(NULL);
}

INLINE void EVENT_FREE(HANDLE event)
{
    INT8U err;
    if (event) {
        OSSemDel((OS_EVENT *)event, OS_DEL_ALWAYS, &err);
    }
}

INLINE void EVENT_WAIT(HANDLE event)
{
    INT8U err;
    OSSemPend ((OS_EVENT *)event, 0, &err);
}

INLINE void EVENT_SET(HANDLE event)
{
	OSSemPost((OS_EVENT *)event);
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -