4.4.4 TTY终端的驱动程序

GoldFish虚拟处理器的TTY终端的驱动程序,也就是提供了虚拟串口功能的驱动程序,相关文件如下所示:

drivers/char/goldfish_tty.c

GoldFish的TTY终端的驱动程序在sys文件系统的driver路径如下所示:

    # ls /sys/bus/platform/drivers/goldfish_tty
    goldfish_tty.0
    goldfish_tty.1
    goldfish_tty.2
    uevent
    unbind
    bind

GoldFish的TTY终端的驱动程序在用户空间有3个设备,节点分别为/dev/ttyS0,/dev/ttyS1和/dev/ttyS2。

这个驱动程序只支持写操作,驱动程序写的功能在goldfish_tty_do_write中实现,操作如下所示:

    static void goldfish_tty_do_write(int line, const char *buf, unsigned count)
    {
        unsigned long irq_flags;
        struct goldfish_tty *qtty = &goldfish_ttys[line];
        uint32_t base = qtty->base;
        spin_lock_irqsave(&qtty->lock, irq_flags);
        writel(buf, base + GOLDFISH_TTY_DATA_PTR);      /* 写入虚拟串口寄存器:数据指针 */
        writel(count, base + GOLDFISH_TTY_DATA_LEN);   /* 写入虚拟串口寄存器:数据长度 */
        writel(GOLDFISH_TTY_CMD_WRITE_BUFFER, base + GOLDFISH_TTY_CMD);
        spin_unlock_irqrestore(&qtty->lock, irq_flags);
    }

串口的功能比实际的串口功能要简单得多,进行的是直接对虚拟寄存器的写操作,仿真器环境根据情况进行处理。