linux - 库存专业下的自定义字符设备 linux 模块(如 "tty")

标签 linux driver

我正在编写我的第一个 Linux 内核模块。它是通过 GPIO 引脚进行通信的标准字符设备。

它就像一个魅力。它使用/dev 下的设备名称和/sys 下我自己的类名注册(它有一些属性可用于主机应用程序的配置)。

我的愿望是将我的设备移动到 /dev/tty//sys/class/tty/ 下。

我应该如何更改下面的代码来完成此操作?

非常感谢!

  // Allocate major device number

  majorNumber = register_chrdev(0, DEVICE_NAME, &devFileOps);

  if (majorNumber < 0)
  {
    kobject_put(dev_kobj);

    pr_crit(
      "%s/%s: failed to register a major number.\n", 
      CLASS_NAME, 
      DEVICE_NAME
    );

    return majorNumber;
  }

  pr_debug(
    "%s/%s: successfully registered with major number %d.\n", 
    CLASS_NAME,
    DEVICE_NAME,
    majorNumber
  );

  // Register device class

  devClass = class_create(THIS_MODULE, CLASS_NAME);

  if (IS_ERR(devClass))
  {
    unregister_chrdev(majorNumber, CLASS_NAME); 
    kobject_put(dev_kobj);

    pr_crit(
      "%s/%s: failed to register device class.\n", 
      CLASS_NAME,
      DEVICE_NAME
    );

    return PTR_ERR(devClass);
  }

  pr_debug(
    "%s/%s: device class successfully registered.\n", 
    CLASS_NAME, 
    DEVICE_NAME
  );

  // Register device driver

  devDevice = device_create(
    devClass, 
    NULL, 
    MKDEV(majorNumber, 0), 
    NULL, 
    DEVICE_NAME
  );

  if (IS_ERR(devDevice))
  {
    class_destroy(devClass);
    unregister_chrdev(majorNumber, CLASS_NAME);
    kobject_put(dev_kobj);

    pr_crit("%s/%s: failed to create the device.\n", CLASS_NAME, DEVICE_NAME);

    return PTR_ERR(devDevice);
  }

最佳答案

如果您希望您的设备作为 TTY 公开,请将其实现为串行驱动程序,类似于 drivers/tty/serial 中的其他设备。 .内核将应用 the TTY layer到它,它将显示为 TTY。

关于linux - 库存专业下的自定义字符设备 linux 模块(如 "tty"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318274/

相关文章:

Javascript 无法在 GoDaddy 托管上运行

android - Windows 上基于软件的 Android 附件

keyboard - 编写键盘设备驱动程序

driver - WinDbg 导致 Windows 在启动时蓝屏 (0x00000124)

Windows 内核级全局临界区

windows - ObRegisterCallbacks : MSDN documentation/sample code discrepency

c - 将 execv 与 Linux 的任意命令一起使用——echo、date、ls 等

linux - sed: -i 在 Mac OS X 上不能与 stdin 一起使用

java - 如何确定和使用 Linux shell 脚本中的实际 java 路径

内存复制功能