博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux-uart
阅读量:2442 次
发布时间:2019-05-10

本文共 1475 字,大约阅读时间需要 4 分钟。

drivers/tty
tty_write()->(ld->ops->write)//调用线路规程的ld->ops的write(n_tty_write)
console_init()->tty_ldisc_begin()->tty_register_ldisc(N_TTY, &tty_ldisc_N_TTY)
tty_ldiscs[disc] = new_ldisc;//设置ld->ops
tty_open()->tty_init_dev()->initialize_tty_struct()->tty_ldisc_init(tty)->
get_ldops(disc)->
ldops = tty_ldiscs[disc]//open的时候获取ld->ops
n_tty_write()->(tty->ops->write(tty, b, nr))调用tty->ops->write(uart_write)
uart_register_driver()->tty_set_operations(normal, &uart_ops)//设置tty->ops->
write
normal->driver_state = drv;//uart_driver保存在了tty_driver的driver_state
uart_write()->uart_start()->__uart_start()->(port->ops->start_tx(port))
tty_open()->tty_init_dev()->initialize_tty_struct()
tty->ops = driver->ops;
tty_open()->(tty->ops->open(tty, filp))//由于上述,该open为uart_open
uart_open()->
tty->driver_data = state;//uart_state保存在了tty_struct的driver_data
driver和device匹配:
uart_register_driver()->tty_register_driver()->list_add(&driver->tty_drivers,
&tty_drivers)/
tty_open()->
tty = tty_open_current_tty(device, filp);//获取tty_struct
tty_open()->tty_lookup_driver(device, filp, &noctty, &index)->get_tty_driver(
device, index)//获取tty_driver
static void __uart_start(struct tty_struct *tty)
{
struct uart_state *state = tty->driver_data;//上面设置了uart_state放到driver_data中
struct uart_port *port = state->uart_port;
if (port->ops->wake_peer)
port->ops->wake_peer(port);
if (!uart_circ_empty(&state->xmit) && state->xmit.buf &&
!tty->stopped && !tty->hw_stopped)
port->ops->start_tx(port);
}

转载地址:http://ydsqb.baihongyu.com/

你可能感兴趣的文章
谷歌浏览器获取max地址_Google Home,Mini和Max之间有什么区别?
查看>>
您的Mac正在High Sierra中跟踪您的位置,这就是原因(以及如何禁用它)
查看>>
谷歌 smarthome_如何在Google Home中升级您的Smarthome连接
查看>>
如何使用iPhone和iOS 11轻松共享您的Wi-Fi密码
查看>>
如何在您的Nintendo帐户上启用两因素身份验证
查看>>
忘记word文档打开密码_如何向Word文档添加打开密码
查看>>
虚拟机许可证_您可以将Windows 7许可证转移到在同一台计算机上运行的虚拟机吗?
查看>>
csdn文档裁剪_如何删除Microsoft Office文档中裁剪的屏幕截图中未使用的部分?
查看>>
mac地址唯一性_MAC地址的唯一性如何实施?
查看>>
ios表格添加底纹_如何在Word中的表格单元格中添加底纹
查看>>
如何修复Windows和Linux在双启动时显示不同的时间
查看>>
qt grab() 截图_如何在OS X中使用Grab实用程序获取高级屏幕截图
查看>>
连上wi-fi显示无法连接_由于先前的密码而无法连接到Wi-Fi网络时,该怎么办?
查看>>
应用每次打开重新启动_重新启动PC后如何阻止Windows 10重新打开以前的应用程序
查看>>
如何使用BetterTouchTool在Mac上创建自定义触控板手势
查看>>
tldr_tldr将手册页转换为简明英语解释
查看>>
如何在iPhone或iPad上的Safari中使用密码管理器
查看>>
word中将linux回车_在Linux中将外部USB硬盘用于/ home挂载是否安全?
查看>>
usb wi-fi 驱动_无线键盘和鼠标能否与笔记本电脑的Wi-Fi和自己的USB接收器一起使用?
查看>>
smartscreen 关_什么是“ SmartScreen”?为什么在我的PC上运行它?
查看>>