为什么linux的TTY登录程序getty/agetty一般都会设置一个-L的option?

-L option表示程序不等待DCD信号。DCD信号是串口通讯时的一个信号,表示Data Carrier Detected,一般是modem连通之后会发送回来的一个信号,表示数据载波OK,可以继续通信了。

但是,在现在的串口通信中,特别是嵌入式开发的时候,开发板上的串口,DCD这个pin一般都不会连线的,一般只连tx/rx/cts/rts四根线就OK了。

所以,如果getty或者agetty没有指定-L选项,那么open /dev/ttyS0就会block在那里,因为kernel会wait在一个waitqueue上,等待串口的DCD信号上来(通过中断)。

事实上,在getty/agetty程序中,指定-L option之后,代码中就会以NON_BLOCK的方式来打开/dev/ttyS0,这样kernel就不会去等待DCD信号了,从而打开串口就不会block了。

 

对于local的开发板上的串口来说,不连DCD线是合理的。因为这是local设备,不是要和远程的一个modem进行通信,所以需要DCD。本地的串口连上述那四根线就OK了。

转载于:https://www.cnblogs.com/super119/archive/2012/06/04/2534994.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值