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

📄 pip.h

📁 SEED的VPM642测试程序-板级支持库
💻 H
字号:
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/* "@(#) DSP/BIOS 4.90.270 12-18-03 (barracuda-o04)" */
/*
 *  ======== pip.h ========
 *
 */

#ifndef PIP_
#define PIP_

#include <fxn.h>
#include <sts.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct PIP_Obj PIP_Obj;
#if (defined(_55_) || defined(_28_))	/* If 55x or 28x processor */
typedef struct PIP_Sock PIP_Sock;
struct  PIP_Sock {
    PIP_Obj *	takeProbe;		/* take (get/alloc) probe*/
    Ptr		frameAddr;		/* Frame addr set by	*/
    					/*  PIP_get/alloc()*/
    Uns		frameSize;		/* ditto 		*/
    Ptr		curDesc;		/*pointer to list of	*/ 
    					/*pipe descs		*/
    FXN_Obj *	pnotify;		/* ptr to notify	*/ 
					/* reader/writer	*/
					/* function 		*/
    Uns		numFrames;		/* number of frames	*/
    PIP_Obj *	pGiveProbe;		/* give (free) probe 	*/
    Uns	*       pNumFrames;		/* ptr to numframes on	*/
    FXN_Obj	notifyFxn;		/* notify function*/
    STS_Obj *	preaderSts;		/* statistics configured*/
 }  ;

struct PIP_Obj {
    Uns		threshold;		/* max size of frames in pip */
    PIP_Sock 	readerSock;		/* Reader socket  of pip     */
    PIP_Sock	writerSock ;		/* Writer socket  of pip     */
    }  ;

#else					/* else	 if not 55x	*/
struct PIP_Obj {
    Uns		threshold;		/* max size of frames in pip */

    PIP_Obj *	preaderTakeProbe;	/* take (get) probe */
    Ptr		readerAddr;		/* set by PIP_get() */
    Uns		readerSize;		/* ditto */
    Ptr		readerCurdesc;		/* pointer to list of pipe descs */
    FXN_Obj *	pnotifyReader;		/* ptr to notify reader function */
    Uns		readerNumFrames;	/* number of frames at reader end */
    PIP_Obj *	preaderGiveProbe;	/* give (free) probe */
    Uns	*       pwriterNumFrames;	/* ptr to numframes on writer end */
#if (defined(_54_) && defined(_FAR_MODE))
    Uns		pad0;
#endif
    FXN_Obj	notifyWriter;		/* notify writer function */
    STS_Obj *	preaderSts;		/* statistics configured for reader */
    PIP_Obj *	pwriterTakeProbe;	/* take (alloc) probe */
    Ptr		writerAddr;		/* set by PIP_alloc() */
    Uns		writerSize;		/* ditto */
    Ptr		writerCurdesc;		/* pointer to list of pipe descs */
    FXN_Obj *	pnotifyWriter;		/* ptr to notify writer function */
    Uns		writerNumFrames;	/* number of numframes at writer end */
    PIP_Obj *	pwriterGiveProbe;	/* give (put) probe */
    Uns	*	preaderNumFrames;	/* ptr to numframes at reader end */
#if (defined(_54_) && defined(_FAR_MODE))
    Uns		pad1;
#endif
    FXN_Obj	notifyReader;		/* notify reader function */
    STS_Obj *	pwriterSts;		/* statistics configured for writer */
#if (defined(_54_) && defined(_FAR_MODE))
    Uns		pad2;
#endif
};
#endif					/* ifdef 55x processor 	*/


typedef struct PIP_Obj *PIP_Handle;

extern Void	PIP_alloc(PIP_Handle pipe);
extern Void	PIP_free(PIP_Handle pipe);
extern Void	PIP_get(PIP_Handle pipe);
extern Void	PIP_put(PIP_Handle pipe);
extern Int 	PIP_peek(PIP_Handle pipe, Ptr *addr, Uns rw);
extern Void	PIP_reset(PIP_Handle pipe);

#define PIP_READER 0
#define PIP_WRITER 1


#if (defined(_55_) || defined(_28_))	/* If 55x or 28x processor */
#define PIP_getReaderAddr(pipe)		(((pipe)->readerSock).frameAddr)
#define PIP_getReaderNumFrames(pipe)	(((pipe)->readerSock).numFrames)
#define PIP_getReaderSize(pipe)		(((pipe)->readerSock).frameSize)
#define PIP_setReaderSize(pipe,size)	(((pipe)->readerSock).frameSize = size)
#define PIP_getWriterAddr(pipe)		(((pipe)->writerSock).frameAddr)
#define PIP_getWriterNumFrames(pipe)    (((pipe)->writerSock).numFrames)
#define PIP_getWriterSize(pipe)		(((pipe)->writerSock).frameSize)
#define PIP_setWriterSize(pipe,size)	(((pipe)->writerSock).frameSize = size)

#else					/* If not 55x processor	*/

#define PIP_getReaderAddr(pipe)		((pipe)->readerAddr)
#define PIP_getReaderNumFrames(pipe)	((pipe)->readerNumFrames)
#define PIP_getReaderSize(pipe)		((pipe)->readerSize)
#define PIP_setReaderSize(pipe,size)	((pipe)->readerSize = size)
#define PIP_getWriterAddr(pipe)		((pipe)->writerAddr)
#define PIP_getWriterNumFrames(pipe)    ((pipe)->writerNumFrames)
#define PIP_getWriterSize(pipe)		((pipe)->writerSize)
#define PIP_setWriterSize(pipe,size)	((pipe)->writerSize = size)
#endif					/* ifdef 55x processor	*/

typedef struct PIP_Curdesc {
    Ptr	addr;
    Uns size;
    struct PIP_Curdesc *next;
} PIP_Curdesc;

#if (defined(_55_) || defined(_28_))	/* if 55x or 28x processor */
#define PIP_getThreshold(pipe)		((pipe)->threshold)
#define PIP_setReaderAddr(pipe,addr)	(((pipe)->readerSock).frameAddr = (Ptr)addr)
#define PIP_getReaderCurdesc(pipe)	(((pipe)->readerSock).curDesc)

#define PIP_setReaderCurdesc(pipe,desc)	(((pipe)->readerSock).curDesc = (Ptr)desc)
#define PIP_setReaderNumFrames(pipe,nf)	(((pipe)->readerSock).numFrames = nf)
#define PIP_setWriterAddr(pipe,addr)	(((pipe)->writerSock).frameAddr = addr)
#define PIP_getWriterCurdesc(pipe)	(((pipe)->writerSock).curDesc)
#define PIP_setWriterCurdesc(pipe,desc)	(((pipe)->writerSock).curDesc = (Ptr)desc)
#define PIP_setWriterNumFrames(pipe,nf) (((pipe)->writerSock).numFrames = nf)

#define PIP_getAddrInDesc(desc)		((desc)->addr)
#define PIP_getSizeInDesc(desc)		((desc)->size)
#else					/* if Not 55x		*/
#define PIP_getThreshold(pipe)		((pipe)->threshold)
#define PIP_setReaderAddr(pipe,addr)	((pipe)->readerAddr = (Ptr)addr)
#define PIP_getReaderCurdesc(pipe)	((pipe)->readerCurdesc)
#define PIP_setReaderCurdesc(pipe,desc)	((pipe)->readerCurdesc = (Ptr)desc)
#define PIP_setReaderNumFrames(pipe,nf)	((pipe)->readerNumFrames = nf)
#define PIP_setWriterAddr(pipe,addr)	((pipe)->writerAddr = addr)
#define PIP_getWriterCurdesc(pipe)	((pipe)->writerCurdesc)
#define PIP_setWriterCurdesc(pipe,desc)	((pipe)->writerCurdesc = (Ptr)desc)
#define PIP_setWriterNumFrames(pipe,nf) ((pipe)->writerNumFrames = nf)

#define PIP_getAddrInDesc(desc)		((desc)->addr)
#define PIP_getSizeInDesc(desc)		((desc)->size)
#endif					/* ifdef 55x processor	*/

#ifdef __cplusplus
}
#endif /* extern "C" */

#endif /* PIP_ */

⌨️ 快捷键说明

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