当前位置:  技术问答>linux和unix

100分超菜问题,请达人不吝赐教,不胜感激!

    来源: 互联网  发布时间:2015-10-14

    本文导语:  extern int cfsetispeed ( struct termios *, speed_t ); extern int cfsetospeed ( struct termios *, speed_t ); 的函数原型,告诉我在linux 源码的哪个目录下的哪个文件里,或者把这个函数全部贴出来 困绕了两天,确实太笨,在线...

extern int cfsetispeed ( struct termios *, speed_t );
extern int cfsetospeed ( struct termios *, speed_t );

的函数原型,告诉我在linux 源码的哪个目录下的哪个文件里,或者把这个函数全部贴出来


困绕了两天,确实太笨,在线急盼!

|
/usr/src/lib/libc/port/gen/cfsetospeed.c

      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License, Version 1.0 only
      6  * (the "License").  You may not use this file except in compliance
      7  * with the License.
      8  *
      9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10  * or http://www.opensolaris.org/os/licensing.
     11  * See the License for the specific language governing permissions
     12  * and limitations under the License.
     13  *
     14  * When distributing Covered Code, include this CDDL HEADER in each
     15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16  * If applicable, add the following below this CDDL HEADER, with the
     17  * fields enclosed by brackets "[]" replaced with your own identifying
     18  * information: Portions Copyright [yyyy] [name of copyright owner]
     19  *
     20  * CDDL HEADER END
     21  */
     22 /*
     23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  */
     26 
     27 #pragma ident "@(#)cfsetospeed.c 1.12 05/06/08 SMI"
     28 
     29 /* Copyright (c) 1988 AT&T */
     30 /*   All Rights Reserved   */
     31 
     32 
     33 #pragma weak cfsetospeed = _cfsetospeed
     34 #include "synonyms.h"
     35 #include 
     36 #include 
     37 
     38 /*
     39  * sets the output baud rate stored in c_cflag to speed
     40  */
     41 
     42 int
     43 cfsetospeed(struct termios *termios_p, speed_t speed)
     44 {
     45  if (speed > CBAUD) {
     46  termios_p->c_cflag |= CBAUDEXT;
     47  speed -= (CBAUD + 1);
     48  } else
     49  termios_p->c_cflag &= ~CBAUDEXT;
     50 
     51  termios_p->c_cflag =
     52      (termios_p->c_cflag & ~CBAUD) | (speed & CBAUD);
     53  return (0);

|
extern int cfsetispeed ( struct termios *, speed_t );
extern int cfsetospeed ( struct termios *, speed_t );

这两个函数由 posix 定义,恐怕要找具体实现的操作系统。
linux 中由glibcsysdepsunixsysvlinuxspeed.c 定义

/* `struct termios' speed frobnication functions.  Linux version.
   Copyright (C) 1991,1992,1993,1995,1996,1997,1998,2000,2002,2003
Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#include 
#include 
#include 


/* This is a gross hack around a kernel bug.  If the cfsetispeed functions
   is called with the SPEED argument set to zero this means use the same
   speed as for output.  But we don't have independent input and output
   speeds and therefore cannot record this.

   We use an unused bit in the `c_iflag' field to keep track of this
   use of `cfsetispeed'.  The value here must correspond to the one used
   in `tcsetattr.c'.  */
#define IBAUD0 020000000000


/* Return the output baud rate stored in *TERMIOS_P.  */
speed_t
cfgetospeed (termios_p)
     const struct termios *termios_p;
{
  return termios_p->c_cflag & (CBAUD | CBAUDEX);
}

/* Return the input baud rate stored in *TERMIOS_P.
   Although for Linux there is no difference between input and output
   speed, the numerical 0 is a special case for the input baud rate. It
   should set the input baud rate to the output baud rate. */
speed_t
cfgetispeed (termios_p)
     const struct termios *termios_p;
{
  return ((termios_p->c_iflag & IBAUD0)
  ? 0 : termios_p->c_cflag & (CBAUD | CBAUDEX));
}

/* Set the output baud rate stored in *TERMIOS_P to SPEED.  */
int
cfsetospeed  (termios_p, speed)
     struct termios *termios_p;
     speed_t speed;
{
  if ((speed & ~CBAUD) != 0
      && (speed  __MAX_BAUD))
    {
      __set_errno (EINVAL);
      return -1;
    }

#ifdef _HAVE_STRUCT_TERMIOS_C_OSPEED
  termios_p->c_ospeed = speed;
#endif
  termios_p->c_cflag &= ~(CBAUD | CBAUDEX);
  termios_p->c_cflag |= speed;

  return 0;
}
libc_hidden_def (cfsetospeed)


/* Set the input baud rate stored in *TERMIOS_P to SPEED.
   Although for Linux there is no difference between input and output
   speed, the numerical 0 is a special case for the input baud rate.  It
   should set the input baud rate to the output baud rate.  */
int
cfsetispeed (termios_p, speed)
     struct termios *termios_p;
     speed_t speed;
{
  if ((speed & ~CBAUD) != 0
      && (speed  __MAX_BAUD))
    {
      __set_errno (EINVAL);
      return -1;
    }

#ifdef _HAVE_STRUCT_TERMIOS_C_ISPEED
  termios_p->c_ispeed = speed;
#endif
  if (speed == 0)
    termios_p->c_iflag |= IBAUD0;
  else
    {
      termios_p->c_iflag &= ~IBAUD0;
      termios_p->c_cflag &= ~(CBAUD | CBAUDEX);
      termios_p->c_cflag |= speed;
    }

  return 0;
}
libc_hidden_def (cfsetispeed)

    
 
 

您可能感兴趣的文章:

  • 请教菜鸟问题 libpcap达人路过看看
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • tcp连接的问题,达人请进
  • 内核启动中断问题,急求达人指点
  • 求达人指教: 很简单的linux脚本,可是就是找不到问题在哪
  • 达人帮忙,9.0中关于xmms的问题,谢谢了
  • 关于多道操作系统实现的一个问题,各位达人指教~~~谢谢
  • 编译共享链接库的问题,请达人指点
  • 达人进来解决一下C++中CTime类中出现的一些问题 急急急
  • 关于2410上IIC的实现问题,哪位达人帮忙看下
  • 进程控制问题,求达人指教
  • java GUI 达人乱入!!!我用Jb7将application打包成exe文件,运行没有问题,但是中文全变成口口口口, 求助!!!
  • 系统更新时候出现的问题,请达人指点,跪谢阿
  • Think in Patterns问题求解一,设计模式达人入
  • fedora 12 nfs问题 请各位达人指点,在线等,多谢!
  • 重新编译Mysql时出现问题,请教达人
  • 关于GCC安装的一个问题,跪求达人解答!
  • 小弟在学习LINUX程序设计时遇到有关wait和waitpid的问题,请各位达人帮忙,不胜感激。
  • Linux Shell 的小问题 (高分请教达人)
  • 关于摄像头的v4l模块的问题,请不吝赐教!
  • 一个关于日期的问题!(菜鸟问题,请高手不吝赐教)
  • 4.4BSD源码问题!问题菜一点,还请不吝指教。
  • 如何实现一个图片下拉列表的问题,请各位大侠不吝赐教,谢谢!!!
  • jquery iis7站长之家
  • 菜鸟级的问题,请不吝赐教!
  • 各位好,有一个关于java日期的问题请教,请不吝赐教。
  • 一个和启动有关的小问题,望不吝赐教
  • 问个很水的问题,望不吝赐教!
  • 新手请教一个比较白痴的问题,还请各位不吝赐教!
  • 散分,菜鸟问题,路过的不吝赐教吧,谢谢!
  • 最最最初级的问题,希望各位不吝赐教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于驱动模块和中文的问题,问题比较傻,还望大家赐教
  • Tomcat问题,请赐教!!!
  • redhat9下网页中页面显示的问题,敬请赐教~~~
  • 菜鸟问个多线程编程的问题,请各位大大赐教!
  • 请教有关Solaris上NameService的问题,望高手赐教
  • 有两个问题一直没有解决,请高手赐教
  • 问个问题,希望大家赐教~~~
  • 我是新手,好多问题,请赐教!
  • 关于数据库连接池的问题,请各位赐教!
  • 菜鸟偶个问题 希望各位赐教
  • 一个关于上网的问题,请各位大虾赐教!!
  • 初级问题请高手赐教
  • 请问大家一个问题!mysql的!盼赐教!
  • wu-ftp的问题!请赐教!
  • 一个FreeBSD的网卡问题,望高手赐教!
  • linux的初级问题,请各位赐教,小弟是新手!
  • Linux安装怎么会有这中问题,请高手赐教!
  • 有谁在linux串口下用ESCPOS指令控制打印机打印,碰到问题,请赐教
  • 各位大侠,小弟有问题,请赐教!
  • 关于AIX su命令的一个问题!望高手赐教!
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 简单问题简单问题简单问题简单问题
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 小问题,急问题,重大问题!!!
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • 八个问题帮你快速了解Docker
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • nginx Windows版相关问题及使用说明


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3