编写设备驱动程序

测试分层驱动程序

要测试 lyr 驱动程序,请向 lyr 设备写入一条消息,并验证该消息是否显示在 lyr_targ 设备上。


示例 14–3 向分层设备写入一条短消息

在本示例中,lyr_targ 设备是安装了 lyr 设备的系统的控制台。

如果要查看的显示屏幕也是安装了 lyr 设备的系统的控制台设备的显示屏幕,请注意,向控制台写入将会破坏显示屏幕上的信息。控制台消息将显示在窗口系统范围以外。测试 lyr 驱动程序之后,需要重画或刷新显示器。

如果要查看的显示屏幕不是安装了 lyr 设备的系统的控制台设备的显示屏幕,请登录或以其他方式查看目标控制台设备的显示屏幕上的信息。

以下命令将一条很短的消息写入 lyr 设备:


# echo "\n\n\t===> Hello World!! <===\n" > /devices/pseudo/lyr@1:node

目标控制台上将会显示以下消息:

console login:

    ===> Hello World!! <===

lyr: 
lyr_open: opened target '/dev/console' successfully on inst 1
lyr: 
lyr_close: closed target successfully on inst 1

执行 lyr_open()lyr_close() 时所显示的信息来自在 lyr_open()lyr_close() 入口点中执行的 cmn_err(9F) 调用。



示例 14–4 向分层设备写入一条较长的消息

以下命令将一条较长的消息写入 lyr 设备:


# cat lyr.conf > /devices/pseudo/lyr@1:node

目标控制台上将会显示以下消息:

lyr: 
lyr_open: opened target '/dev/console' successfully on inst 1
#
# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#pragma ident   "%Z%%M% %I%     %E% SMI"

name="lyr" parent="pseudo" instance=1;
lyr_targ="/dev/console";
lyr: 
lyr_close: closed target successfully on inst 1


示例 14–5 更改目标设备

要更改目标设备,请编辑 /usr/kernel/drv/lyr.conf,并将 lyr_targ 属性的值更改为指向其他目标设备的路径。例如,该目标设备可以是在本地终端执行 tty 命令后的输出结果。例如,此类设备路径可以是 /dev/pts/4

在将驱动程序更新为使用新目标设备之前,应确保 lyr 设备未被使用。


# modinfo -c | grep lyr
174          3 lyr                              UNLOADED/UNINSTALLED

使用 update_drv(1M) 命令重新装入 lyr.conf 配置文件:


# update_drv lyr

再次向 lyr 设备写入一条消息,并验证该消息是否显示在新的 lyr_targ 设备上。