亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久日一线二线三线suv| 91免费在线看| 成人激情视频网站| 色老汉av一区二区三区| 精品少妇一区二区三区在线视频| 中文字幕一区免费在线观看| 日韩国产高清影视| 91亚洲精品久久久蜜桃| 久久久久国色av免费看影院| 亚洲午夜电影网| 国产很黄免费观看久久| 欧美日本乱大交xxxxx| 中文字幕日韩一区| 激情国产一区二区| 欧美日韩大陆一区二区| 国产精品网站导航| 另类人妖一区二区av| 欧美在线视频你懂得| 国产精品区一区二区三| 国产一区高清在线| 欧美一级二级三级乱码| 午夜精品爽啪视频| 色综合色综合色综合色综合色综合| 久久精品亚洲乱码伦伦中文| 久久精品国产亚洲高清剧情介绍| 欧美日韩一区二区三区高清| 最好看的中文字幕久久| 成人在线一区二区三区| 精品久久久久久久久久久久包黑料 | 日韩在线播放一区二区| 色欧美片视频在线观看 | 日韩美女一区二区三区四区| 亚洲午夜免费电影| 欧美色电影在线| 亚洲国产精品久久艾草纯爱| 欧美天天综合网| 亚洲二区在线视频| 337p亚洲精品色噜噜噜| 青草av.久久免费一区| 91精品国产综合久久久久久久久久 | 国产激情一区二区三区桃花岛亚洲 | 国产女人水真多18毛片18精品视频| 国产一区福利在线| 久久久久97国产精华液好用吗| 国产一区免费电影| 国产精品色在线| 日本久久精品电影| 亚洲大片精品永久免费| 欧美日韩一本到| 青青青爽久久午夜综合久久午夜| 91精品一区二区三区久久久久久| 麻豆视频一区二区| 久久人人97超碰com| 成人精品一区二区三区四区| 日本一区二区免费在线观看视频| 成人av网站免费观看| 亚洲女同女同女同女同女同69| 在线免费亚洲电影| 免费视频最近日韩| 国产日产欧美一区二区三区 | 国产精品精品国产色婷婷| 不卡电影一区二区三区| 亚洲高清久久久| 久久女同精品一区二区| 成人综合婷婷国产精品久久免费| 亚洲精品中文字幕在线观看| 欧美丰满一区二区免费视频| 国产精品影音先锋| 亚洲图片一区二区| 欧美精品一区二区不卡| 91视视频在线观看入口直接观看www | 91视频在线看| 精品在线观看免费| 自拍偷拍欧美激情| 日韩三级.com| 99久久精品免费看| 蜜桃免费网站一区二区三区| 国产精品乱码一区二区三区软件| 欧美视频一区二区| 国产 欧美在线| 五月婷婷激情综合| 国产精品三级电影| 欧美一级淫片007| av高清不卡在线| 久久国产精品色| 香蕉av福利精品导航| 中文字幕乱码亚洲精品一区| 91麻豆精品国产综合久久久久久| 国产成a人亚洲| 日本欧美加勒比视频| 亚洲男人都懂的| 国产视频在线观看一区二区三区| 欧洲在线/亚洲| 成人av网站在线观看免费| 精品在线亚洲视频| 日本亚洲三级在线| 亚洲自拍偷拍九九九| 久久久国产精品不卡| 91精品国产91久久综合桃花| 在线精品视频一区二区三四| 成人免费不卡视频| 国产久卡久卡久卡久卡视频精品| 亚洲成人免费视| 夜夜操天天操亚洲| 日韩码欧中文字| 国产精品久久影院| 国产日韩欧美综合在线| 2023国产精华国产精品| 欧美一二三区在线观看| 欧美最新大片在线看| 91日韩精品一区| www.色精品| voyeur盗摄精品| 99久久精品免费看国产免费软件| 成人亚洲一区二区一| 成人av动漫网站| 成人精品视频.| bt7086福利一区国产| 大胆亚洲人体视频| 99re在线视频这里只有精品| 成人性生交大片免费看视频在线| 国产精品1区2区| 成人性生交大片免费看中文| 国产 欧美在线| 9色porny自拍视频一区二区| av在线综合网| 色婷婷综合久久久中文字幕| 91丨九色丨黑人外教| 欧美日韩中文一区| 欧美人与禽zozo性伦| 欧美另类一区二区三区| 日韩欧美一区在线| 久久精品综合网| 亚洲欧美日韩中文字幕一区二区三区| 最新日韩在线视频| 一区二区久久久| 蜜臀av国产精品久久久久| 国产剧情一区在线| 色婷婷综合久久久中文一区二区| 欧美日韩在线观看一区二区| 欧美一区二区免费观在线| 精品对白一区国产伦| 中文字幕一区二区三区四区| 亚洲国产你懂的| 国产一区二区在线观看免费| 91丨porny丨最新| 日韩欧美亚洲国产另类| 欧美激情资源网| 亚洲1区2区3区视频| 激情六月婷婷综合| 色欲综合视频天天天| 欧美大片国产精品| 亚洲免费高清视频在线| 日本欧美在线看| 高清shemale亚洲人妖| 91福利国产精品| 欧美va亚洲va| 亚洲欧美日韩国产手机在线| 亚洲成国产人片在线观看| 理论片日本一区| 91看片淫黄大片一级在线观看| 欧美日韩中文字幕一区二区| 精品伊人久久久久7777人| 99re这里都是精品| 欧美肥妇毛茸茸| 久久久久久久精| 精品美女在线观看| 亚洲一级片在线观看| 精品一区二区三区免费| 99久久精品99国产精品| 欧美日韩你懂得| 亚洲精品一区二区三区福利| 国产精品热久久久久夜色精品三区| 亚洲视频每日更新| 日本亚洲最大的色成网站www| 岛国av在线一区| 欧美一区二区三区不卡| 欧美国产视频在线| 狠狠色伊人亚洲综合成人| 色综合天天在线| 久久影音资源网| 一色桃子久久精品亚洲| 国产一区二区三区四区五区美女| 色视频一区二区| 国产精品毛片久久久久久| 极品少妇xxxx偷拍精品少妇| 在线视频国内一区二区| 国产精品久久久久一区| 激情久久五月天| 欧美一级在线视频| 亚洲制服丝袜av| 91老师国产黑色丝袜在线| 国产亚洲欧美日韩日本| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产不卡高清在线观看视频| 久久久久国产精品人| 日本美女视频一区二区| 精品视频999| 日日摸夜夜添夜夜添精品视频| 成人app网站|