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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? pipe.h

?? Sun公司Dream項(xiàng)目
?? H
字號(hào):
/*
 * The contents of this file are subject to the terms
 * of the Common Development and Distribution License
 * (the "License").  You may not use this file except
 * in compliance with the License.
 *
 * You can obtain a copy of the license at
 * http://www.opensource.org/licenses/cddl1.php
 * See the License for the specific language governing
 * permissions and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL
 * HEADER in each file and include the License file at
 * http://www.opensource.org/licenses/cddl1.php.  If 
 * applicable, add the following below this CDDL HEADER, 
 * with the fields enclosed by brackets "[]" replaced 
 * with your own identifying information: 
 * Portions Copyright [yyyy]
 * [name of copyright owner]
 */ 

/*
 * $(@)Pipe.h $Revision: 1.1.1.1 $ $Date: 2006/04/17 22:47:31 $
 * 
 * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
 */
/*
 * Copyright (c) 1996 by Sun Microsystems, Inc.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of Sun
 * Microsystems, Inc. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Sun.
 */

/*
 * Pipe.h -- Description of Pipe
 *
 * This file generated from Tmplate version: 1.4 99/10/27
 * 
 * A Pipe is a object that passes data from a master thread to a slave thread
 * utilizing co-routines.  The master "puts" data to the Pipe and then gives
 * up control to the slave while the slave processes the passed data, when
 * the slave has consumed the data control returns to the master.  The slave
 * accesses data by requesting pointers to a contiguous chunk of data, the
 * max size of that chunk is specified at the time the Pipe in created.  Pipe
 * correctly handles collecting chunks when they break across master puts.
 * The pointer returned by Pipe to a slave and the data it points at is only
 * valid until the next call to Pipe, therefore, the slave should copy the
 * pointed to data if it will be needed beyond the duration of the current
 * co-routine tenure.
 */

#ifndef	_MMP_PIPE_H
#define	_MMP_PIPE_H

#pragma ident "@(#)Pipe.h 1.6	99/12/10 SMI"

/***********************************************************************
 * Global Includes
 ***********************************************************************/

#include <setjmp.h>
#include <stdlib.h>

#include "cobjs/Foreign.h"
#include "cobjs/Inline.h"
#include "cobjs/RetCode.h"
#include "cobjs/Types.h"

_FOREIGN_START

/***********************************************************************
 * Defines
 ***********************************************************************/

#define	PIPE_NULL		((Pipe) 1)

/***********************************************************************
 * Instance Types
 ***********************************************************************/

typedef struct _Pipe *Pipe;

/***********************************************************************
 * RetCode Support
 * NOTE: Use retCodeFor(PIPE_CLASSNAME, PipeError) to map to
 * RetCode.
 ***********************************************************************/

#define	PIPE_CLASSNAME	    "Pipe"

/*
 * Pipe Error Codes
 */
typedef enum PipeError {
    PIPE_ERROR_EOF = 1, 		   /* unexpected eof */
    PIPE_ERROR_STUFF_BYTE,		   /* invalid stuff byte */
    PIPE_ERROR_EXTRANEOUS_DATA		   /* extraneous data at stream end */
} PipeError;

/***********************************************************************
 * Local Includes
 ***********************************************************************/

_FOREIGN_START
/* local includes go here */
_FOREIGN_END

/***********************************************************************
 * Public Types
 ***********************************************************************/

typedef RetCode     (*PipeParser) (void *instp, void *cop, Pipe pipe);
typedef void        (*PipeCleanup) (void *instp);

/*
 * Stream offset.  Must be signed.
 */
typedef long long PipePosition;

/*
 * Pipe bit string spec
 */
typedef struct PipeBits {
    u32                 bitPattern;
    size_t              nBits;
} PipeBits;

/***********************************************************************
 * Inline Support
 ***********************************************************************/

#if	defined(DO_INLINING) && ! defined(PIPE_BODY)
#define	PIPE_INLINE	static
#else		   /* defined(DO_INLINING) && !defined(PIPE_BODY) */
#define	PIPE_INLINE	extern
#endif		   /* defined(DO_INLINING) && !defined(PIPE_BODY) */

/***********************************************************************
 * Class Interface
 ***********************************************************************/

extern void pipeInit(void);

extern Pipe
pipeNew(size_t maxChunk, PipeParser pipeParser, PipeCleanup pipeCleanup,
	void *instp, void *cop);

/***********************************************************************
 * Inline-able Instance Interface
 ***********************************************************************/

/*
 * Slave calls
 */

/*
 * Get contiguous bytes from pipe
 */
PIPE_INLINE u8          *pipeGet(Pipe pipe, size_t chunk);

#define	PIPE_GET(pipe, type)					\
	((type *)pipeGet(pipe, sizeof(type)))

/*
 * Peek at contiguous bytes from pipe
 */
PIPE_INLINE u8          *pipePeek(Pipe pipe, size_t chunk);

#define	PIPE_PEEK(pipe, type)					\
	((type *)pipePeek(pipe, sizeof(type)))

/*
 * Skip bytes
 */
PIPE_INLINE void         pipeSkip(Pipe pipe, size_t chunk);

#define	PIPE_SKIP(pipe, type)					\
	(pipeSkip(pipe, sizeof(type)))

/***********************************************************************
 * Non-inline-able Instance Interface
 ***********************************************************************/

/*
 * Master calls
 */

/*
 * Puts len bytes for buf into stream and gives control to thread.
 */
extern RetCode
pipePut(Pipe pipe, void *buf, size_t len,
	Boolean isMarked, PipePosition putPosition);

/*
 * Transfer len bytes from src pipe to dst pipe
 */
extern RetCode
pipeTransfer(Pipe dstPipe, Pipe srcPipe, size_t len,
	     Boolean isMarked, Boolean doFlush);

/*
 * Mark that the pipe will receive no more data.
 */
extern RetCode      pipeEof(Pipe pipe);

/*
 * Clear any errors on pipe and restart parser
 */
extern void         pipeRecover(Pipe pipe);

/*
 * Record pid that this pipe is associated with.
 */
extern void         pipeSetPid(Pipe pipe, u16 pid);

/*
 * Force all data placed onto child pipes to be parsed.
 * NOTE: This is called on the parent pipe!
 */
extern RetCode	    pipeSync(Pipe pipe);

/*
 * Free the pipe.
 * 
 * Returns retCode from thread.
 */
extern RetCode      pipeFree(Pipe pipe);

/*
 * Slave calls
 */

/*
 * Verify and skip stuff bytes
 */
extern RetCode
pipeSkipStuffBytes(Pipe pipe, size_t nStuffBytes,
		   u8 stuffByte);

/*
 * Get nBits from pipe
 */
extern u32          pipeGetBits(Pipe pipe, size_t nBits);

/*
 * Peek at nBits from pipe
 */
extern u32          pipePeekBits(Pipe pipe, size_t nBits);

/*
 * Peek and verify n bytes from pipe
 */
extern Boolean      pipeIsNextBits(Pipe pipe, PipeBits pipeBits);

/*
 * Skip nbits on pipe
 */
extern void         pipeSkipBits(Pipe pipe, size_t nBits);

/*
 * Peek at non-byte aligned block of bytes
 */
extern void         pipePeekByteBlock(Pipe pipe, u8 *buf, size_t nBytes);

/*
 * Get non-byte aligned block of bytes
 */
extern void         pipeGetByteBlock(Pipe pipe, u8 *buf, size_t nBytes);

/*
 * Force pipe to byte boundary
 */
extern void         pipeByteAlign(Pipe pipe);

/*
 * Skip until pipe is at mark
 */
extern void         pipeFindMark(Pipe pipe);

/*
 * Return TRUE if pipe is at mark
 */
extern Boolean      pipeIsAtMark(Pipe Pipe);

/*
 * Returns true if chunk can be got/peeked without hitting eof
 */
extern Boolean      pipeIsAvail(Pipe pipe, size_t chunk);

#define	PIPE_IS_AVAIL(costream, type)				\
	pipeIsAvail(costream, sizeof(type))

/*
 * Returns true if chunk can be got/peeked without hitting mark or eof
 */
extern Boolean      pipeIsAvailUnmarked(Pipe pipe, size_t chunk);

#define	PIPE_IS_AVAIL_UNMARKED(costream, type)				\
	pipeIsAvailUnmarked(costream, sizeof(type))

/*
 * Return the current number of unmarked bytes
 */
extern size_t       pipeAvailUnmarked(Pipe pipe);


/*
 * Return the byte position in slave relative terms.
 */
extern PipePosition pipeRelativePosition(Pipe pipe);

/*
 * Return the byte position in global terms
 */
extern PipePosition pipePosition(Pipe pipe);

/*
 * Clear crc accumulator.
 */
extern void         pipeCrcClear(Pipe pipe);

/*
 * Get accumulated crc since last crc clear.
 */
extern u32          pipeCrcGet(Pipe pipe);

/*
 * Get pid that pipe is carrying
 */
extern u16          pipeGetPid(Pipe pipe);

/*
 * Return pipe parser func
 */
extern PipeParser pipeGetParser(Pipe pipe);

/***********************************************************************
 * Inline Function Bodies
 ***********************************************************************/

#if	defined(DO_INLINING) && ! defined(PIPE_BODY)
#define	PIPE_HEADER
#include "Pipe.c"
#undef	PIPE_HEADER
#endif		   /* defined(DO_INLINING) && !defined(PIPE_BODY) */

_FOREIGN_END

#endif					   /* _MMP_PIPE_H */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀久久久久久久| 国产成人精品三级麻豆| 欧美吞精做爰啪啪高潮| 亚洲色图都市小说| 成人h版在线观看| 国产精品久久久久影视| 成人av在线电影| 中文字幕av一区二区三区高| 成人永久看片免费视频天堂| 日本一区二区三区电影| 成人三级伦理片| 中文字幕日韩一区| 91麻豆免费看| 亚洲高清视频在线| 555夜色666亚洲国产免| 久久激情综合网| 欧美精品一区二区久久婷婷| 国产福利精品一区二区| 国产欧美一区二区精品性| 成人v精品蜜桃久久一区| 国产精品久久久久三级| 91免费版在线| 亚洲国产裸拍裸体视频在线观看乱了 | 中文av一区特黄| 成人动漫av在线| 伊人一区二区三区| 欧美日韩视频在线观看一区二区三区| 亚洲第一激情av| 日韩三级电影网址| 国产精品12区| 亚洲色图.com| 51久久夜色精品国产麻豆| 久久99精品国产.久久久久| 久久精品一区二区三区不卡| 精品日韩在线观看| 大白屁股一区二区视频| 亚洲另类在线一区| 欧美浪妇xxxx高跟鞋交| 精品中文字幕一区二区小辣椒| 久久久久久毛片| 97久久精品人人做人人爽| 一区二区三区四区高清精品免费观看| 欧美性感一区二区三区| 久久精品国产网站| 国产精品嫩草99a| 欧美亚洲综合在线| 黑人巨大精品欧美一区| 国产精品久久久久影院亚瑟| 欧美无乱码久久久免费午夜一区| 另类小说欧美激情| 中文字幕一区二区三区四区| 欧美三级日韩三级| 国产一区二区伦理| 亚洲综合视频网| 精品动漫一区二区三区在线观看| 91色乱码一区二区三区| 青青草原综合久久大伊人精品优势| 久久精品视频免费| 欧美制服丝袜第一页| 国内久久精品视频| 一区二区三区加勒比av| 精品日韩一区二区三区| 日本道在线观看一区二区| 久久国产精品72免费观看| 亚洲视频网在线直播| 欧美电视剧免费全集观看| 91丨九色丨国产丨porny| 日本特黄久久久高潮| 国产精品久久久久久户外露出 | 99视频热这里只有精品免费| 天堂一区二区在线免费观看| 国产精品乱人伦中文| 在线成人av影院| caoporen国产精品视频| 蜜臀久久99精品久久久久久9| 国产精品免费视频网站| 日韩欧美国产1| 欧美在线你懂的| 大陆成人av片| 美女视频网站久久| 亚洲精品免费在线| 国产亚洲精品资源在线26u| 欧美日韩第一区日日骚| 成人aaaa免费全部观看| 久久精品国产99国产精品| 亚洲美女视频在线| 久久精品一二三| 中文字幕亚洲一区二区av在线| 91精品国产综合久久国产大片| av福利精品导航| 经典一区二区三区| 亚洲成人黄色影院| 亚洲天堂2016| 欧美国产乱子伦 | 2024国产精品视频| 欧美精品视频www在线观看| av中文字幕不卡| 热久久免费视频| 一区2区3区在线看| 国产精品三级av在线播放| 精品国产成人系列| 正在播放亚洲一区| 欧美性猛交xxxx黑人交| av电影天堂一区二区在线观看| 激情久久五月天| 免费成人美女在线观看| 亚洲一区二区三区在线播放| 1000部国产精品成人观看| 久久九九久久九九| 精品盗摄一区二区三区| 91精品国产综合久久久久久久久久| 色香蕉成人二区免费| 成人毛片在线观看| 国产99久久久久久免费看农村| 久久er99热精品一区二区| 婷婷久久综合九色国产成人| 亚洲黄色小视频| 亚洲三级免费电影| 国产精品国产三级国产三级人妇 | 不卡电影免费在线播放一区| 国产精品影视在线| 狠狠色丁香婷综合久久| 蜜臀久久99精品久久久画质超高清| 天堂va蜜桃一区二区三区漫画版| 一区二区理论电影在线观看| 亚洲视频狠狠干| 亚洲靠逼com| 亚洲激情成人在线| 亚洲国产日韩一区二区| 亚州成人在线电影| 日韩黄色片在线观看| 日韩成人精品在线| 男女男精品视频网| 久久成人久久鬼色| 精品一区二区国语对白| 国内久久精品视频| 国产成人一区二区精品非洲| 国产传媒久久文化传媒| 国产suv一区二区三区88区| 成人精品免费看| 97se亚洲国产综合在线| 一本大道久久a久久综合| 91国产成人在线| 欧美精品久久天天躁| 亚洲欧洲精品天堂一级 | 久久精品99久久久| 精品一二三四在线| 国产精品888| av电影在线观看一区| 色狠狠色噜噜噜综合网| 欧美亚洲国产一卡| 日韩一区二区三区av| 亚洲精品在线观看网站| 国产免费观看久久| 亚洲欧洲av色图| 亚洲v日本v欧美v久久精品| 日本人妖一区二区| 激情小说亚洲一区| 成人avav影音| 色婷婷亚洲婷婷| 日韩一区二区三区三四区视频在线观看 | 国产乱人伦偷精品视频免下载 | 色综合色狠狠综合色| 欧美日韩一卡二卡三卡| 欧美一区二区女人| 国产视频911| 亚洲蜜臀av乱码久久精品 | 亚洲三级电影网站| 日韩和的一区二区| 国产大片一区二区| 日本精品一区二区三区四区的功能| 欧美日韩免费一区二区三区视频| 欧美成人三级在线| 国产精品国产三级国产普通话99 | 日本精品视频一区二区| 日韩午夜中文字幕| 国产精品久久久久永久免费观看| 亚洲国产精品人人做人人爽| 精彩视频一区二区| 91蝌蚪porny九色| 日韩欧美一区二区三区在线| 亚洲国产成人一区二区三区| 亚洲国产日韩在线一区模特 | 国产mv日韩mv欧美| 欧美日韩另类一区| 久久色中文字幕| 有码一区二区三区| 激情综合色播五月| 欧美天堂一区二区三区| 精品成人一区二区三区四区| 亚洲欧美日韩在线不卡| 美国毛片一区二区| 色天天综合久久久久综合片| 精品伦理精品一区| 亚洲猫色日本管| 国产精品一卡二卡在线观看| 欧美色综合网站| 亚洲国产精华液网站w | 一区二区三区精品在线| 精品一区二区日韩|