精华内容
下载资源
问答
  • 2019-04-23 18:47:16

             tty_insert_flip_string(porty, (u8 *)rx_buf, i);
             tty_flip_buffer_push(porty); 

     

    -->

    void tty_flip_buffer_push(struct tty_port *port)
    {
            tty_schedule_flip(port);                                                                                                                                                                            
    }

     

    -->

    void tty_schedule_flip(struct tty_port *port)
    {
            struct tty_bufhead *buf = &port->buf;

            /* paired w/ acquire in flush_to_ldisc(); ensures
             * flush_to_ldisc() sees buffer data.
             */
            smp_store_release(&buf->tail->commit, buf->tail->used);
            queue_work(system_unbound_wq,  &buf->work);                                                                                                                                                          
    }

     

    ---------------------------------------------------------------------------->

    INIT_WORK(&buf->work, flush_to_ldisc);

     

    -->

    static void flush_to_ldisc(struct work_struct *work)
    {

    count = receive_buf(disc, head, count);

    }

     

    -->

    static int
    receive_buf(struct tty_ldisc *ld, struct tty_buffer *head, int count)                                                                                                                                       
    {
            unsigned char *p = char_buf_ptr(head, head->read);
            char          *f = NULL;

            if (~head->flags & TTYB_NORMAL)
                    f = flag_buf_ptr(head, head->read);

            return tty_ldisc_receive_buf(ld, p, f, count);
    }

    -->

    int tty_ldisc_receive_buf(struct tty_ldisc *ld, unsigned char *p,
                              char *f, int count)
    {                       
            if (ld->ops->receive_buf2)
                    count = ld->ops->receive_buf2(ld->tty, p, f, count);
            else {          
                    count = min_t(int, count, ld->tty->receive_room);
                    if (count && ld->ops->receive_buf)
                            ld->ops->receive_buf(ld->tty, p, f, count);
            }
            return count;
    }

    -->

    2441 static struct tty_ldisc_ops n_tty_ops = {
    2442         .magic           = TTY_LDISC_MAGIC,
    2443         .name            = "n_tty",
    2444         .open            = n_tty_open,
    2445         .close           = n_tty_close,
    2446         .flush_buffer    = n_tty_flush_buffer,
    2447         .read            = n_tty_read,
    2448         .write           = n_tty_write,
    2449         .ioctl           = n_tty_ioctl,
    2450         .set_termios     = n_tty_set_termios,
    2451         .poll            = n_tty_poll,
    2452         .receive_buf     =  n_tty_receive_buf,                                                                                                                                                          
    2453         .write_wakeup    = n_tty_write_wakeup,
    2454         .receive_buf2    = n_tty_receive_buf2,
    2455 };


    -->

    static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,                                                                                                                              
                                  char *fp, int count)
    {
            n_tty_receive_buf_common(tty, cp, fp, count, 0);
    }

    --->

    static void __receive_buf(struct tty_struct *tty, const unsigned char *cp,
                              char *fp, int count)
    {
            struct n_tty_data *ldata = tty->disc_data;
            bool preops = I_ISTRIP(tty) || (I_IUCLC(tty) && L_IEXTEN(tty));

            if (ldata->real_raw)
                    n_tty_receive_buf_real_raw(tty, cp, fp, count);
            else if (ldata->raw || (L_EXTPROC(tty) && !preops))
                    n_tty_receive_buf_raw(tty, cp, fp, count);


    -->

     

    static void
    n_tty_receive_buf_real_raw(struct tty_struct *tty, const unsigned char *cp,
                               char *fp, int count)
    {
            struct n_tty_data *ldata = tty->disc_data;
            size_t n, head;
            
            head = ldata->read_head & (N_TTY_BUF_SIZE - 1);
            n = min_t(size_t, count, N_TTY_BUF_SIZE - head);
            memcpy(read_buf_addr(ldata, head), cp, n);
            ldata->read_head += n;
            cp += n;
            count -= n;
            
            head = ldata->read_head & (N_TTY_BUF_SIZE - 1);
            n = min_t(size_t, count, N_TTY_BUF_SIZE - head);
            memcpy(read_buf_addr(ldata, head), cp, n);
            ldata->read_head += n;
    }

     

    更多相关内容
  • 概述Linux TTY/PTS的区别

    2020-09-14 21:42:45
    主要介绍了概述Linux TTY/PTS的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了Shell脚本实现关闭多余的tty终端,本文脚本适用centos6系统,请根据自己的服务器系统情况选择使用,需要的朋友可以参考下
  • TTY :: ProgressBar 灵活而可扩展的进度条,适用于终端应用程序。 TTY :: ProgressBar为工具箱提供独立的进度条组件。 产品特点 可定制从许多选项中进行选择,以获取所需的行为。 灵活。 描述条形并从许多预定义...
  • 集装箱网TTY 厌倦了键入docker ps | grep xxx docker ps | grep xxx && docker exec -ti xxxx sh ? 试试我! 尽管我喜欢终端,但我仍然希望有一个更好的工具进入容器以进行一些调试或检查。 所以我建立了这个...
  • Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,...
  • TTY ::表 灵活直观的表格格式。 TTY :: Table为工具包提供了独立的表格格式组件。 特征 表的行为类似于具有熟悉的API的数组, 一次创建表格并使用自定义视图渲染器进行渲染, 渲染提供了许多显示选项, 轻松自定义...
  • tty分享 是一个非常简单的工具,用于通过Internet共享Linux / OSX终端。 它是用GO编写的,会生成没有依赖性的静态跨平台二进制文件,因此也可以在您的Raspberry Pi上使用。 远程参与者不需要设置,他们可以从浏览器...
  • linux虚拟tty驱动(kernel4.9版本以上),可产生多个tty串口设备于/dev/下,本人在Hi3516上交叉编译并应用,实现多个虚拟串口同时控制一个实际串口的操作
  • notty是一个命令行工具,用于将进程与 tty 分离。 要求 编译器(gcc、clang 等) OS X(在 10.10 上测试) 指示 make make install 关于 该代码最初来自 ,只做了一些小修复即可在 OS X 上运行。
  • TTY ::提示 漂亮而强大的交互式命令行提示符。 TTY :: Prompt为工具包提供了独立的提示组件。 产品特点 收集用户输入的提示类型数 用于验证复杂输入的强大API 用户友好的错误反馈 直观的DSL,用于创建复杂的菜单 ...
  • tty是 Teletype(电传打字机)的缩写,电传打字机是最早出现的一种终端设备,现在通常使用 TTY 来统称各种类型的终端设备,如键盘 、打印机 、显示器等。 pty(虚拟终端): 如果我们远程telnet到主机或使用xterm时,...
  • 计算机控制工程,TTY接受程序计算机控制工程,TTY接受程序计算机控制工程,TTY接受程序
  • TTY :: Config 定义,读取和编写任何Ruby应用程序配置,并带有终端客户端的喜好。 TTY :: Config为工具箱提供了应用程序配置组件。 产品特点 这是一站式服务,可满足您的所有配置需求: 读取和写入YAML,JSON,...
  • 本文实例讲述了Node.js API详解之 tty功能与用法。分享给大家供大家参考,具体如下: tty 可以理解为终端的意思。tty 模块提供终端相关的接口,用来获取终端的行数列数等。 通过 const tty = require(‘tty’); 的...
  • 詹金斯·蒂蒂(Jenkins TTY) 流行的持续集成工具Jenkins的简约命令行界面。 基本原理 Jenkins具有很多功能,但是缺少适合日常使用的简单命令行界面。 虽然内置的工具允许对管理操作(例如,加载作业和插件)以及...
  • 终端类型TTY(Terminal Type)也叫做终端服务,为用户配置设备时提供接入接口和人 机交互机制。
  • TTY :: Markdown 将降价文档或文本转换为终端友好的输出。 TTY :: Markdown为工具箱提供了独立的降价处理组件。 安装 将此行添加到您的应用程序的Gemfile中: gem 'tty-markdown' 然后执行: $ bundle 或自己...
  • TTY ::记录器 终端的可读性,结构化和优美的日志记录 TTY :: Logger为提供了独立的日志记录组件。 产品特点 直观的控制台输出可提高可读性 能够将数据流传输到任何IO对象 支持结构化数据记录 筛选敏感数据 允许定义...
  • TTY:派 在终端窗口中绘制饼图 TTY :: Pie为工具箱提供了饼图绘制组件。 安装 将此行添加到您的应用程序的Gemfile中: gem "tty-pie" 然后执行: $ bundle 或自己安装为: $ gem install tty-pie 内容 1.用法 ...
  • 代理通过WebSocket与容器TTY对话 安装 git clone https://github.com/rancherio/console-agent cd console-agent npm install 用法 在Docker主机上启动代理: ./agent.js [--port < num> ] [--bind < ip> ] [--...
  • TTY485---980元 :RS-485/电流环转换器PDF,TTY485---980元RS-485/电流环转换器一、用途RS485/电流环转换器(型号:TTY485)用于 RS485 与 20mA 电流环的相互转换,可以延长电流环的通信距离到 1200 米。TTY485 只用...
  • linux-TTY子系统.pdf

    2020-07-24 17:32:47
    在Linux系统中, 与终端相关的概念很容易让人迷糊. 首先有终端这个概念, 然后还有各种类型的终端(串口终端, 伪终端, 控制台终端, 控制终端), 还有一个概念叫console. 那么什么是终端? 什么是控制台终端?...
  • TTY232---480元:RS-232/电流环转换器PDF,TTY232---480元 RS-232/电流环转换器 数字信号转变一、用途RS-232/电流环转换器(型号:TTY232)用于RS-232与20mA电流环的相互转换,可以延长RS-232的通信距离到1000米。TTY...
  • tty 颜色 使用 ANSI 转义码扩展字符串的小模块,用于在终端中设置字符串样式。 用法示例: // enable colors in console require ( 'tty-colors' ) ; // print something in green console . log ( 'something' ...
  • 虚拟终端notty.zip

    2019-07-19 09:47:45
    notty 是个类似 xterm,GNOME-vte,sh 和 rxvt 的终端模拟器。跟那些程序不一样的地方是,notty 不是为了模拟一个 DEC VT 系列的物理视频终端,或者是其他物理设备,而是为其他终端无法模拟的物理终端命令行添加新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,304
精华内容 61,721
关键字:

tty