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

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

?? ga.c

?? <B>Digital的Unix操作系統VAX 4.2源碼</B>
?? C
?? 第 1 頁 / 共 2 頁
字號:
#ifndef lintstatic char *sccsid = "@(#)ga.c	4.5      (ULTRIX)  11/9/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1990 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//************************************************************************ * * Modification History * *   28-Aug-90 Joe Szczypek *      Modified use of osconsole environment variable to comply with new *      DS5000 TURBOchannel.  Multiple output no longer supported by *      console. * *   19-Apr-90 Sam Hsu *	Since pte resource usage is the same whether you map 1 word or *	1024 words, then might as well do the latter and map entire option *	board, so can debug at will, thus rendering HWDEBUG irrelevant to *	this module.  Also saves 1 sms.  Disable watch-paging hooks.  Add *	some wbflush()s in sendPacket when dealing with stic ipdvint reg. * *    5-Apr-90 Paul Jensen *	1) Verify the #else side of HWDEBUG works.  2) Allow the console *	to write to the screen without hanging the server. 3) Map the *	ring buffer into K1.  Cacheing doesn't appear to help getimage *	at all.  This should be revisited if and when the cacheflush() *	syscall works, as it has the ability to invalidate cache entries *	without generating memory requests. ??? XXX * *   19-Mar-90 Sam Hsu *      Add code to watch paging activity (vm_hook and open).  Linkage for *      VDAC reset.  Merge in Paul's changes since BL11 submit.  Add *	_gx_modtype linkage. * *   22-Feb-90 Sam Hsu *	Use kernel text for packet buffers b/c of 2MB STIC addr limit. *	#ifdef'd on GA_ALLOC_{TX|DT|KM} for text, data, km_alloc, resp'ly. * *   12-Feb-90 Paul Jensen *	Use Packet Done interrupts to dispatch STIC packets. * *   05-Feb-90 Sam Hsu *	Poll packetdone intr bit instead of STIC dma register. * *   29-Jan-90 Sam Hsu *	Dynamic debug levels.  gaintr() checks for stic error.  vblank *	and pktdone intrs not used. * *   18-Jan-90 Sam Hsu *	Fix ga_cons_init() - don't PHYS_TO_K1 when looking for whether *	option is configured (kn02where_option()) until after test == 0. *	Use GA_DTYPE instead of GA_DISPLAY. * *   17-Dec-89 Sam Hsu *	Move ga_init_stic() to gx.c.  Ifdef'd HWDEBUG gxInfo->gxo. *	Update call to gx_decode_option().  Add ws_display_* sizer var's. * *   15-Dec-89 Alan Frechette *	Changes to "ws_display_type" and "ws_display_units". * *   15-Dec-89 Paul Jensen *	Merge in Sam Hsu's fixes.  Make sure stic_dma_rb returns the *	correct value. * *   06-Dec-89 Paul Jensen *	Use km_alloc() for getting contiguous memory for the ring buffer. * *   04-Dec-89 Sam Hsu *	Conversion to gx/ga/gq driver modules and Ultrix 4.0-8. * *   21-Sep-89 Paul Jensen *	This is the driver for the 3Max Accelerated 2D graphics *	option.  It is derived from Sam Hsu's 3D driver, pm.c *	Version 1.4. * * $Header: /nfs/kodak/local/4.0-12/io/tc/RCS/ga.c,v 1.27 90/05/07 11:24:53 fhsu Exp $ ************************************************************************/#define _GA_C_#include "../data/gx_data.c"#include "../data/ga_data.c"#undef HWDEBUG/* * Definition of the driver for the auto-configuration program. */int	ga_probe(), ga_attach(), gaintr();int	ga_close(), ga_open(), ga_ioctl();struct	uba_driver gadriver =         { ga_probe, 0, ga_attach, 0, gxstd, "ga", gxinfo };/* * Internal routines. */int ga_config(), ga_init_cons(), ga_cons_init(), ga_vm_hook();int *ga_getPacket();static gaMap	*gao /*= GA_ADDR*/;static int 	gx_priv_size;/****************************************************************** ** ga_probe():                                                  ** ** Routine to see if the graphic device will interrupt.         ** **                                                              ** ******************************************************************/ga_probe(reg){    GX_DEBUG(GX_BLAB,	     gx_puts("gaprobe()\n");	     );    return(1);} /* end gaprobe() *//****************************************************************** ** ga_attach():                                                 ** ** Routine to attach to the graphic device.                     ** **                                                              ** ******************************************************************/ga_attach(reg, unit){    GX_DEBUG(GX_GAB,	     gx_printf("gaattach: gx_priv=0x%x,gxp=0x%x\n",gx_priv,gxp);	     );    /*       *  ga_init_cons() is now called from ga_cons_init()...     */    printf("ga0 ( %d plane %dx%d stamp )\n",	   gxp->nplanes,	   gxp->stamp_width,	   gxp->stamp_height);    /*     * init the "latest mouse report" structure     */    gx_last_rep.state = 0;    gx_last_rep.dx = 0;    gx_last_rep.dy = 0;    gx_last_rep.bytcnt = 0;    gx_keyboard.hold = 0;	/* "Hold Screen" key is pressed if 1 */    if(!gx_inkbdreset)		/* init the keyboard */	gx_kbdreset();} /* end gaattach() *//****************************************************************** **                                                              ** ** Routine to close the graphic device.                         ** **                                                              ** ******************************************************************//*ARGSUSED*/ga_close(dev, flag)    dev_t dev;    int flag;{    register struct tty *tp;    register int unit = minor(dev);    _gx_stic->ipdvint = (_gx_stic->ipdvint | STIC_INT_P_WE) &			     ~(STIC_INT_E_WE | STIC_INT_V_WE |			       STIC_INT_P_EN | STIC_INT_P);    gaVintr_count[unit] = 0;    gaSintr_count[unit] = 0;    gaPintr_count[unit] = 0;    gaEintr_count[unit] = 0;#   if 0#   ifdef p_dev_VM_maint    /* unexpress interest in server's vm activity... */    if (GX_HAVESERVER)    {	gx_serverp->p_dev_VM_maint = 0;	GX_DEBUG(GX_GAB,		 gx_printf("ga_close: pid=%d\n", gx_serverp->p_pid);		 );    }#   endif#   endif 0    return 0;} /* end ga_close() *//****************************************************************** ** ga_ioctl():                                                  ** ** 2DA-specific ioctl routine.                                  ** **                                                              ** ******************************************************************/#define DWN_(X)	(((int)(X)) & ~(CLBYTES-1))#define RND_(X)	DWN_(((int)(X)) + CLBYTES-1)/*ARGSUSED*/ga_ioctl(dev, cmd, data, flag)    dev_t dev;    register caddr_t data;{    int smid, unit;    int tmp1;    register int i;    int poll_addr;	/* "virtual" address of base of STIC poll space */    int rb_phys_addr;	/* phys addr of the ring buffer */    int rb_poll_base;	/* phys address of entry mapping ring buffer */    int rb_poll_off;	/* offset from start of poll space to rb entry */    int serr;    gxInfo *infop;    gxPriv *gap;    switch( cmd )     {     case QIOCGINFO:		     /* return screen info */	/* check for server already done... */	serr = GX_ERR_PRIV;	unit = minor(dev);	/*	 * We can assume that gx_priv is page-aligned, since it must	 * be physically contiguous on the 2DA.	 */	tmp1 = RND_( ((int)gx_priv & (CLBYTES-1)) + gx_priv_size);	GX_DEBUG(GX_GAB,		 gx_printf("gaioctl: gx_priv=0x%x RND=0x%x siz=%d\n",			   gx_priv, RND_(gx_priv), tmp1);		 );	if ((smid = vm_system_smget(DWN_(gx_priv), tmp1, 0600)) < 0) {	    cprintf("gaioctl: smget failed\n");	    goto bad;	}	if ((tmp1 = (int)smat(smid, 0, 0)) < 0) {	    cprintf("gaioctl: smat failed\n");	    goto bad;	}	if (smctl(smid, IPC_RMID, 0))	    goto bad;	gap = (gxPriv *)(tmp1 | ((int)gx_priv & (CLBYTES-1)));	infop = &gx_infos[unit].info;	infop->qe.events = gap->events;	infop->qe.tcs = gap->tcs;	/*infop->curs_bits = gap->cursor;*/	/*infop->colormap = gap->colormap;*/	infop->ptpt_phys = 0;	infop->ptpt_size = 0;	/*	 * The server uses the "physical" address to figure out	 * which address in STIC polling space to read in order to	 * dispatch a packet.  However, the STIC's physical addresses	 * do not map directly onto host physical addresses.  Furthermore,	 * we are not interested in the address of the ucode packet,	 * but rather the embedded STIC packet within.  This is the origin	 * of the mysterious fudge factor of 12.  The physical address	 * points to the start of the ring buffer, but the STIC address	 * points to the first STIC packet in the ring buffer.	 */	rb_phys_addr = svtophy(gx_ringbuffer);	rb_poll_off = GX_SYS_TO_DMA(rb_phys_addr + 12);	infop->rb_phys = GX_SYS_TO_STIC(rb_phys_addr + 12);	/*	 * The address we return to the user in rb_addr	 * must be a kuseg address; however, to derive the physical	 * address, we must use the kseg0 address.	 */	infop->rb_addr = (int *)gap + gx_rboffset;	infop->rb_size = GA_RBUF_SIZE;	GX_DEBUG(GX_YAK,		 gx_printf("gaioctl: Prb=0x%x,Vrb=0x%x,siz=%d,phyadr=0x%x\n",			   infop->rb_phys, infop->rb_addr, infop->rb_size,			   rb_phys_addr);		 );	/*	 * 2DA option board addresses - whole shebang	 */	serr = GX_ERR_GAO;	if((smid=vm_system_smget(DWN_(gao), RND_(sizeof(gaMap)), 0600)) < 0)	    goto bad;	if((tmp1 = (int)smat(smid,0, 0)) < 0)	    goto bad;	if (smctl(smid, IPC_RMID, 0))	    goto bad;	tmp1 |= (int) gao & (CLBYTES-1);	infop->gxo = (char *) tmp1;	infop->gram = (int *)0;		/* meaningless on 2DA */	poll_addr = (int) GA_POLL(tmp1);	infop->stic_dma_rb = (int *)(poll_addr + rb_poll_off);	GX_DEBUG(GX_YAK,		 gx_printf("gaioctl: gao=0x%x,tmp1=0x%x,poll=0x%x\n",			   gao, tmp1, infop->stic_dma_rb);		 );	infop->stic_reg = (int *)GA_STIC(tmp1);#	ifdef notdef	/*	 * Map STIC DMA address space into kuseg.  We only map a single	 * cluster, since we need to span only 96K of main memory	 * (== 48 words of STIC address space);	 */	serr = GX_ERR_POLL;	/* rb_poll_base = kseg address which polls start of ring buffer */	rb_poll_base = (int)(GA_POLL(gao)) + rb_poll_off;	if((smid=vm_system_smget(DWN_(rb_poll_base), CLBYTES, 0600)) < 0)	    goto bad;	if((tmp1 = (int)smat(smid,0, 0)) < 0)	    goto bad;	if (smctl(smid, IPC_RMID, 0))	    goto bad;	tmp1 |= rb_poll_base & (CLBYTES-1);	infop->stic_dma_rb = (int *) tmp1;	/*	 * This is a "fake address" which subtracts the poll offset, to	 * compensate for not mapping the start of poll space, but rather	 * the first page which maps the ring buffer.  This allows the	 * loop cimputing the 'srv_qpoll' addresses to move outside the	 * ifdef.	 */	poll_addr = tmp1 - rb_poll_off;	/*	 * Map STIC control registers into kuseg	 */	serr = GX_ERR_STIC;	if((smid=vm_system_smget(DWN_(GA_STIC(gao)), CLBYTES, 0600)) < 0)	    goto bad;	if((tmp1 = (int)smat(smid,0, 0)) < 0)	    goto bad;	if (smctl(smid, IPC_RMID, 0))	    goto bad;	tmp1 |= (int) GA_STIC(gao) & (CLBYTES-1);	infop->stic_reg = (int *) tmp1;#	endif notdef	/*	 * These addresses are used by the server when it is directly	 * submitting packets to the STIC.	 */	for (i = 0; i < GA_QUEUE_PACKETS; i++) {	    gaComArea->SRV2DCom.srv_qpoll[i] = (int *)((char *)poll_addr +		GX_SYS_TO_DMA(&gaComArea->IntrBuf[i][3]));	}	*(gxInfo **)data =	    gx_infos[unit].shmat =		&(gap->infos[unit].info);	break;     bad:		*(gxInfo **)data = 0;	return (serr);     case QIOWCURSOR:		     /* old calls -> noop */     case QIOSETCMAP:     case QIOWCURSORCOLOR:      {	/* rude hack to invalidate image buffer cache entries */	int *imagebuf = gx_ringbuffer + 0x803 - (1 << 16);	int i;	int sum = 0;	/* line size is 4, so don't read every word */	for (i=0; i<=0x800; i+=4) sum += imagebuf[i];	*(int *)data = 0x6660000 | (sum & 0xfff);      }	break;     default:			     /* not ours ??  */	return GX_ERR_NOOP;    }    return GX_ERR_NONE;} /* end gaioctl() */ga_init_cons(){    gx_setup();     ws_display_type = GA_DTYPE;    ws_display_units = 1;    return;}/* end ga_init_cons() */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美婷婷六月丁香综合色| proumb性欧美在线观看| 久久精品国产精品亚洲综合| 久久精工是国产品牌吗| 国产一区二区三区免费在线观看| 国产精品亚洲人在线观看| 暴力调教一区二区三区| 欧美日本在线视频| 日韩美女视频一区二区| 六月丁香婷婷久久| 欧美色精品天天在线观看视频| 久久中文娱乐网| 五月天精品一区二区三区| 国产乱淫av一区二区三区| 久久久久久久久久久电影| 欧美精品一区二区三区四区 | 91视频在线观看| 日韩亚洲电影在线| 91国产福利在线| 色婷婷综合久久久久中文| 欧美xxxxxxxxx| 亚洲精品ww久久久久久p站| 蜜桃av噜噜一区| 538在线一区二区精品国产| 91精品国产综合久久婷婷香蕉| 国产精品美女久久久久久2018 | 欧美三级日韩在线| 亚洲欧美电影一区二区| av在线不卡电影| 国产网红主播福利一区二区| 日韩精彩视频在线观看| 欧美色视频在线观看| 亚洲女与黑人做爰| 丁香婷婷深情五月亚洲| 国产欧美日产一区| 成人免费电影视频| 337p日本欧洲亚洲大胆色噜噜| 蜜桃久久久久久久| 日韩精品自拍偷拍| 久久国产精品99久久久久久老狼| 欧美一区二区三区喷汁尤物| 亚洲成人1区2区| 欧美一区二区三区婷婷月色| 亚洲乱码国产乱码精品精可以看| 91免费看`日韩一区二区| 一区二区三区免费在线观看| 91福利视频久久久久| 偷窥国产亚洲免费视频| www一区二区| 岛国精品一区二区| 国产精品你懂的在线欣赏| 99久久er热在这里只有精品15 | 99久久精品一区二区| 一区二区三区日韩| 欧美日韩一区二区三区在线看| 亚洲自拍另类综合| 精品理论电影在线| 国产成人福利片| 午夜欧美2019年伦理 | 一区二区三区成人在线视频| 欧美一二三区精品| www.日韩av| 久久成人av少妇免费| 一区二区三区精品在线| 国产午夜亚洲精品午夜鲁丝片| 99久久国产免费看| 国产乱妇无码大片在线观看| 亚洲国产一区二区a毛片| 久久久av毛片精品| 337p亚洲精品色噜噜噜| 色综合激情五月| 成人av一区二区三区| 国内精品视频一区二区三区八戒| 亚洲线精品一区二区三区八戒| 国产欧美日韩在线看| 精品免费99久久| 91精品国产色综合久久ai换脸| 色先锋资源久久综合| 懂色中文一区二区在线播放| 久久精品国产一区二区三区免费看| 亚洲黄色性网站| 中文字幕亚洲综合久久菠萝蜜| 日本一区二区三区久久久久久久久不| 欧美成人a视频| 国产亚洲综合在线| 久久女同性恋中文字幕| 久久久久久黄色| 久久久久国产一区二区三区四区| www日韩大片| 中文字幕中文字幕在线一区| 中文字幕一区二区三区不卡在线| 亚洲欧洲精品成人久久奇米网| 日韩毛片视频在线看| 午夜精品久久久久久久久久久| 人人爽香蕉精品| 国产成人精品免费看| 丁香婷婷综合色啪| 欧美日本在线播放| 国产区在线观看成人精品| 国产精品不卡在线观看| 亚洲午夜视频在线观看| 久久电影国产免费久久电影| 成av人片一区二区| 日韩一区二区精品葵司在线 | 极品少妇一区二区| 成人av电影在线网| 日韩免费性生活视频播放| 成人免费在线视频观看| 国内精品久久久久影院薰衣草| 91一区二区三区在线播放| 久久综合九色综合欧美亚洲| 亚洲一区二区三区美女| 国产美女av一区二区三区| 欧美精品18+| 亚洲国产成人av网| 88在线观看91蜜桃国自产| 一区二区三区日韩欧美精品| 成人一区二区在线观看| 国产日韩av一区二区| 激情六月婷婷久久| 欧美乱妇15p| 美女任你摸久久| 日韩欧美国产精品| 秋霞午夜鲁丝一区二区老狼| 在线观看区一区二| 亚洲午夜免费电影| 91麻豆免费视频| 亚洲靠逼com| 欧美午夜理伦三级在线观看| 国产日韩欧美高清在线| 不卡一区在线观看| 亚洲久草在线视频| 欧美色区777第一页| 精东粉嫩av免费一区二区三区| 26uuu国产日韩综合| 成人在线一区二区三区| 亚洲人123区| 777奇米四色成人影色区| 婷婷综合另类小说色区| 精品美女一区二区三区| 成人av午夜电影| 视频一区二区中文字幕| 久久精品视频在线免费观看| 欧美日韩亚洲高清一区二区| 国产成人欧美日韩在线电影| 亚洲国产中文字幕在线视频综合| 在线播放日韩导航| 99久久精品国产精品久久| 日韩高清在线电影| 久久久久国产精品麻豆ai换脸| 色婷婷狠狠综合| 99久久婷婷国产综合精品电影| 五月婷婷色综合| 亚洲美女区一区| 日本一区二区免费在线| 日韩一级二级三级| 欧美大片一区二区三区| 国产精品综合一区二区三区| 麻豆精品一区二区综合av| 亚洲第一福利一区| 国产精品女同一区二区三区| 久久伊人中文字幕| 日韩一区二区在线看| 欧美三级电影网| 制服丝袜国产精品| 5858s免费视频成人| 欧美高清视频一二三区 | av亚洲精华国产精华| 99久久免费精品| a4yy欧美一区二区三区| 成人丝袜视频网| 99国产欧美另类久久久精品| 波多野结衣在线一区| 国产成人综合网| 91在线码无精品| 欧美嫩在线观看| 91精品国产一区二区三区| 日韩欧美一级二级三级久久久| 欧美v亚洲v综合ⅴ国产v| 日韩色视频在线观看| 国产欧美日韩精品一区| 日韩毛片视频在线看| 亚洲伊人伊色伊影伊综合网| 麻豆成人免费电影| 国产mv日韩mv欧美| 在线观看国产日韩| 精品日韩99亚洲| 国产精品卡一卡二| 性欧美大战久久久久久久久| 国产一区二区三区免费| 91一区在线观看| 91精品免费在线观看| 国产精品高潮呻吟| 久久国产精品99久久久久久老狼 | 一区二区三区中文在线| 激情成人综合网| 精品视频在线免费| 国产三级三级三级精品8ⅰ区| 午夜视频一区二区三区| 色94色欧美sute亚洲线路一久 |