首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chardev的主要模式和次要模式有多稳定?

chardev的主要模式和次要模式有多稳定?
EN

Stack Overflow用户
提问于 2014-04-29 19:48:47
回答 1查看 189关注 0票数 2

我正在开发一个串口库,我正在考虑使用字符设备的主要/次要模式来检查给定文件是平台串口、pty还是usb串口,以补充使用Linux或OSX下存在的其他框架。

实际上,为了确定文件是USB串口还是平台串口,可以使用可用的框架,比如linux上的libudev或OSX上的IOKit。但是我认为检查PTY文件的唯一方法是使用好的旧stat()

代码语言:javascript
复制
#if defined(OS_LINUX)
#define PTY_MAJOR_NODE 136
#elif defined(OS_MAC)
#define PTY_MAJOR_NODE 16
#elif defined(OS_SOLARIS)
#define PTY_MAJOR_NODE 24
#endif

bool is_pty(const char* file) {
    struct stat filestat;
    if (0 == stat(file, &filestat)
            && S_ISCHR(filestat.st_mode)
            && major(filestat.st_rdev) == PTY_MAJOR_NODE) {
        return true;
    }
    return false;
}

到目前为止,我在我的debian上发现,PTS chardev都有一个主要的136模式,而在我的OSX上,所有PTS都有一个16模式。在ddg上爬行时,我发现Solaris可能使用主要的24.模式

我可以在网上找到很多关于PTY/PTS及其历史的资源。开瓶帕蒂普洛斯的命令--尽管给出了/dev/ptmx的大写和副词--不讨论PTS设备的主要/次要模式。也没有列出主要模式的资源。

以下是我的问题:

  • 对于给定的Unix风格,PTS的主要模式(以及其他串行chardev)是否稳定?(我在寻找稳定在±2年的东西)
  • 这些定义在哪里?我想是一个内核驱动程序来处理这个问题,不是吗?
  • 依靠chardev的主要模式来检测这是什么样的设备是个好主意吗?

注:我对在unix.SE上发帖犹豫不决,但由于我是在代码中使用它,所以我认为这更应该在这里提出。

编辑:我发布了一个相关的关于unix.SE的问题,请求帮助查找其他主要模式,并查看它们在系统中的稳定性。我的猜测是,如果没有人有答案,至少我们可以查询系统并查看来源。

EN

回答 1

Stack Overflow用户

发布于 2014-10-28 22:08:58

主设备号和次要设备号是根据所涉及的硬件在编译或链接/加载时定义的。向Solaris机器添加额外的SBUS卡可能(必须?)有一个任意的主要设备编号。我知道是我的。

简而言之,我不认为大大小小的设备号码会做你想做的事。

考虑一下Debian端口https://www.debian.org/ports

我无法想象SPARC、s390、MIPS、PowerPC和ARM架构都使用相同的大小写;总线架构太不一样了。

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

https://stackoverflow.com/questions/23373938

复制
相关文章

相似问题

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