Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1283996
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-08 17:02:31

构建和安装驱动程序

本节介绍对不同架构需使用的编译选项,以及安装驱动程序的位置。

编译和连接驱动程序

使用 -D_KERNEL 选项指示该代码用于定义内核模块。

  • 若在编译 64 位的 SPARC 架构,则使用 -xarch=v9 选项:


    % cc -D_KERNEL  -xarch=v9 -c dummy.c
    % ld -r -o dummy dummy.o
    
  • 若在编译 64 位的 x86 架构,则使用 -xarch=amd64 选项和 -xmodel=kernel 选项:


    % cc -D_KERNEL  -xarch=amd64 -xmodel=kernel -c dummy.c
    % ld -r -o dummy dummy.o
    
  • 若在编译 32 位架构,则使用下列构建命令:


    % cc -D_KERNEL  -c dummy.c
    % ld -r -o dummy dummy.o
    

在临时位置安装驱动程序

在安装驱动程序时要确保您是用户 root

在完成对 _info()_init() 和attach() 例程的修改和测试以前,要将驱动程序安装在 /tmp 目录里。将驱动程序的二进制文件复制到 /tmp 目录。从内核驱动程序目录连接到本驱动程序。

如果某一驱动程序的 _info()_init() attach() 函数出现了错误,机器可能会陷入一种没完没了的忙乱之中。忙乱之后,Solaris 操作系统会自动重启。在启动过程中,Solaris 操作系统会加载它可以加载的任何驱动程序。如果在加载驱动程序时导致系统忙乱的 attach() 函数中存在错误,则在该忙乱之后再行重启时系统将会再度陷入忙乱。系统将不停地重复忙乱、重启、忙乱循环,因为在忙乱之后每次重启时,它都力图重新加载这个有毛病的驱动程序。

为了避免没完没了的忙乱,请把驱动程序保存在 /tmp 区,直到完全测试好之后为止。从内核驱动程序区连接到 /tmp 区的驱动程序。每当系统重启时,Solaris 操作系统都会删除 /tmp 区的所有文件。若驱动程序导致了忙乱,Solaris 操作系统可以成功重启,因为驱动程序已从 /tmp 区自动删除。内核驱动程序区中的连接无处可指。错误的驱动程序加载不上,故系统不会再次陷入忙乱。您可以修改驱动程序、将其重新复制到 /tmp 区,并继续进行测试和开发。当驱动程序测试好后,将其复制到 /usr/kernel/drv 区,这样在重启后它就会仍然可用。


# cp dummy /tmp
  • 在 64 位的 SPARC 架构上,连接到 sparcv9 目录:


    # ln -s /tmp/dummy /usr/kernel/drv/sparcv9/dummy
    
  • 在 64 位的 x86 架构上,连接到 amd64 目录:


    # ln -s /tmp/dummy /usr/kernel/drv/amd64/dummy
    
  • 在 32 位架构上,创建连接:


    # ln -s /tmp/dummy /usr/kernel/drv/dummy
    

将配置文件复制到系统的内核驱动程序区。


# cp dummy.conf /usr/kernel/drv
 
 
以上文章转自于 : http://developers.sun.com.cn/
阅读(1056) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~