[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 09:40 / Filesize : 265 KB / Number-of Response : 871
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ディバイスドライバをハックしよう!



1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys]
ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。


401 名前:login:Penguin [04/12/14 15:55:34 ID:ScDxM3L+]
【序 論】
オウム事件とは、「オウム、創価、統一が共同でやっていた覚醒剤密造などの不法行為がばれそうになり、全ての罪をオウムに押付けた。」事件であると理解しています。
統一教会は、その起源から考えて、KCIA及びCIAの影響下にあると考えるべきです。
日本側のCIA専属のお爺さんたち、つまり、笹川さん、児玉さん、中曽根さんたちが、統一とつるんでいたのも、CIAの犬同士という絆があったわけです。
一方で、創価は創価で、笹川一派を通じて、統一と繋がりがありますし、それ以前に創価内部に深く入り込んでいる暴力団、
後藤組のもつ北朝鮮コネクションから、オウムの麻薬ビジネスに関わっていたわけです。
もちろん、日本社会に創価マフィアのネットワークをはりめぐらした学会を、CIAが放っておくわけがなく、マネーロンダリングなどに、しっかり利用されています。
宗教法人の財務の閉鎖性をCIAが利用しないと考える方が異常です。
そして、CIAお得意の麻薬ビジネスの日本支部が、オウムだったわけで、その収益が北朝鮮に還元されていたのも当然のことであり、
北の現体制を維持するための、CIAの有難い配慮だったわけです。
なにしろ北の体制が崩壊すると、一番困るのは、CIAのスポンサーである軍産複合体と国際金融資本であり、極東の緊張は、彼らの飯の種なわけですから。
麻薬王にして、CIAの帝王である大ブッシュさんが、統一の文と仲良しなのも、アッタリマエなわけですね。
今度の米大統領選でも、随分と統一のカネが小ブッシュ陣営に流れたようですね。
尚、本件の主たる議論は、2チャンネル、警察板の「告発します 第3部」スレッドにて、進めています。
mentai.2ch.net/test/read.cgi?bbs=police&key=985780338&ls=100

402 名前:login:Penguin mailto:sage [04/12/14 17:02:39 ID:WBCZfumK]
国際金融資本と無関係な人はいません。ここが大事なところです。
国際金融資本とダーティーな勢力になんらかの関係があるというのなら、
全ての人間がダーティーな勢力と関係があるということです。

403 名前:login:Penguin [04/12/16 00:42:54 ID:HSUTNn3s]
<linux/errno.h>をincludeしているのに、errnoが宣言されていないとエラーが出ます。
なぜですか?

404 名前:login:Penguin [04/12/16 00:52:12 ID:fnG8qWZe]
#include <asm/errno.h>


405 名前:login:Penguin mailto:sage [04/12/16 03:08:53 ID:L4JhEJTY]
デバイスドライバーをイジルとハードが壊れます

406 名前:login:Penguin mailto:sage [05/01/13 20:25:56 ID:5Qhjx5GH]
jiffies の質問です。jiffies がオーバーフローする時の挙動を確かめ
たく、下記のようなモジュールを作成してロードしたのですが、モジュー
ルのロードに非常に時間がかかります。

#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/delay.h>

MODULE_LICENSE("GPL");

int init_module(void)
{
jiffies = 4294961296UL;
return 0;
}

void cleanup_module(void)
{
return;
}

即座に jiffies 値を変更するためには、何か工夫が必要なのでしょう
か?


407 名前:login:Penguin mailto:sage [05/01/13 21:59:07 ID:b26g+4JK]
>>406
jiffesの値が飛ぶせいじゃないの?
初期値をいじる方がいいと思うが。


408 名前:login:Penguin mailto:sage [05/01/13 22:21:10 ID:5Qhjx5GH]
やっぱりそれしか方法ないでしょうかね。カーネルコンパイルが億劫で
まだ試していませんでした。

例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、
jiffies += 8640000; にすると、より多くの時間がかかるようです。仮
想マシン環境で実験しているのですが、その間、仮想マシンのプロセス
の CPU 使用率は高いままでした。


409 名前:login:Penguin mailto:sage [05/01/14 02:03:54 ID:PSu0RjKD]
ん? 何書いてたんだ、俺
>408 は、正しくは以下です。

例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、
jiffies += 864000000; にすると、より多くの時間がかかるようです。




410 名前:login:Penguin [05/02/06 11:19:02 ID:+OMlHKxZ]
mmapによるデバイスアクセスについてご教授ください。

16bitアクセス限定のデバイスに対して、
mmapによるアクセスを試行しているのですが、
どうも挙動が怪しくて困っています。

アプリ側からmmap(/dev/memをO_SYNCでopen)してshortアクセスをしても、
そのままshort幅でデバイスにアクセスが行くとは限らないのでしょうか?
なにか考慮が不足してるのでしょうか。

411 名前:login:Penguin mailto:sage [05/02/06 14:33:57 ID:JfjjYGk4]
>>410
アーキテクチャわかんないので、過去の経験より。
・D cache
・コンパイラが勝手に最適化

そういう制限がある場合は、おとなしく専用ドライバ書くのが
近道のような気がしますな。


412 名前:login:Penguin [05/02/10 21:10:10 ID:oT40ukFS]
gcc 3.3.5(gentoo) で作成したモジュールを gcc 3.4.2(FC3) のPCへ
組み込もうとするとエラーで組み込めません。
どちらも kernel-2.6.10 です。

insmod: error inserting 'hoge.ko' : -1 Invalid module format

kernel config (General setup, Loadable module) は同じにしてあります。
同じバージョンの gcc で作成したシステムでないと無理なのでしょうか。

413 名前:login:Penguin mailto:sage [05/02/12 01:22:07 ID:QcR6E3eX]
>>410

>>411の言うとおりアーキテクチャが分からないのでなんともいえないけど・・・

/dev/memをmmapでshortアクセスしたら、普通はshortで触ってくれるでしょう。
でも、触ってるデバイスが * 例えば32bit PCI * にぶら下がってたりしたら
32bit で触りに行っちゃうこともありますよ。
っていうか、PCIの向こうにいるデバイスに届くまでに余計な16bitが増えてたりする。
それでも、読みにいくときには多分shortで行っても多分大丈夫。
書き込みをshortでやったりすると、残りの16bitにゴミが乗っかっちゃうとか、
そんなんじゃないでしょうか?

そうならば、shortで書きに行くときには、最初にデバイスから32bit分持ってきて、
それに16bit分上書きして、32bit書き戻すとかするしかないのでは。
(16bitアクセス限定でも、読みに行くときは16bit×2で32bit分をうまく返してくれることを
かってに期待して書いてますけど)

それから、32bitでアクセスするときにも触りに行くアドレスに注意が必要ですよ、多分。
32bitアラインメントじゃないとダメな予感がします。
もしそうならば、アラインメントの境界をまたいじゃうような16bitの書き込みをする場合、
両側の32×2 = 64bit分を持ってきて16bit書いて戻す、とかしないとダメですよね。

もちろんこれは、PCI上でうまく振舞うように作られていないデバイスの話で、
たとえ16bitアクセス限定デバイスでもそうならないようにつくることは可能だと思います。

ところどころ言ってるかもしれませんけどね・・・

414 名前:413 mailto:sage [05/02/12 01:24:29 ID:QcR6E3eX]
早速、間違えてました(w

>ところどころ言ってるかもしれませんけどね・・・

ところどころ * うそ * 言ってるかもしれませんけどね・・・


415 名前:410 mailto:sage [05/02/16 00:46:02 ID:E/KjMwKc]
いろいろ情報ありがとうございます。

もともとドライバ経由でアクセスしていたのですが、
パフォーマンス的な問題でmmapでを使用したかったという経緯があります。
ですが、mmapだとどうもうまくいかなくて試行錯誤していた次第です。

ですので、単純にmmapでの処理の問題かと思っていました。
時間はあるので、勉強も兼ねてもうちょっと情報収集をしたいと思います。


416 名前:login:Penguin [05/02/16 22:28:50 ID:mypLuczy]
www.netfort.gr.jp/~matsu/lcd_pc/lcd_pc.html
これカコイイ


417 名前:login:Penguin mailto:sage [05/02/20 21:06:04 ID:0sjUjbHi]
現在、デバイスドライバ作成(とりあえずキャラクタ型)の勉強しているのですが、
2.4.30-pre1上で作成したテストドライバでモジュールのロードは成功したと思われる
のですが(lsmodで存在を確認)、実際にドライバを使用する為に作成したテストツールから
呼び出す(ioctlを使用する箇所で)と失敗しました。

$ ls -l /dev/testdev
crw-rw-rw- 1 root root 60, 0 2月 20日 20:11 /dev/testdev
$ ./testtool
ioctl: Inappropriate ioctl for device <-- perrorで表示させてみたところ


418 名前:417 mailto:sage [05/02/20 21:09:12 ID:0sjUjbHi]
つづき

そこで、さらに詳細に状況を確認するためにstraceを使用してみました。
$ strace ./testtool
execve("./testtool", ["./testtool"], [/* 52 vars */]) = 0
brk(0) = 0x8049a6c
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=62075, ...}) = 0
old_mmap(NULL, 62075, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0DU\1\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1333605, ...}) = 0
old_mmap(NULL, 1145796, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40023000
mprotect(0x40134000, 27588, PROT_NONE) = 0
old_mmap(0x40134000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x110000) = 0x40134000
old_mmap(0x40139000, 7108, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40139000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4013b000
munmap(0x40013000, 62075) = 0
open("/dev/testdev", O_RDWR) = 3
ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
write(1, "errno = 25\n", 11errno = 25
) = 11


419 名前:417 mailto:sage [05/02/20 21:10:12 ID:0sjUjbHi]
つづき

dup(2) = 4
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
brk(0) = 0x8049a6c
brk(0x804aa6c) = 0x804aa6c
brk(0) = 0x804aa6c
brk(0x804b000) = 0x804b000
fstat64(4, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000
_llseek(4, 0, 0xbfffef50, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "ioctl: Inappropriate io"..., 47ioctl: Inappropriate ioctl for device
) = 38
close(4) = 0
munmap(0x40014000, 4096) = 0
close(3) = 0
munmap(0x40013000, 4096) = 0
exit_group(1) = ?
$

結果を見ていると実行したおぼえのない以下の行がありました。

ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device)

この現象はどこにエラーがある場合におこり得ますか?
知ってる方お願いします。m(_ _)m



420 名前:login:Penguin mailto:sage [05/02/20 21:38:19 ID:uvzGFsyf]
結果じゃなくてソースだそうよ

421 名前:417 mailto:sage [05/02/20 21:48:59 ID:0sjUjbHi]
>>420
Please wait for a moment...

422 名前:417 mailto:sage [05/02/20 22:06:08 ID:0sjUjbHi]
#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/string.h>
static int devmajor=60;
static char *devname="testdev";
MODULE_PARM(devmajor, "i");
MODULE_PARM(devname, "s");
#include <asm/uaccess.h>

static int devtest_open(struct inode * inode, struct file * file){
MOD_INC_USE_COUNT;
return 0;
}

static int devtest_close(struct inode * inode, struct file * file){
MOD_DEC_USE_COUNT;
return 0;
}

static int devtest_ioctl(struct inode *inode, struct file *file,unsigned int cmd, unsigned long arg){
int i;
printk("testdev: ioctl: cmd=%04X\n",cmd);
switch(cmd)
{
case 1: printk("Driver testing\n"); return 0;
}
return -EINVAL;
}

423 名前:417 mailto:sage [05/02/20 22:07:26 ID:0sjUjbHi]
つづき
static struct file_operations devtest_fops = {
ioctl: devtest_ioctl,
open: devtest_open,
release: devtest_close,
};

int init_module(void){
printk("install '%s' into major %d\n",devname,devmajor);
if(register_chrdev(devmajor,devname,&devtest_fops)){
printk("device registration error\n");
return -EBUSY;
}
return 0;
}

void cleanup_module(void){
printk("remove '%s' from major %d\n",devname,devmajor);
if (unregister_chrdev(devmajor,devname))
{
printk ("unregister_chrdev failed\n");
}
};


424 名前:417 mailto:sage [05/02/20 22:10:07 ID:0sjUjbHi]
デバドラ呼び出し部

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
extern int errno;
int main(void){
int fd, ret;

fd=open("/dev/testdev",O_RDWR);
if(fd<0){
fprintf(stderr,"cannot open device\n");
return 1;
}
errno = 0;
ret = ioctl(fd,1);
if(ret == -1){
printf("errno = %d\n", errno);
perror("ioctl");
}
close(fd);
return 0;
}

425 名前:417 mailto:sage [05/02/20 22:11:43 ID:0sjUjbHi]
以上で全部です。

426 名前:login:Penguin mailto:sage [05/02/20 23:44:25 ID:Ia/OzVXx]
>>417
コピペしたら動いたぞ。 2.6.10 でだけど・・・
カキコしたソースで動かしてみそ。

427 名前:417 mailto:sage [05/02/21 00:06:03 ID:bwxnTums]
>>426
マジ?しかも、2.6?
このソースでコンパイル通った?

そして実行結果キボンヌ

428 名前:login:Penguin mailto:sage [05/02/21 00:25:27 ID:PN7I+gvx]
>>427
# uname -r
2.6.10-gentoo-r6

/var/log/messages より
Feb 20 23:41:06 XXXXX testdev: ioctl: cmd=0001
Feb 20 23:41:06 XXXXX Driver testing

変更点は /dev/wrkdev にしただけ。

429 名前:417 mailto:sage [05/02/21 00:37:25 ID:bwxnTums]
>>428
Thanks!
こちらもたった今2.6で動作確認したところです。

う〜む、何故2.4ではエラーなんだろ。

もうちょっと自分で調べてみます。
テストしてくれてありがとう >>426 & >>428



430 名前:login:Penguin mailto:sage [05/03/06 13:19:22 ID:PjCVkwmZ]
何気に良スレ
みんな頑張れ
お気に入りに追加しますた。

431 名前:login:Penguin mailto:sage [2005/03/29(火) 16:05:44 ID:lbUCJwgD]
ドライバのread、write関数でminor番号取得する方法ってないんですか?

2.6用に、LIRCの仮想ドライバで、デバイスファイル2つ作って、
片方にキーコード書き込んだらLIRCに送られるやつ書いてるんだけど。

まあ、LIRC側はIOCTLとreadだけだし、キーコード送るほうはwriteだけだから今のとこ何とかなってるんだけど、気持ち悪いし。

432 名前:login:Penguin mailto:sage [2005/03/29(火) 23:34:47 ID:ChOvrjsk]
private_data を使う、かな?


433 名前:login:Penguin mailto:sage [2005/03/30(水) 11:17:39 ID:tWHa73x6]
>>432
サンクス!
open時に file->private_data にポインタ突っ込んでおくってことですね。

取得することばかり調べてて、あらかじめ持たせておくことを考えてませんでした。
修行が足りぬ…orz

434 名前:login:Penguin mailto:sage [2005/04/16(土) 06:28:18 ID:R/hasO1P]
usb-hid についての質問です.
usb 接続の joypad を,hid-input 経由ではなく,
(drivers/usb/usb-skeleton.c のような) usb のデバイスドライバで処理したいと考えています.
問題は,joypad の挿入時に hid-core の probe 関数が呼ばれてしまい,
自作 usb デバイスドライバの probe 関数が呼ばれないことです.
上記の解決策はあるのでしょうか.

自作 usb デバイスドライバ内では, joybad のベンダーID,プロダクトIDを
usb_device_id 構造体に設定しています.

kernel は 2.6.10 です.
よろしくお願いします.

435 名前:434 mailto:sage [2005/04/16(土) 08:17:16 ID:R/hasO1P]
自己レスです.
解決法を見付けたので,書き込みます.

drivers/usb/input/hid-core.c 内の,hid_blacklist 構造体に,
joypad のベンダIDとプロダクトIDを加えることで,解決しそうです.

スレ汚し失礼しました.

436 名前:login:Penguin mailto:sage [2005/05/17(火) 18:53:06 ID:CbytfkQn]
2.6 kernel(2.6.11.x)上でデバドラ書く場合、
MOD_INC_USE_COUNT
MOD_DEC_USE_COUNT
を使用する事ってobsolete?

437 名前:login:Penguin [2005/05/18(水) 01:07:17 ID:2baf1QgQ]
>>436
れがし

438 名前:login:Penguin mailto:sage [2005/05/19(木) 23:52:14 ID:m1yq1rQI]
カーネル2.6.8(turbolinux10Server)でデバイスドライバを開発しています。
ドライバAでエクスポートしたシンボルをドライバBでコールしたいのですが、
ドライバBのinsmod時に"Unknown symbol"エラーが出てしまいます。
そこで、単純なソースで確認してみたのですが、同様の状態でした。
同様のソースをカーネル2.4.18(turbolinux8Server)でコンパイルしてinsmod
したところ上手く動作したのですが、カーネル2.6では何か手続きが必要
なのでしょうか?
確認したソースは以下の通りです
==ドライバA==
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>

int __init test_init_module (void)
{
printk("test : init_module\n");
s_print();
return 0;
}
void __exit test_cleanup_module (void)
{
printk("test : cleanup_module\n");
return 0;
}
void s_print(void)
{
printk("Hello, World!\n");
}
module_init(test_init_module)
module_exit(test_cleanup_module)


439 名前:login:Penguin [2005/05/19(木) 23:52:48 ID:m1yq1rQI]
==ドライバB==
#include <linux/module.h>
#include <linux/kernel.h>

extern void s_print();

int __init test2_init_module (void)
{
printk("test2 : init_module\n");

s_print();

return 0;
}

void __exit test2_cleanup_module (void)
{
printk("test2 : cleanup_module\n");

return 0;
}

module_init(test2_init_module)
module_exit(test2_cleanup_module)




440 名前:login:Penguin [2005/05/19(木) 23:57:30 ID:m1yq1rQI]
==コンパイル手順==
cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__ -DMODULE -DKBUILD_MODNAME=test initial.c
/usr/src/linux/scripts/mod/modpost initial.o
cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__-DMODULE -DKBUILD_MODNAME=test -c -o initial.mod.o initial.mod.c
ld -r -o test.ko initial.o initial.mod.o

==動作確認==
# insmod test.ko

// シンボルのエクスポートを確認
# cat /proc/kallsyms | grep s_print
f8xxxxxx T s_print [test]

# insmod test2.ko
test2 : Unknown symbol in module 's_print'

となります。実機が側にないので出力メッセージは大体こんな感じということで。

よろしくお願いします。

441 名前:login:Penguin mailto:sage [2005/05/20(金) 03:04:35 ID:Ds9MyJAI]
>>440
カーネルソースんとこでs_printグレップしようぜ

具烈婦
レップってすごいなコレ。どういう意味だ

442 名前:login:Penguin [2005/05/20(金) 08:58:08 ID:zG+tsX8i]
>>441
烈婦ワロタ

レスありがとうございます。
s_printでgrepしてみたのですが、同名のシンボルは無いようでした。

念のため、ドライバAに
EXPORT_SYMBOL(s_print);
を追加しても'Unknown symbol'になってしまいます。
ドライバ間の依存関係をどこかで明示する必要があるのでしょうか?


443 名前:login:Penguin mailto:sage [2005/06/07(火) 10:17:39 ID:6uaL4exB]
普通はそんなことはできないんじゃない?
誰かができると言ったのかな?

デバイスファイル開いてioctlをコールが普通じゃねぇの?

444 名前:login:Penguin mailto:sage [2005/06/17(金) 18:54:11 ID:9kSGojSd]
www.oreilly.com/catalog/linuxdrive3/book/index.csp
Linux Device Drivers, Third Edition

445 名前:login:Penguin mailto:sage [2005/06/18(土) 19:13:08 ID:Uc6V46BE]
>>444
chapter1まで読んだ。
Policy-free driversの意味がまったく分からない。
うえーん

446 名前:login:Penguin mailto:sage [2005/06/19(日) 15:13:18 ID:f3bsYXGy]
the role of a device driver is providing mechanism, not policy.
これが、policy-free

447 名前:login:Penguin mailto:sage [2005/06/19(日) 15:19:24 ID:f3bsYXGy]
ここでのfreeはduty freeのfreeと同じ使われ方。
policyがないdriver

448 名前:login:Penguin [2005/06/29(水) 18:33:32 ID:hcN+gVRw]
カーネル2.4.28を使用して、EZ USB FX2のドライバを作成しています。
USBを4つさし、ここに、デバイスドライバを作成します。デバイスドライバは、
カーネルにあるusb-skelton.cを使って作成しました。3つまでさして、制御した場合、
動作したのですが、4つさし、アプリを動かずとドライバが死にます。
4つとも、ここにドライバを作成し、メジャー番号180 で、それぞれ、
マイナー番号を100 120 140 160としました。
open / closeのみを行うプログラムを作成し、何回か行いました。
何回かおこなうと、ドライバが死にます。
ドライバソースを追っていったのですが、open時に
dev = minor_table[minor]
という行でdevが0になっていました。
minor_tableは、probe関数で取得しているのですが、なぜNULLになったのか
なぞです。どなたかわかる方いらっしゃいますか?


449 名前:login:Penguin [2005/06/29(水) 18:42:20 ID:Cc/icRgl]
Linux のドライバのプログラミングの
良い入門書があったらおしえてください



450 名前:login:Penguin mailto:sage [2005/06/29(水) 22:17:33 ID:OM3Tds/i]
>>448
Kernel2.4.27のソースしか見てないので違ったら失礼。

>マイナー番号を100 120 140 160としました。
これがよくわからん。デフォでは192から16個を順番に割り当てるようになってるが、それをわざわざいじったってことか?
そうなると、スケルトンをあちこち変更してあるのだろうから、さすがにソース無いとなんも判らん。

451 名前:login:Penguin [2005/06/29(水) 22:32:06 ID:rSbPN/4/]
>>449
アレ買え。馬の絵の描いてあるヤツ。

高くても我慢しろ。読めば安いと思うようになる。
絶対買え。とにかく買え。12冊買え。たくさん買え。

452 名前:login:Penguin mailto:sage [2005/06/30(木) 09:52:01 ID:6k+4MtMc]
12冊=たくさん

納得した

453 名前:login:Penguin mailto:sage [2005/06/30(木) 11:24:58 ID:9CZUZn2O]
なぜ12冊なのかちっとも納得いかないんだが

454 名前:login:Penguin mailto:sage [2005/06/30(木) 11:25:42 ID:J4A9ru3W]
たくさんだからだろう

455 名前:Artane. ◆o6gE1yuDGM [2005/07/04(月) 07:22:47 ID:Y9u/GUb1]
2.6.13で又モジュール周りのAPIが変わりそうな悪寒…
drivers/base/class_simple.cがまるごとなくなってる…そこのAPIを使ってる ttp://www.linuxant.com/ のx86_64用のHSFモデムドライバがそのままでは動かない状況に(;´Д`)
その前はACPI絡みでデッドロックがかーねるにあって動かなかったし、どうなってるんだろうヽ(`ー´)ノ
しかもライセンスがプロプラなのでどーすりゃいいのか頭が痛いです。

456 名前:login:Penguin mailto:sage [2005/07/07(木) 22:10:08 ID:DftqFJii]
2.4はcc -o hoge.o -c hoge.cするだけでokだったけど
2.6はmakeファイルを書かないとダメになった。
はぁ、マンドクセ

457 名前:login:Penguin mailto:sage [2005/07/07(木) 22:51:04 ID:Hy9t4ICF]
ttp://japan.linux.com/kernel/03/10/26/1026229.shtml
ここの一番下に書いてあるのなら楽だろ。簡単に再利用できるし。

458 名前:login:Penguin mailto:sage [2005/07/08(金) 11:00:44 ID:9KK2lDyF]
obj-m := unko.o
の1行でよくね?

459 名前:login:Penguin [2005/07/24(日) 15:33:14 ID:02p0TYUx]
USBのドライバ書いたことアルヤツいる?



460 名前:login:Penguin mailto:sage [2005/07/28(木) 21:47:52 ID:3ylo+PR7]
>>459
2.4.0testカーネルの時やってたなぁ
ストレージ関係がクラスドライバでないときは動かすのに苦労したよ
USB Snoopyで解析したりして

461 名前:login:Penguin mailto:sega [2005/07/31(日) 16:37:19 ID:0Amwd3lA]
カーネル2.6.xのSMPの wait_event_interruptible でしつもんです。

起こされる要因をビットであらわすようにして
起こされたあとに flag &= ~FLAG; として
起床要因をクリアしたいです。そこで、

wait_event_interruptible(wq, !(flag & FLAG) );
tmpflag = flag; // ◆1
// ★
flag &= ~FLAG; // ◆2
if( tmpflag & ・・・

としていたのですが、割込が運悪く★のところに来たときに
次回起床要因flagを割込ルーチンで設定された直後にクリアしてしまいます。
◆1と◆2をアトミックに処理するのに割禁使うのも大げさな気がします。

どうしたらよいでしょうか? (><)教えて!

462 名前:login:Penguin [2005/08/18(木) 13:31:44 ID:wsNIgIg1]
ご存知の方がいたら教えて頂けないでしょうか?

printk の動作に関してなのですが、たとえば、ドライバの登録の際に

int init_module (void) /* Loads a module in the kernel */
{
    printk("Hello kernel \n");
    return 0;
}

などと printk を使い、(X-Window は起動しないで)コンソールで

# insmod filename.o

を実行すると Hello kernel とコンソールに表示されるはずなのですが、
表示される場合と表示されない場合があります。実際には、
ほとんどの場合は表示されず、表示されるのは数十回に1回程度です。

そもそも 「printk はコンソールに *必ず* 出力するわけではない」
のでしょうか?どうなのでしょう?

463 名前:login:Penguin mailto:sage [2005/08/18(木) 14:45:51 ID:AA5MGziJ]
>>462
ほんとうに\nを入れたのか

464 名前:login:Penguin [2005/08/18(木) 14:47:24 ID:zqtjM++q]
>>462
ほんとうにコンソールなのか

Xterm とかじゃないだろうな。

465 名前:login:Penguin [2005/08/18(木) 14:54:07 ID:zqtjM++q]
X-Window は起動せずにって書いてあったな。 すまそ。

printk() は中で register_console() されたドライバの ->write() を
直接呼んでるから必ず出力されるよ。

出ないとするとログレベルの設定かな。
頭に "<1>" とかつけるといいのでは?

466 名前:462 [2005/08/18(木) 18:10:38 ID:wsNIgIg1]
レスありがとうございます。

>>463
\n は入れてあります。
\n を入れるのと入れないのでは違いがあるんですか?

>>465
出力されるときと出力されないときがあるんですよ。

でも、起動のたびにログレベルが変更されるというのは考えにくいし…

467 名前:login:Penguin mailto:sage [2005/08/18(木) 18:35:47 ID:spRqn48O]
flushされていない or 
同じメッセージなので纏められているのでは?(この場合、last message repeated xxx times とでる。)

468 名前:login:Penguin mailto:sage [2005/08/18(木) 20:41:10 ID:cWStGfHc]
>>466
ログファイルに吐かれていればメッセージレベル。
出てなかったら改行だろう。

>>467
コンソールに出る方はまとめてくれない。


469 名前:462 mailto:sage [2005/08/19(金) 09:09:08 ID:qyuoI/lN]
>>467, 468
/var/log/message には出てます。
改行もしてるんだけどなぁ。

どうもよくわからないので、あきらめることにしました。(^^;

お忙しいところ、レスありがとうございました!






470 名前:login:Penguin [2005/08/19(金) 22:08:36 ID:ZOCJz/g6]
/etc/syslog.conf に
kern.* /dev/console
とか書いてあるか?

471 名前:462 mailto:sage [2005/08/22(月) 13:16:52 ID:nvUzxFpI]
>>470
を! /etc/syslog.conf の kern.* /dev/console が
コメントアウトされています!
なるほど、これを有効にすると確実に表示されそう
ですねぇ。

今、ハードが客先に行ってしまったので
確認できないんですけど、ハードが戻ってきたら
試してみます。

ありがとうございます!


472 名前:login:Penguin [2005/10/22(土) 01:07:43 ID:EmofMJka]
やべえ、カッコイイ......デバイスドライバ自分で書いてる人たち......。
Cは一通り入門程度のことは覚えたけど、遊びでstdio.h使うことばっかりで入門の領域出てないんですよね、僕。
Linuxにも入って間もないからシェルスクリプトの使い方もまともに知らないからLinuxプログラミングなんてまだまだ....。
お馬さんの本、大学の図書館にありましたねー、ぱらっと見たけどさっぱり......。

473 名前:login:Penguin mailto:sage [2005/10/22(土) 17:23:49 ID:0rh+z8HN]
デバドラ本第3版の和訳もう出てるのね。
洋書を見つけてレジに持っていこうとするも、ふと横を見ると書棚にありました

474 名前:login:Penguin mailto:sage [2005/10/23(日) 03:10:35 ID:JQc1kDtY]
>>472
努力でどうとでもなる
まぁ頑張れ

475 名前:login:Penguin mailto:sega [2005/10/23(日) 06:34:02 ID:TRsS2wCF]
SMPな環境で、あるAという区間とBという区間があるとき
そこを走行するCPUをひとつだけにして、
かつAとBを同時に走らないようにしたい。

最速で処理できる区間ではspin_lock_irqsaveを使ってもいいけど
ちょっと時間を食いたい処理のときには割り禁にしたくない/出来ない。
こういうときってセマフォを使うんだっけ?

あと、誰かがそこを走行してたら、待たずにあきらめる処理も
どうやるのかいまいちわからんです。

476 名前:login:Penguin mailto:sage [2005/10/23(日) 07:17:36 ID:TyUzTsLn]
っ[MUTEX]

477 名前:login:Penguin mailto:sage [2005/10/24(月) 11:41:52 ID:y/bnKz7N]
futex

478 名前:login:Penguin [2005/10/24(月) 21:00:03 ID:qab5z916]
insmod hello.o
が出来ません....
bash: insmod: command not found
と出てしょっぱなから弾かれました....。
FC4を入れているのですが、ぐぐったところKernelのバージョンが
上ってからサポートされなくなった(?)のようなことがかいてありましたが...
ちょっとわからないです..。

479 名前:login:Penguin mailto:sage [2005/10/24(月) 21:41:23 ID:nHBdU4lq]
>>478
module-init-toolsが入っていない。
なんて事はまずありえないので、パス通っていないだけだろう。




480 名前:login:Penguin mailto:sage [2005/10/25(火) 01:26:16 ID:boXSHzJM]
っ[/sbin/insmod]

481 名前:login:Penguin mailto:sage [2005/10/25(火) 01:50:35 ID:mHOxbI49]
$ su -
passwd:
#

482 名前:login:Penguin mailto:sage [2005/10/25(火) 07:29:46 ID:gtGeQ0F/]
モジュールに挑戦する前にやるべきことがあるだろう。

483 名前:login:Penguin mailto:sage [2005/10/27(木) 22:32:36 ID:5z/EqZNh]
みなさん、返事が遅れてすみません....。
何日ものぞいていませんでした。
どうやら、おっしゃる通りパスが通っていないようでして、
あれから、/sbin/insmod [filename]
を試してみましたがなんだか、だめだ!のようなメッセージが表示されて
しまい、無理でした。Linuxのデバイスドライバのプログラミングは
BIOSレベルでのデバイスドライバを書くときの参考にもなるかと
思ったのですが、やっぱりLinuxを初めてあまりたっていないのに
背伸びをしすぎたようです。出直してきます。
御回答いただいた方々、ほんとうにありがとうございました。:-)

484 名前:login:Penguin mailto:sage [2005/10/28(金) 05:51:31 ID:gqZeSigl]
      │
      │
      J

  ∩_∩   ∩_∩
 (  ・(ェ)・) (・(ェ)・  )
エサクマか?   違うクマよ、
         あわてて食いつくと面倒なことになるクマ。

485 名前:login:Penguin mailto:sage [2005/10/28(金) 08:53:26 ID:iWNW3bFs]
>>483
いえいえ是非また来て下さいね><
御町して檻ます><

486 名前:483 mailto:sage [2005/10/30(日) 22:20:06 ID:kv9dDPbi]
やっとできました!
>>167さんのレスのようにお馬さん初版第二章の一番最初のなーんにもしない
モジュールのソースに追加することでロードすることができました。
試しにカーネルソースのmodule.hを見てみるとメッセージでライセンスが無いといわれた経緯から
MODULE_LICENSE (license)の定義をみつけ、それをキーワードにぐぐったらこれを追加するような
記述をみつけることができました。
カーネルバージョンが2.4.1以降からこうなったようなことがinsmodのmanページにあったので一気に解決しました。
たぶん、insmodが認識されなかったのはKterm上からやろうとしたからですね....
嬉しい!


487 名前:login:Penguin mailto:sage [2005/10/30(日) 22:27:05 ID:dxIdqW+o]
>>486
よくやった!

とりあえず、今の状態を登山に例えるなら
登山用品店の自動ドアが開いたあたりだな。

488 名前:login:Penguin mailto:sage [2005/11/19(土) 17:12:54 ID:mr3HUTh9]
2.4から2.6へポーティングしててkoができるまで行きました。
chrdevなんですけどudevの仲間に入る方法がわかりません。
2.4のころのように直接的にmknodしてinsmodするものなのでしょうか。

489 名前:login:Penguin [2005/11/24(木) 19:13:51 ID:tUhrvxEF]
ageようよ。



490 名前:login:Penguin mailto:sage [2005/11/25(金) 02:45:31 ID:Y8mPXznM]
質問なのですが、回路の方は勉強しておられますでしょうか?

491 名前:login:Penguin mailto:sage [2005/12/08(木) 03:07:19 ID:B0ejvBgu]
ちょっと質問させて下さい。
ノートパソコンを使っているんですが、マイクとスピーカーの位置が近いのでサウンドドライバの
読み込み時からサウンドミキサーが起動して音量設定するまでの間にハウリングしたりするんです。

そこで、サウンドドライバ読み込み時にマイクをミュートにしたいと考えたのですが、
例えばドライバの中にマイクの初期音量を0にするコードを追加したりするようなことは可能なんでしょうか?
# スレ違いでしたら誘導お願いします。

492 名前:login:Penguin [2005/12/08(木) 10:11:04 ID:j53o+rA9]
ageようよ。

493 名前:login:Penguin [2005/12/11(日) 18:47:51 ID:rh+AeURO]
はじめまして。
Windows対応のRS232C->USB変換ケーブルを使って、スイッチャを
LINUXのPCで制御しようとしているんですが、そもそもドライバを
自分で作る必要があるのでしょうか?
LINUXの環境はOSがRED HAT 9でカーネルは2.4です。
もしくは必要かどうかを確認する方法ってあるのでしょうか?
ご存知の方がいらっしゃいましたら、答えていただけないでしょうか?
よろしくお願いします。

494 名前:login:Penguin [2005/12/11(日) 21:37:52 ID:ZmBeQHZx]
>>493
自動認識されないか??
suse10だと自動で使えた
けどBreak信号遅れなくてヒデブだった

495 名前:493 [2005/12/13(火) 02:44:01 ID:bCmTAm2t]
>>494
お返事ありがとうございます。
/var/log/messagesでログを見たら、新しいUSBデバイスが認識できている
っぽいことが書かれてました。
たぶんRS232C->USB変換ケーブルは認識できてると思います。
で、早速プログラム組んでスイッチャに信号を送ってみたんですが、
これがうんともスンとも言わなくて。
もしかして変換ケーブルだけ認識しててスイッチャは認識していないかも
って考えたのですが、シリアル通信だから信号を送るだけなら送れますよね?


496 名前:login:Penguin mailto:sage [2005/12/13(火) 21:07:28 ID:sg6goQTn]
/dev/ttyUSBの読み書き許可がなかったよ

497 名前:色情前世鑑定士 mailto:sage [2005/12/13(火) 23:49:52 ID:xAfc4hOf]
>>495
ボーレートとかあってますよね?
sttyとか使って動作中のUSBシリアルの各設定を
観察・設定してみるといいかもしれません

498 名前:login:Penguin [2005/12/17(土) 23:06:34 ID:oosooT9i]
>>496,497
助言ありがとうございます。
パーミッションに関してはchmod 666を実行したので、大丈夫だと思います。
ボーレート他の初期設定は、少し自信がないのですが、他のシリアル通信
のプログラムを参考にして一通りプログラム内で設定しています。
sttyで確認するというのは知らなかったので、早速やってみたいと思います。
ありがとうございます。

499 名前:login:Penguin mailto:sage [2006/01/28(土) 02:19:52 ID:eIqcEw8I]
馬本買った記念age



500 名前:login:Penguin [2006/01/28(土) 02:22:46 ID:eIqcEw8I]
ageて無かった…orz






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef