デバドラまわり
最初はドライバインストールは危険なので、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