読者です 読者をやめる 読者になる 読者になる

korechi’s diary

とある大学院生のブログ

デバドラまわり

デバイスドライバ

最初はドライバインストールは危険なので、magenta 内で行う。

現在動作している Linux kernel に含まれている Mellanox 10GbE NIC device driver (mlx4_core.ko と mlx4_en.ko)を再コンパイルする方法は、

http://www.arc.ics.keio.ac.jp/local/index.php?Linux%20Device%20Driver

の通りにすれば良い。

 

一度やったら

cd 

/home/Lab/rpmbuild/BUILD/kernel-2.6.32-573.3.1.el6/linux-2.6.32-573.3.1.el6.x86_64

make SUBDIRS=drivers/net/mlx4 modules

すれば*.koができる。

 

できあがったmlx4_core.ko や mlx4_en.koを使うには、(もう入っている場合)

sudo rmmod mlx4_en.ko

sudo rmmod mlx4_core.ko

してから

sudo insmod mlx4_core.ko

sudo insmod mlx4_en.ko

すればよい。

 

printkは、

dmesg

で確認できる。

 

しかし、実際はen_main.cだけいじるので、

make SUBDIRS=drivers/net/mlx4 modules

./unload.sh(mlx4_en.ko用に書き換えたやつ)

./load.sh

をすればmlx4_en.koが使える。

 

それは、

#include <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

 

#define MLX4_CMD_TEST   123

 

main()

{

        int fd;

        if *1 < 0) {

                printf("open error\n");

        } else {

                printf("opened\n");

        }

 

        if (ioctl(fd, MLX4_CMD_TEST) < 0) {

                printf("Error: Cannot ioctl\n");

                return -1;

        }

 

        return 0;

}

でioctlしたりすることができる。

 

*1:fd = open("/dev/mlx4", O_RDWR