官术网_书友最值得收藏!

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);
    }

串口的功能比實際的串口功能要簡單得多,進行的是直接對虛擬寄存器的寫操作,仿真器環境根據情況進行處理。

主站蜘蛛池模板: 天长市| 安徽省| 韶关市| 石首市| 尉犁县| 宜春市| 方城县| 马边| 锡林浩特市| 镇坪县| 安平县| 金华市| 确山县| 赤水市| 平昌县| 蕉岭县| 双江| 佛坪县| 华蓥市| 福安市| 宝坻区| 麦盖提县| 天全县| 滁州市| 镇沅| 禹州市| 河津市| 都兰县| 双柏县| 巨野县| 台中市| 北辰区| 南澳县| 松溪县| 潞西市| 甘孜| 太和县| 潢川县| 宜都市| 田阳县| 类乌齐县|