首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您的Unix的TTY主要号码是多少?

您的Unix的TTY主要号码是多少?
EN

Unix & Linux用户
提问于 2014-04-30 12:19:12
回答 1查看 5.9K关注 0票数 8

我目前正在开发一个串口库,它已经使用了特殊的框架来获取系统上的串口信息。虽然串口是Unix中的基本设计--正如这一个所证明的那样--但我认为测试文件是否为串口的一个好方法是测试字符设备的主要模式,并检查这是否真的是TTY

在网上爬来爬去,我找不到任何关于TTYs主要模式的文件。嗯,只有一个Linux手册页说ptmx有主要模式5。

虽然我已经询问了基于这个堆栈溢出问题的tty字符设备的实现细节,但我想我可能会要求Unix社区了解tty值在Unix风格中的稳定性。

因此,我请求您帮助建立您系统上所有tty文件的主要模式的知识库(S),即:

  • 真正的串口?
  • 伪终端(PTS)端口?
  • FTDI USB串口?
  • 其他USB串口?

若要获取字符设备的主要模式的值,请使用以下方法查看:

代码语言:javascript
复制
% stat -f " * %N: %Hr%n" /dev/tty* /dev/pts/*
 * /dev/ttys001: 16
                 ^^- major mode

或者使用好的旧ls

代码语言:javascript
复制
% ls -l /dev/ttys001
crw--w----  1 <user>  tty   16,   1 Apr 30 03:25 /dev/ttys001
                major mode -^^   ^^- minor mode

您可以将信息放在自己的答案中,也可以使用其他信息扩展社区wiki的答案。

EN

回答 1

Unix & Linux用户

发布于 2014-04-30 13:42:11

在Linux3.8.2源代码树上:

代码语言:javascript
复制
$ cscope -dL1 '.*MAJOR' | grep -e TTY -e PTS -e PTY
drivers/s390/char/sclp_vt220.c .*MAJOR 31 #define SCLP_VT220_MAJOR TTY_MAJOR
drivers/staging/net/pc300_tty.c .*MAJOR 62 #define CPC_TTY_MAJOR CYCLADES_MAJOR
drivers/staging/sb105x/sb_pci_mp.h .*MAJOR 42 #define SB_TTY_MP_MAJOR 54
drivers/tty/rocket_int.h .*MAJOR 1168 #define TTY_ROCKET_MAJOR 46
drivers/tty/serial/apbuart.c .*MAJOR 38 #define SERIAL_APBUART_MAJOR TTY_MAJOR
drivers/tty/serial/atmel_serial.c .*MAJOR 79 #define SERIAL_ATMEL_MAJOR TTY_MAJOR
drivers/tty/serial/pmac_zilog.c .*MAJOR 93 #define PMACZILOG_MAJOR TTY_MAJOR
drivers/tty/serial/serial_txx9.c .*MAJOR 45 #define TXX9_TTY_MAJOR 204
drivers/tty/serial/serial_txx9.c .*MAJOR 50 #define TXX9_TTY_MAJOR TTY_MAJOR
drivers/usb/class/cdc-acm.h .*MAJOR 21 #define ACM_TTY_MAJOR 166
drivers/usb/serial/ipw.c .*MAJOR 55 #define IPW_TTY_MAJOR 240
include/linux/isdn.h .*MAJOR 41 #define ISDN_TTY_MAJOR 43
include/linux/isdn.h .*MAJOR 42 #define ISDN_TTYAUX_MAJOR 44
include/linux/usb/serial.h .*MAJOR 21 #define SERIAL_TTY_MAJOR 188
include/net/irda/ircomm_tty.h .*MAJOR 45 #define IRCOMM_TTY_MAJOR 161
include/uapi/linux/major.h .*MAJOR 13 #define PTY_MASTER_MAJOR 2
include/uapi/linux/major.h .*MAJOR 16 #define PTY_SLAVE_MAJOR 3
include/uapi/linux/major.h .*MAJOR 17 #define TTY_MAJOR 4
include/uapi/linux/major.h .*MAJOR 18 #define TTYAUX_MAJOR 5
include/uapi/linux/major.h .*MAJOR 144 #define UNIX98_PTY_MASTER_MAJOR 128
include/uapi/linux/major.h .*MAJOR 146 #define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
include/uapi/linux/major.h .*MAJOR 169 #define IBM_TTY3270_MAJOR 227
net/bluetooth/rfcomm/tty.c .*MAJOR 40 #define RFCOMM_TTY_MAJOR 216

UNIX98_PTY_MAJOR_COUNT是8,它给你的pty-从= 136,但似乎没有其他用途。

另一个在脑海中浮现的:

代码语言:javascript
复制
drivers/tty/hvc/hvc_console.c .*MAJOR 48 #define HVC_MAJOR 229

( XEN系列设备)。

现在,也有一个具有动态分配的主要数字的数字。例如:

代码语言:javascript
复制
    tty_drv->driver_name = "sdio_uart";
    tty_drv->name =   "ttySDIO";
    tty_drv->major = 0;  /* dynamically allocated */

您可以查找对tty_register_driver的所有调用,其中driver->major为0。

有些您还可以提供主编号作为内核/模块参数。例如,hso

因此,在Linux上,听起来您必须查找/proc/设备中的主要内容,并根据驱动程序名称而不是主要数字来决定。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/127259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档