Linux-字符设备-数据结构

每个字符设备都对应一个tty_struct数据结构,主要用来保存终端设备当前参数设置、所属的前台进程组ID和字符IO缓冲队列等信息。Linux内核使用了数组tty_table[]来保存系统中每个终端设备的信息。


// tty数据结构。

 struct tty_struct {

         struct termios termios;                  // 终端io属性和控制字符数据结构。

         int pgrp;                                // 所属进程组。

         int session;                             // 会话号。

         int stopped;                             // 停止标志。

         void (*write)(struct tty_struct * tty);   // tty写函数指针。

         struct tty_queue *read_q;                // tty读队列。

         struct tty_queue *write_q;               // tty写队列。

         struct tty_queue *secondary;             // tty辅助队列(存放规范模式字符序列)

         };                                       //可称为规范()模式队列。


   // tty字符缓冲队列数据结构。用于tty_struc结构中的读、写和辅助(规范)缓冲队列。

 struct tty_queue {

         unsigned long data;             // 队列缓冲区中含有字符行数值(不是当前字符数)。

                                            // 对于串口终端,则存放串行端口地址。

         unsigned long head;             // 缓冲区中数据头指针。

         unsigned long tail;             // 缓冲区中数据尾指针。

         struct task_struct * proc_list;  //等待本队列的进程列表。

         char buf[TTY_BUF_SIZE];         // 队列的缓冲区。

  };


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux字符设备驱动实验是指在Linux操作系统中编写和测试字符设备驱动程序的过程。字符设备驱动程序负责与字符设备进行交互,包括输入输出数据、控制设备和处理设备的状态等。 在进行Linux字符设备驱动实验之前,首先需要了解字符设备字符设备驱动的基本概念及其工作原理。字符设备是指以字符为单位进行输入输出的设备,如串口、打印机等。字符设备驱动是指将操作系统与字符设备进行交互的程序。 在实验中,我们通常需要编写一个字符设备驱动程序,包括初始化设备、读写数据、控制设备等功能。首先,我们需要定义字符设备驱动的数据结构,包括设备号、驱动程序打开、关闭等函数的实现。然后,我们需要实现字符设备驱动的读写函数来实现数据的输入输出。最后,我们可以进行一些附加功能的实现,如控制设备的状态、处理中断等。 在实验过程中,我们需要使用Linux内核提供的字符设备接口来进行字符设备驱动的编写和测试。可以使用一些工具和命令来加载和测试字符设备驱动程序,如insmod、rmmod等。通过这些工具和命令,我们可以加载和卸载字符设备驱动程序,并在用户空间进行数据的读写操作,来测试字符设备驱动的功能和性能。 Linux字符设备驱动实验可以帮助我们深入了解字符设备字符设备驱动的工作原理,并学习Linux内核的开发和调试技术。通过实验,我们可以更好地理解操作系统和驱动程序之间的关系,提高我们在Linux系统开发和嵌入式系统开发中的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值