亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人综合婷婷国产精品久久| 97久久人人超碰| 精品免费日韩av| 丁香亚洲综合激情啪啪综合| 国产欧美一区二区三区在线看蜜臀| 久久国产精品一区二区| 国产精品毛片无遮挡高清| 99re66热这里只有精品3直播| 免费精品视频在线| 亚洲乱码日产精品bd| 成人18视频在线播放| 国产亚洲一二三区| 精品日韩一区二区三区| 成人av网址在线观看| 亚洲欧洲精品成人久久奇米网| 99久久精品国产导航| 香港成人在线视频| 亚洲精品中文在线| 国产精品欧美综合在线| 久久蜜桃av一区精品变态类天堂 | 日韩一区国产二区欧美三区| 丁香激情综合国产| 麻豆一区二区99久久久久| 亚洲日本va在线观看| 国产精品视频麻豆| 国产精品视频你懂的| 一区二区三区在线免费观看| 欧美电视剧免费全集观看| 色网站国产精品| 不卡视频一二三| 成人亚洲一区二区一| 波多野结衣亚洲一区| 盗摄精品av一区二区三区| 激情综合网激情| 高清国产午夜精品久久久久久| 成人激情综合网站| 欧美性色黄大片| 日韩一级大片在线| 在线播放91灌醉迷j高跟美女 | 欧美一区二区国产| 久久精品夜夜夜夜久久| 18成人在线观看| 天天免费综合色| 国产成+人+日韩+欧美+亚洲 | 丝袜美腿亚洲色图| 精品一区二区国语对白| 成人午夜在线免费| 91麻豆精品久久久久蜜臀 | 日韩免费观看2025年上映的电影| 欧美精品日韩一区| 精品国产麻豆免费人成网站| 亚洲天堂中文字幕| 午夜视频在线观看一区二区三区| 日本亚洲最大的色成网站www| 韩国av一区二区三区| 91女人视频在线观看| 91精品欧美福利在线观看| 日韩美女视频在线| 亚洲欧洲成人精品av97| 久久99精品久久久久| 色呦呦国产精品| 久久久久久久久久看片| 日本亚洲欧美天堂免费| 91网站最新网址| 日本一区二区三区四区| 久久机这里只有精品| 欧美一区二区在线播放| 亚洲无人区一区| 欧美午夜片在线看| 一区二区三区四区中文字幕| av中文一区二区三区| 亚洲天堂成人在线观看| 91极品视觉盛宴| 午夜精品久久一牛影视| 一本色道久久综合狠狠躁的推荐| 国产亚洲欧美一级| 成人av电影在线观看| 中文字幕在线观看一区| 成人avav在线| 亚洲综合区在线| 3d成人h动漫网站入口| 欧美日韩一区精品| 亚洲欧美电影一区二区| 欧美午夜电影在线播放| 奇米亚洲午夜久久精品| 天堂av在线一区| 久久久精品tv| 色8久久精品久久久久久蜜| 国产精品一二三在| 亚洲天堂精品视频| 国产亚洲欧洲997久久综合| 欧美三级日韩三级| 99在线热播精品免费| 久久精品国产一区二区三区免费看| 日韩一区中文字幕| 日韩欧美国产成人一区二区| 色一区在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 国产91丝袜在线18| 三级不卡在线观看| 亚洲日穴在线视频| 国产精品久久久久久久久晋中 | 伊人婷婷欧美激情| www亚洲一区| 欧美亚洲综合另类| av午夜一区麻豆| 一区二区三区四区精品在线视频| 久久五月婷婷丁香社区| 在线免费精品视频| 在线视频亚洲一区| 91久久精品网| 在线看日本不卡| 色欧美乱欧美15图片| 91免费在线看| 91精品中文字幕一区二区三区| 色8久久精品久久久久久蜜| 国产精品亚洲成人| 国内精品久久久久影院一蜜桃| 国产很黄免费观看久久| 亚洲综合精品久久| 亚洲国产精品ⅴa在线观看| 日韩欧美国产一区二区三区 | 色婷婷国产精品久久包臀| www.日韩大片| 国产盗摄精品一区二区三区在线 | 国产精品萝li| 国产精品另类一区| 免费日韩伦理电影| 亚洲另类一区二区| 亚洲最大成人网4388xx| 亚洲五码中文字幕| 国产毛片精品视频| 欧美亚洲免费在线一区| av在线综合网| 日韩欧美在线一区二区三区| 国产成人午夜视频| gogogo免费视频观看亚洲一| eeuss国产一区二区三区| 欧美性色aⅴ视频一区日韩精品| 欧美日韩另类一区| 日韩欧美aaaaaa| 亚洲色图丝袜美腿| 麻豆久久一区二区| 91伊人久久大香线蕉| 日韩精品一区国产麻豆| 亚洲一区二区三区在线| 偷窥少妇高潮呻吟av久久免费| 国产毛片精品视频| 久久先锋影音av| 中文字幕日韩av资源站| 久久精品国产99久久6| 久久99国产精品成人| 色94色欧美sute亚洲线路一ni| 欧美日韩视频在线一区二区 | 一区二区三区日韩精品| 免费高清视频精品| jvid福利写真一区二区三区| 久久影院视频免费| 日韩成人精品在线观看| 91久久精品午夜一区二区| 一区二区久久久久久| 成人一区二区视频| 国产日韩成人精品| 国产乱码字幕精品高清av| 久久久久国产成人精品亚洲午夜| 久久色在线观看| 91女厕偷拍女厕偷拍高清| 一区二区在线观看免费视频播放| 91啪亚洲精品| 国产精品综合一区二区| 综合久久一区二区三区| 欧美专区亚洲专区| 天堂va蜜桃一区二区三区| 久久久久久久综合| 欧美一区二区三区在线看| 亚洲成人免费影院| 亚洲欧洲国产日本综合| 91精品国模一区二区三区| 激情成人综合网| 久久久www免费人成精品| 国产做a爰片久久毛片| 日韩电影在线看| 欧美v亚洲v综合ⅴ国产v| 6080日韩午夜伦伦午夜伦| 福利一区在线观看| 另类小说欧美激情| 奇米综合一区二区三区精品视频| 亚洲欧洲www| 中文字幕一区二区三区不卡在线| 91精品国产色综合久久久蜜香臀| 成人深夜在线观看| 激情综合色播五月| 亚洲一区二区三区四区在线免费观看 | 久久99这里只有精品| 肉丝袜脚交视频一区二区| 中文字幕一区二区三区色视频| 一区二区三区91| 亚洲精选视频免费看| 亚洲成人手机在线| 麻豆久久久久久久|