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

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

?? scs.h

?? <B>Digital的Unix操作系統VAX 4.2源碼</B>
?? H
?? 第 1 頁 / 共 2 頁
字號:
typedef struct _pccb	{		/* Port Command and Control Block    */    union		{		/* PD dependent fields		     */					/*  ( MUST BE FIRST IN PCCB !! )     */	struct _gvppccb	gvp;		/*  Generic Vaxport specific fields  */	struct _msipccb	msi;		/*  MSI specific fields		     */	struct _uqpccb	uq;		/*  UQ specific fields		     */    } pd;    struct _pccbq    *flink;		/* System-wide local port database   */    struct _pccbq    *blink;		/*   queue pointers		     */    u_short	     size;		/* Size of data structure	     */    u_char	     type;		/* Structure type		     */    u_char			:  8;    struct _pdt	     *pdt;		/* PDT pointer			     */    struct kschedblk forkb;		/* Fork block			     */    struct lock_t    pccb_lk;		/* Lock structure		     */    union		  {		/* PPD dependent fields		     */	struct _cippdpccb cippd;	/*  CI PPD specific fields	     */    } ppd;    struct _lpib     lpinfo;		/* Local port information	     */} PCCB;typedef struct _pdt	{		/* Port Dispatch Table		     */					/* Mandatory PD Functions	     */    struct _scsh *( *alloc_dg )();	/* Allocate Datagram Buffer	     */    void	  ( *dealloc_dg )();	/* Deallocate Datagram Buffer	     */    void	  ( *add_dg )();	/* Add Datagram Buffer to Free Pool  */    struct _scsh *( *remove_dg )();	/* Remove Dg Buffer from Free Pool   */    struct _scsh *( *alloc_msg )();	/* Allocate Message Buffer	     */    void	  ( *dealloc_msg )();	/* Deallocate Message Buffer	     */    void	  ( *add_msg )();	/* Add Message Buffer to Free Pool   */    struct _scsh *( *remove_msg )();	/* Remove Msg Buffer from Free Pool  */    void	  ( *send_msg )();	/* Send Sequenced Message	     */    u_long	  ( *map_buf )();	/* Map Buffer			     */    void	  ( *unmap_buf )();	/* Unmap Buffer			     */    u_long	  ( *open_path )();	/* Transition Formative Path to Open */    void	  ( *crash_path )();	/* Crash Path			     */    struct _pb	 *( *get_pb )();	/* Retrieve Path Block		     */    void	  ( *remove_pb )();	/* Remove Path Block from Databases  */    u_long        ( *remote_reset )();  /* Reset Remote Port and System      */    u_long        ( *remote_start )();  /* Start Remote Port and System      */					/* Optional PD Functions	     */    void	  ( *send_dg )();	/* Send Datagram		     */    u_long	  ( *send_data )();	/* Send Block Data		     */    u_long	  ( *request_data )();	/* Request Block Data		     */    void	  ( *crash_lport )();	/* Crash Local Port		     */    void	  ( *shutdown )();	/* Inform Systems of Local Shutdown  */					/* Optional PD Functions for PPD     */    u_long	  ( *opt1 )();    u_long	  ( *opt2 )();    u_long	  ( *opt3 )();    u_long	  ( *opt4 )();    u_long	  ( *opt5 )();    u_long	  ( *opt6 )();    u_long	  ( *opt7 )();    u_long	  ( *opt8 )();    u_long	  ( *opt9 )();    u_long	  ( *opt10 )();    u_long	  ( *opt11 )();    u_long	  ( *opt12 )();} PDT;typedef struct _tid	{		/* Transaction Identification Number */    u_long	   blockid;		/* Block data transfer ID number     */    struct _connid lconnid;		/* Local connection ID number	     */} TID;/* SCS Sequenced Message Definitions. */					/* ACCEPT_REQ and CONN_REQ Sequenced */typedef	struct	{			/*  Messages			     */    u_short   	mtype;			/* SCS message type		     */    short	credit;			/* Flow control credit		     */    struct _connid rconnid;		/* Identification of receiving SYSAP */					/* MBZ for CONN_REQ		     */    struct _connid sconnid;		/* Identification of sending SYSAP   */    u_short	min_credit;		/* Minimum credit requirement	     */    u_short			: 16;	/* MBZ				     */    u_char	rproc_name[ NAME_SIZE ];/* Receiving SYSAP name		     */    u_char	sproc_name[ NAME_SIZE ];/* Sending SYSAP name		     */    u_char	sproc_data[ DATA_SIZE ];/* Connect data from sending SYSAP   */} ACCEPT_REQ, CONN_REQ;					/* ACCEPT_RSP, CONN_RSP, DISCONN_REQ */typedef struct	{			/*  and REJECT_REQ Sequenced Messages*/    u_short	   mtype;		/* SCS message type		     */    u_short			: 16;	/* MBZ				     */    struct _connid rconnid;		/* Identification of receiving SYSAP */    struct _connid sconnid;		/* Identification of sending SYSAP   */    u_short			: 16;	/* MBZ				     */    u_short	   reason;		/* Reason			     */#define	Req_status reason		/*  Request status		     */} ACCEPT_RSP, CONN_RSP, DISCONN_REQ, REJECT_REQ;					/* CREDIT_REQ, CREDIT_RSP, 	     */					/*  DISCONN_RSP, and REJECT_RSP      */typedef struct _scsh	{		/*  Sequenced Messages and SCS Header*/    u_short   	   mtype;		/* SCS message type		     */    short	   credit;		/* Flow control credit		     */					/* MBZ for DISCONN_RSP and REJECT_RSP*/    struct _connid rconnid;		/* Identification of receiving SYSAP */    struct _connid sconnid;		/* Identification of sending SYSAP   */} CREDIT_REQ, CREDIT_RSP, DISCONN_RSP, REJECT_RSP, SCSH;/* Macros. */					/* CB Manipulation Macros					 *//* SMP: Both SCA database and CBVTE must be locked PRIOR to invocation. */#define	Insert_cb( cb, pb ) {						\    Insert_entry( cb->flink, pb->cbs )					\    ++pb->pinfo.nconns;							\}/* SMP: Both SCA database and CBVTE must be locked PRIOR to invocation. */#define	Remove_cb( cb, pb ) {						\    Remove_entry( cb->flink )						\    --pb->pinfo.nconns;							\    ( void )scs_dealloc_cb( cb );					\}					/* Connection Manipulation Macros					 *//* SMP: The CBVTE is locked on successful invocation. */#define	Check_connid( sourceid, cbvte, cb ) {				\    if( sourceid.index <= ( lscs.max_conns - 1 )) {			\	cbvte = Get_cbvte( sourceid );					\	Lock_cbvte( cbvte )						\	if( cbvte->connid.seq_num == sourceid.seq_num ) {		\	    cb = Get_cb( cbvte );					\	} else {							\	    Unlock_cbvte( cbvte )					\	    return( RET_INVCONNID );					\	}								\    } else {								\	    return( RET_INVCONNID );					\    }									\}/* SMP: Both the SCA database and CBVTE are locked on successful invocation. */#define	Check_connid2( sourceid, cbvte, cb ) {				\    if( sourceid.index <= ( lscs.max_conns - 1 )) {			\	cbvte = Get_cbvte( sourceid );					\	Lock_scadb()							\	Lock_cbvte( cbvte )						\	if( cbvte->connid.seq_num == sourceid.seq_num ) {		\	    cb = Get_cb( cbvte );					\	} else {							\	    Unlock_cbvte( cbvte )					\	    Unlock_scadb()						\	    return( RET_INVCONNID );					\	}								\    } else {								\	return( RET_INVCONNID );					\    }									\}#define	Get_cbvte( sourceid )	( scs_cbvtdb->cbvt + sourceid.index )#define	Get_cb( cbvte )		( cbvte->ov1.cb )#define	Comp_connid( c1, c2 )	( U_long( c1 ) == U_long( c2 ))					/* Counter Macros					 *//* SMP: The counter containing structure must be locked PRIOR to invocation. */#define	Data_counter( counter, bytes ) {				\    if( counter != -1 ) {						\	if(( long )counter < 0 ) {					\	    if(( long )( counter += bytes ) > 0 ) {			\		counter = -1;						\	    }								\	} else {							\	    counter += bytes;						\	}								\    }									\}/* SMP: The counter containing structure must be locked PRIOR to invocation. */#define	Event_counter( counter ) {					\    if( ++counter == 0 ) {						\	--counter;							\    }									\}					/* Positioning and Message Macros					 */#define	Accept_req( bp )	(( ACCEPT_REQ * )bp )#define	Accept_rsp( bp )	(( ACCEPT_RSP * )bp )#define	Conn_req( bp )		(( CONN_REQ * )bp )#define	Conn_rsp( bp )		(( CONN_RSP * )bp )#define	Disconn_req( bp )	(( DISCONN_REQ * )bp )#define	Reject_req( bp )	(( REJECT_REQ * )bp )#define	Appl_to_scs( bp )	(( SCSH * )bp - 1 )#define	Scs_to_appl( scsbp )	(( u_char * )( scsbp + 1 ))#define	Cb_offset( ptr, offset )					\    (( u_char * )&(( CB * )ptr )->offset - ( u_char * )ptr )#define	Pb_offset( ptr, offset )					\    (( u_char * )&(( PB * )ptr )->offset - ( u_char * )ptr )#define	Pccb_offset( ptr, offset )					\    (( u_char * )&(( PCCB * )ptr )->offset - ( u_char * )ptr )#define	Pos_to_cb( ptr, offset )					\    (( CB * )(( u_char * )ptr - Cb_offset( ptr, offset )))#define	Pos_to_pb( ptr, offset )					\    (( PB * )(( u_char * )ptr - Pb_offset( ptr, offset )))#define	Pos_to_pccb( ptr, offset )					\    (( PCCB * )(( u_char * )ptr - Pccb_offset( ptr, offset )))					/* Shorthand Notations					 */#define	Cb			(( CB * )cb )#define	Lcb			(( CB * )lcb )#define	Sb			(( SB * )sb )#define	Pb			(( PB * )pb )#define	Alloc_dg		pdt->alloc_dg#define	Dealloc_dg		pdt->dealloc_dg#define	Add_dg			pdt->add_dg#define	Remove_dg		pdt->remove_dg#define	Alloc_msg		pdt->alloc_msg#define	Dealloc_msg		pdt->dealloc_msg#define	Add_msg			pdt->add_msg#define	Remove_msg		pdt->remove_msg#define	Send_msg		pdt->send_msg#define	Map_buf			pdt->map_buf#define	Unmap_buf		pdt->unmap_buf#define	Open_path		pdt->open_path#define	Crash_path		pdt->crash_path#define Get_pb			pdt->get_pb#define	Remove_pb		pdt->remove_pb#define	Remote_reset		pdt->remote_reset#define	Remote_start		pdt->remote_start#define	Send_dg			pdt->send_dg#define Send_data		pdt->send_data#define Request_data		pdt->request_data#define	Crash_lport		pdt->crash_lport#define	Shutdown		pdt->shutdown					/* SCS Event Logging Macros					 */#define	Elscscommon( elp )	( &elp->el_body.elscs.scscommon )#define	Elscsconn( p )		(( struct scs_conn * )p )#define	Elscsrreason( p )	(( u_long * )p )#define	Elscsldirid( p )	(( u_short * )p )#define	Scs_clmaxcode( tab, event )					\    ( tab[ Eseverity( event )].max_code )#define	Scs_clftab( tab, event )					\    ( tab[ Eseverity( event )].ftable + Ecode( event ) - 1 )#define	Scs_cltabmsg( tab, event )	( Scs_clftab( tab, event )->msg )#define	Scs_cltabcode( tab, event )	( Scs_clftab( tab, event )->fcode )				/* SCS SMP Locking Macros				 */#define	Init_cbvte_lock( cbvte ) {					\    lockinit(&(( cbvte )->cbvte_lk ), &lock_cbvte_d );			\}#define	Init_pb_lock( pb ) {						\    lockinit(&(( pb )->pb_lk ), &lock_pb_d );				\}#define	Init_pccb_lock( pccb ) {					\    lockinit(&(( pccb )->pccb_lk ), &lock_pccb_d );			\}#define	Init_scadb_lock() {						\    lockinit( &lk_scadb, &lock_scadb_d );				\}#define	Lock_cbvte( cbvte ) {						\    smp_lock(&(( cbvte )->cbvte_lk ), LK_RETRY );			\}#define	Lock_pb( pb ) {							\    smp_lock(&(( pb )->pb_lk ), LK_RETRY );				\}#define	Lock_pccb( pccb ) {						\    smp_lock(&(( pccb )->pccb_lk ), LK_RETRY );				\}#define	Lock_scadb() {							\    smp_lock( &lk_scadb, LK_RETRY );					\}#define	Test_pb_lock( pb )	(( pb )->pb_lk.l_lock )#define	Test_pccb_lock( pccb )	(( pccb )->pccb_lk.l_lock )#define	Test_scadb_lock()	( lk_scadb.l_lock )#define	Unlock_cbvte( cbvte ) {						\    smp_unlock(&(( cbvte )->cbvte_lk ));				\}#define	Unlock_pb( pb ) {						\    smp_unlock(&(( pb )->pb_lk ));					\}#define	Unlock_pccb( pccb ) {						\    smp_unlock(&(( pccb )->pccb_lk ));					\}#define	Unlock_scadb() {						\    smp_unlock( &lk_scadb );						\}/* CBVTE Semaphore Macros: CBVTEs are locked when their semaphores are tested * and incremented but not when they are decremented.  This allows for * semaphores to be simultaneously tested and decremented in a SMP environment. * This is acceptable because SCS is interested in only whether semaphores are * zero or non-zero.  Semaphores may test non-zero when actually zero but may * never test zero when non-zero.  What is necessary to meet this semaphore * testing requirement is an atomic fetch of semaphore contents.  This is * achieved by longword-aligning the word-size CBVTE semaphores.  Once * atomically fetched the semaphore contents can be isolated and tested. * * This Decr_cbvte_sem should be an atomic operation, memory lock for  * duration of operation such as adawi operation. * Unable to do so at this time, So lock and unlock the cbvte. */#define	Decr_cbvte_sem( cbvte )	{					\    Lock_cbvte( cbvte ) 						\    ++cbvte->cbip;							\    Unlock_cbvte( cbvte ) 						\}#define	Incr_cbvte_sem( cbvte )	{					\    --cbvte->cbip;							\}#define	Test_cbvte_sem( cbvte )	( U_long( cbvte->cbip ) & 0xffff )					/* Miscellaneous Macros					 *//* SMP: The CBVTE must be locked PRIOR to invocation. */#define	Init_csb( csb, cb, scsbp, size )	{			\    csb->connid = cb->cinfo.lconnid;					\    csb->Aux = cb->aux;							\    csb->size = size - sizeof( SCSH );					\    csb->buf = Scs_to_appl( scsbp );					\}#define	Port_failure( reason )					  	\    (( reason == PF_POWER ||						\       reason == PF_PORTERROR ||					\       reason == PF_FATALERROR ) ? 1: 0 )/* SMP: The CBVTE must be locked PRIOR to invocation. */#define	Remove_pb_waitq( cb )	{					\    if( cb->cinfo.cbstate != CB_NOT_WAIT ) {				\	Lock_pb( cb->pb )						\	Remove_entry( cb->scs_cb )					\	Unlock_pb( cb->pb )						\	cb->cinfo.cbstate = CB_NOT_WAIT;				\    }									\}/* SMP: Both the SCA database and PB must be locked PRIOR to invocation. */#define	Remove_scs_timeoutq( pb ) {					\    pb->pinfo.status.sanity = 0;					\    pb->pinfo.duetime = 0;						\    Remove_entry( pb->timeout )						\}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人精品在线| 久久中文娱乐网| 91精品国产品国语在线不卡| 日韩一区在线看| 在线精品视频一区二区三四| 色婷婷香蕉在线一区二区| 97se狠狠狠综合亚洲狠狠| 亚洲精品一区二区三区香蕉| 久久久久久久综合色一本| 日韩成人av影视| 日韩一区二区三免费高清| 日韩精品一级中文字幕精品视频免费观看| 风间由美中文字幕在线看视频国产欧美| 午夜精品久久久久久久久久久| 亚洲欧美另类久久久精品2019| 中文字幕国产一区二区| 中文字幕一区二区三区精华液 | 国产一区二区三区在线观看免费 | 欧美日韩国产电影| 欧美中文字幕亚洲一区二区va在线| 成人精品一区二区三区中文字幕| 国产米奇在线777精品观看| 国产精品一级片| 色94色欧美sute亚洲13| 91精品国产色综合久久久蜜香臀| 日韩一区二区三区四区| 国产精品妹子av| 日本麻豆一区二区三区视频| 欧美亚洲图片小说| 久久久久久久综合日本| 亚洲成人免费影院| 欧美日韩一区成人| 亚洲伦理在线免费看| 日韩视频在线永久播放| 国产精品亲子伦对白| 国产福利一区二区三区视频在线| 91精品欧美福利在线观看| 亚洲精品国久久99热| 日本精品视频一区二区| 亚洲免费观看高清完整版在线观看| 成人动漫av在线| 国产精品美女一区二区三区| 懂色av噜噜一区二区三区av| 国产精品国产三级国产a| av一区二区三区在线| 亚洲欧美一区二区三区久本道91| 99精品久久免费看蜜臀剧情介绍| 亚洲激情av在线| 欧美区视频在线观看| 麻豆久久久久久| 欧美高清一级片在线观看| 色综合久久久久久久| 午夜免费欧美电影| 日韩一区二区三区免费看| 国产精品996| 亚洲成人黄色影院| 日本一区二区三区国色天香| 色偷偷久久人人79超碰人人澡| 国产精品一区二区你懂的| 色综合久久综合中文综合网| 国产成+人+日韩+欧美+亚洲 | 99视频在线精品| 国产精品538一区二区在线| 青青草原综合久久大伊人精品 | 国产精品三级在线观看| 亚洲精品在线电影| 97se亚洲国产综合自在线不卡 | 毛片一区二区三区| 中文成人av在线| 国产精品色婷婷| 国产色综合一区| 欧美韩国日本不卡| 国产欧美一区在线| 国产欧美一区二区精品性| 日韩精品中文字幕在线一区| 欧美顶级少妇做爰| 欧美三级日韩三级国产三级| 在线观看中文字幕不卡| 色综合久久99| 欧美男女性生活在线直播观看| 欧美亚洲国产一卡| 在线看日本不卡| 欧美变态凌虐bdsm| 久久久99精品免费观看| 日韩精品一区在线观看| 欧美一级欧美三级在线观看| 日韩视频国产视频| 国产午夜精品久久| 日韩国产欧美在线观看| 黑人巨大精品欧美黑白配亚洲| 国产精品羞羞答答xxdd| 欧美色倩网站大全免费| 欧美成人aa大片| 亚洲精选免费视频| 精品一区二区三区的国产在线播放 | 色综合一区二区| 日韩精品中文字幕一区二区三区| 中文字幕+乱码+中文字幕一区| 亚洲少妇屁股交4| 国产综合色视频| 国产午夜精品一区二区三区视频 | 日韩精品91亚洲二区在线观看| 中文字幕视频一区二区三区久| 精品国精品国产| 国产乱对白刺激视频不卡| 精品少妇一区二区三区在线播放| 丝袜美腿高跟呻吟高潮一区| 欧美日韩国产综合一区二区| 亚洲国产一区二区视频| 欧美剧在线免费观看网站 | 综合久久久久综合| 99久久精品国产麻豆演员表| 亚洲色图另类专区| 欧美日韩国产综合久久| 老司机精品视频线观看86| 久久亚洲精精品中文字幕早川悠里 | 午夜伊人狠狠久久| 日韩欧美国产一区二区三区 | 久久一二三国产| k8久久久一区二区三区 | 国产不卡高清在线观看视频| 中文字幕第一区综合| 欧美午夜免费电影| 久久精品国产免费| 老鸭窝一区二区久久精品| 精品伦理精品一区| 91久久香蕉国产日韩欧美9色| 青青草原综合久久大伊人精品优势| 精品国产一区二区亚洲人成毛片| 成熟亚洲日本毛茸茸凸凹| 午夜久久福利影院| 中文字幕亚洲在| 久久久久久久久久久久久女国产乱| 91网站在线播放| 国产成人av电影在线观看| 午夜久久久久久| 亚洲视频 欧洲视频| 久久久www成人免费毛片麻豆 | 综合欧美亚洲日本| 欧美日产在线观看| 国内不卡的二区三区中文字幕| 亚洲色图一区二区| 国产喷白浆一区二区三区| 精品视频全国免费看| 成人sese在线| 国产成人免费在线视频| 免费av成人在线| 亚洲国产精品一区二区久久恐怖片| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩一区二区电影| 99热国产精品| 国产麻豆午夜三级精品| 久久精品国产亚洲a| 亚洲一区免费在线观看| 亚洲婷婷综合久久一本伊一区| 久久久久久久久久看片| 日韩美女视频在线| 日韩视频一区二区三区在线播放| 在线亚洲高清视频| 欧美性生活大片视频| 欧美三级午夜理伦三级中视频| 欧美午夜一区二区三区免费大片| 91碰在线视频| 欧美性生交片4| 欧美日韩精品一区二区三区蜜桃 | 欧美视频在线一区| 欧美无乱码久久久免费午夜一区 | 国产成人一级电影| 成人午夜又粗又硬又大| 91日韩一区二区三区| 欧美在线免费播放| 欧美日韩久久久久久| 欧美日韩亚洲丝袜制服| 久久久久国产精品麻豆ai换脸 | 国产精品美女www爽爽爽| 精品国产区一区| 国产精品的网站| 欧美bbbbb| 91黄色免费网站| 国产日韩欧美不卡| 蜜桃视频第一区免费观看| 成人动漫一区二区在线| 精品理论电影在线| 亚洲国产视频一区二区| a美女胸又www黄视频久久| 日韩三级视频在线观看| 一区二区三区中文字幕电影| 麻豆传媒一区二区三区| 欧美日本韩国一区| 亚洲免费在线观看视频| 成人一区二区在线观看| 欧美成人vr18sexvr| 成人久久久精品乱码一区二区三区| 91蜜桃传媒精品久久久一区二区| 欧美高清精品3d| 亚洲一区二区偷拍精品| 91在线视频免费91| 欧美日韩国产综合一区二区| 精品国产一区二区三区四区四| 国产午夜精品久久|