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

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

?? ttydrv.c

?? 大名鼎鼎的嵌入式操作系統vxworks的完整的源代碼
?? C
字號:
/* ttyDrv.c - provide terminal device access to serial channels *//* Copyright 1984-1995 Wind River systems, Inc. *//*modification history--------------------01h,19mar99,cn  added check on pSioChan in ttyDevCreate () (SPR# 25839).01g,06may97,db  added ttyClose and modified ttyOpen to keep track of count of		open paths to device and provide HUPCL modem control. Added		arg flags to ttyOpen for compatibility with iosOpen(SPR #7637).01f,19nov96,ms  FIOBAUDRATE ioctl now returns OK or ERROR (SPR 5487).01e,29oct96,dgp doc: correct spelling per SPR 590401d,20jun95,ms	fixed comments for mangen01c,15jun95,ms	updated for new serial driver01b,21feb95,ms	revised to be generic.01a,29dec94,ms	written.*//*DESCRIPTIONThis library provides the OS-dependent functionality of a serial device,including canonical processing and the interface to the VxWorks I/O system.The BSP provides "raw" serial channels which are accessedvia an SIO_CHAN data structure. These raw devices provide only lowlevel access to the devices to send and receive characters.This library builds on that functionality by allowing theserial channels to be accessed via the VxWorks I/O system usingthe standard read/write interface. It also provides the canonicalprocessing support of tyLib.The routines in this library are typically called by usrRoot()in usrConfig.c to create VxWorks serial devices at system startup time.INCLUDE FILES: ttyLib.hSEE ALSO: tyLib, sioLib.h*/#include "vxWorks.h"#include "iv.h"#include "ioLib.h"#include "iosLib.h"#include "tyLib.h"#include "intLib.h"#include "errnoLib.h"#include "sioLib.h"#include "stdlib.h"/* data types */typedef struct 	/* TYCO_DEV */    {    TY_DEV	tyDev;    SIO_CHAN *	pSioChan;    } TYCO_DEV;/* local variables */static int ttyDrvNum;           /* driver number assigned to this driver *//* forward declarations */LOCAL int    ttyOpen ();LOCAL int    ttyClose (TYCO_DEV *  pTyCoDev); LOCAL STATUS ttyIoctl ();LOCAL void   ttyStartup ();/********************************************************************************* ttyDrv - initialize the tty driver** This routine initializes the tty driver, which is the OS interface* to core serial channel(s). Normally, it is called by usrRoot()* in usrConfig.c.** After this routine is called, ttyDevCreate() is typically called* to bind serial channels to VxWorks devices.** RETURNS: OK, or ERROR if the driver cannot be installed.*/STATUS ttyDrv (void)    {    /* check if driver already installed */    if (ttyDrvNum > 0)        return (OK);    ttyDrvNum = iosDrvInstall (ttyOpen, (FUNCPTR) NULL, ttyOpen,                                ttyClose, tyRead, tyWrite, ttyIoctl);    return (ttyDrvNum == ERROR ? ERROR : OK);    }/********************************************************************************* ttyDevCreate - create a VxWorks device for a serial channel** This routine creates a device on a specified serial channel.  Each channel* to be used should have exactly one device associated with it by calling* this routine.** For instance, to create the device "/tyCo/0", with buffer sizes of 512 bytes,* the proper call would be:* .CS*     ttyDevCreate ("/tyCo/0", pSioChan, 512, 512);* .CE* Where pSioChan is the address of the underlying SIO_CHAN serial channel* descriptor (defined in sioLib.h).* This routine is typically called by usrRoot() in usrConfig.c** RETURNS: OK, or ERROR if the driver is not installed, or the* device already exists.*/STATUS ttyDevCreate    (    char *      name,           /* name to use for this device      */    SIO_CHAN *	pSioChan,	/* pointer to core driver structure */    int         rdBufSize,      /* read buffer size, in bytes       */    int         wrtBufSize      /* write buffer size, in bytes      */    )    {    TYCO_DEV *pTyCoDev;    if (ttyDrvNum <= 0)        {        errnoSet (S_ioLib_NO_DRIVER);        return (ERROR);        }    if (pSioChan == (SIO_CHAN *) ERROR)	{        return (ERROR);	}    /* allocate memory for the device */    if ((pTyCoDev = (TYCO_DEV *) malloc (sizeof (TYCO_DEV))) == NULL)        return (ERROR);    /* initialize the ty descriptor */    if (tyDevInit (&pTyCoDev->tyDev, rdBufSize, wrtBufSize,                   (FUNCPTR) ttyStartup) != OK)        {	free (pTyCoDev);        return (ERROR);        }    /* initialize the SIO_CHAN structure */    pTyCoDev->pSioChan	= pSioChan;    sioCallbackInstall (pSioChan, SIO_CALLBACK_GET_TX_CHAR,			tyITx, (void *)pTyCoDev);    sioCallbackInstall (pSioChan, SIO_CALLBACK_PUT_RCV_CHAR,			tyIRd, (void *)pTyCoDev);    /* start the device cranking */    sioIoctl (pSioChan, SIO_MODE_SET, (void *)SIO_MODE_INT);    /* add the device to the I/O system */    return (iosDevAdd (&pTyCoDev->tyDev.devHdr, name, ttyDrvNum));    }/********************************************************************************* ttyOpen - open a ttyDrv serial device.** Increments a counter that holds the number of open paths to device. */LOCAL int ttyOpen    (    TYCO_DEV *	pTyCoDev,	/* device to control */    char     *	name,		/* device name */    int		flags,		/* flags */    int        	mode		/* mode selected */    )    {    pTyCoDev->tyDev.numOpen++;  /* increment number of open paths */    sioIoctl (pTyCoDev->pSioChan, SIO_OPEN, NULL);    return ((int) pTyCoDev);    }/********************************************************************************* ttyClose - close a ttyDrv serial device.** Decrements the counter of open paths to device and alerts the driver * with an ioctl call when the count reaches zero. This scheme is used to* implement the HUPCL(hang up on last close).      */LOCAL int ttyClose    (    TYCO_DEV *	pTyCoDev	/* device to control */    )    {    if (!(--pTyCoDev->tyDev.numOpen))	sioIoctl (pTyCoDev->pSioChan, SIO_HUP, NULL);    return ((int) pTyCoDev);    }/********************************************************************************* ttyIoctl - special device control** RETURNS: depends on the function invoked.*/LOCAL int ttyIoctl    (    TYCO_DEV *	pTyCoDev,	/* device to control */    int		request,	/* request code */    void *	arg		/* some argument */    )    {    int status;    if (request == FIOBAUDRATE)	return (sioIoctl (pTyCoDev->pSioChan, SIO_BAUD_SET, arg) == OK ?		OK : ERROR);    status = sioIoctl (pTyCoDev->pSioChan, request, arg);    if (status == ENOSYS)	return (tyIoctl (&pTyCoDev->tyDev, request, (int)arg));    return (status);    }/********************************************************************************* ttyStartup - transmitter startup routine** Call interrupt level character output routine.*/LOCAL void ttyStartup    (    TYCO_DEV *pTyCoDev          /* ty device to start up */    )    {    sioTxStartup (pTyCoDev->pSioChan);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产免费久久综合| 亚洲一区二区3| 精品成人佐山爱一区二区| 7777女厕盗摄久久久| 7777精品伊人久久久大香线蕉超级流畅 | 91性感美女视频| 99re视频这里只有精品| 在线免费视频一区二区| 欧美三级资源在线| 精品日韩欧美在线| 精品美女一区二区| 国产精品久久看| 亚洲丰满少妇videoshd| 蜜臀久久99精品久久久久宅男| 亚洲欧美一区二区久久| 亚洲国产精品黑人久久久| 亚洲欧洲制服丝袜| 奇米影视一区二区三区| 激情综合色丁香一区二区| 中文字幕第一区综合| 亚洲国产精品久久久久婷婷884| 免费av网站大全久久| 国产91清纯白嫩初高中在线观看 | 亚洲午夜激情av| 美女视频免费一区| 成人黄色一级视频| 欧美欧美午夜aⅴ在线观看| 久久久综合视频| 一区二区三区色| 国产在线精品免费| 在线观看欧美黄色| www激情久久| 一区二区免费看| 国内精品伊人久久久久影院对白| 91毛片在线观看| 久久久久久一二三区| 亚洲国产毛片aaaaa无费看| 国产成人亚洲综合色影视| 欧美日韩国产综合视频在线观看| 国产欧美综合在线观看第十页| 亚洲成人免费看| 成人免费视频免费观看| 欧美日韩国产首页在线观看| 国产欧美日韩视频一区二区| 一区二区三区在线高清| 韩国成人精品a∨在线观看| 91国产丝袜在线播放| 亚洲国产精品精华液ab| 久久99在线观看| 欧美群妇大交群的观看方式| 国产精品白丝在线| 国产美女在线观看一区| 欧美精品 日韩| 亚洲男人电影天堂| youjizz国产精品| 日本一区二区高清| 国产毛片一区二区| 欧美va在线播放| 毛片一区二区三区| 欧美精品在线视频| 一区二区三区欧美| 色综合视频一区二区三区高清| 久久久久久久久久久99999| 日本sm残虐另类| 欧美一区二区三区白人| 日韩av电影免费观看高清完整版| 成人av一区二区三区| 日韩视频国产视频| 免费国产亚洲视频| 91麻豆精品国产综合久久久久久| 亚洲电影欧美电影有声小说| 在线免费观看日本一区| 亚洲综合色丁香婷婷六月图片| 色综合久久天天| 亚洲精品国产第一综合99久久 | 韩国精品主播一区二区在线观看 | 精品一区二区在线播放| 欧美xxx久久| 国产在线播放一区二区三区| 久久一区二区视频| 国产成a人无v码亚洲福利| 中文字幕一区视频| 在线观看亚洲一区| 日韩电影在线一区二区| 久久婷婷久久一区二区三区| 懂色av中文字幕一区二区三区| 中文一区二区在线观看| 色国产综合视频| 日本不卡1234视频| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美国产97人人爽人人喊| 国产成人亚洲综合a∨婷婷| 日韩欧美电影在线| 成人一区二区三区| 亚洲国产精品久久久久秋霞影院 | 欧美激情一区二区在线| 日本精品视频一区二区| 美女在线一区二区| 国产精品少妇自拍| 欧美日本一区二区三区四区| 国产精一品亚洲二区在线视频| 亚洲色图在线视频| 3d动漫精品啪啪| 精品亚洲成a人| 亚洲欧美偷拍三级| 欧美mv日韩mv国产网站| 狠狠色丁香婷婷综合| 亚洲欧美偷拍卡通变态| 日韩久久久久久| 91高清视频免费看| 麻豆91在线观看| 一区二区三区在线视频观看 | 99久久国产综合精品女不卡| 日韩av在线播放中文字幕| 久久久久久久久一| 欧美精品在线一区二区三区| 大桥未久av一区二区三区中文| 亚洲v日本v欧美v久久精品| 久久久国产午夜精品| 一本久久综合亚洲鲁鲁五月天| 日韩国产精品久久久久久亚洲| 国产日产欧美一区二区三区| 欧美精品亚洲二区| 99re在线精品| 国产精品综合二区| 午夜激情一区二区| 久久综合九色综合97婷婷女人 | 成人高清视频在线观看| 美腿丝袜亚洲三区| 午夜精品久久久久久久久| 中日韩免费视频中文字幕| 日韩一区二区在线播放| 欧美在线一区二区| 色老汉一区二区三区| 国产毛片一区二区| 蜜臀av一区二区在线观看| 亚洲国产你懂的| 一区二区三区小说| 亚洲天堂2014| 日韩欧美国产一区二区在线播放| 在线观看日韩毛片| 99国产一区二区三精品乱码| 国产一二三精品| 国产在线国偷精品免费看| 视频在线观看一区| 一个色在线综合| 亚洲日本va在线观看| 国产精品全国免费观看高清| 国产肉丝袜一区二区| 亚洲精品一区二区三区99| 欧美成人一区二区三区在线观看| 7777精品伊人久久久大香线蕉| 欧美三级中文字幕在线观看| 色94色欧美sute亚洲线路一久| 成人精品一区二区三区四区| 不卡av电影在线播放| 99精品在线免费| 欧洲精品中文字幕| 欧美视频在线一区| 制服视频三区第一页精品| 欧美大尺度电影在线| 久久欧美中文字幕| 国产精品电影一区二区| 亚洲视频 欧洲视频| 亚洲午夜在线电影| 麻豆91精品91久久久的内涵| 国内精品伊人久久久久影院对白| 懂色av一区二区三区免费观看| 99re成人精品视频| 欧美人与禽zozo性伦| 久久先锋资源网| 久久亚洲精精品中文字幕早川悠里| 欧美国产精品v| 一区二区三区不卡视频| 美女在线观看视频一区二区| 国产成人亚洲综合a∨猫咪| 色94色欧美sute亚洲13| 欧美变态口味重另类| 国产精品视频九色porn| 婷婷亚洲久悠悠色悠在线播放| 极品美女销魂一区二区三区| 91亚洲国产成人精品一区二区三 | 欧美色国产精品| 精品久久久网站| 亚洲男人天堂一区| 精品在线亚洲视频| 91官网在线免费观看| 久久欧美中文字幕| 亚洲成人一二三| 成人激情小说网站| 日韩亚洲欧美在线观看| 亚洲欧美二区三区| 国产裸体歌舞团一区二区| 欧美午夜不卡在线观看免费| 国产丝袜美腿一区二区三区| 亚洲一级二级在线| 成人免费高清视频| 精品少妇一区二区| 偷拍亚洲欧洲综合| 色综合天天综合网天天看片|