1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys.net] ディバイスドライバの改造、製作にまつわる情報交換、質問、 噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
444 名前:login:Penguin mailto:sage [2005/05/17(火) 18:53:06 ID:CbytfkQn.net] 2.6 kernel(2.6.11.x)上でデバドラ書く場合、 MOD_INC_USE_COUNT MOD_DEC_USE_COUNT を使用する事ってobsolete?
445 名前:login:Penguin [2005/05/18(水) 01:07:17 ID:2baf1QgQ.net] >>436 れがし
446 名前:login:Penguin mailto:sage [2005/05/19(木) 23:52:14 ID:m1yq1rQI.net] カーネル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)
447 名前:login:Penguin [2005/05/19(木) 23:52:48 ID:m1yq1rQI.net] ==ドライバ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)
448 名前:login:Penguin [2005/05/19(木) 23:57:30 ID:m1yq1rQI.net] ==コンパイル手順== 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' となります。実機が側にないので出力メッセージは大体こんな感じということで。 よろしくお願いします。
449 名前:login:Penguin mailto:sage [2005/05/20(金) 03:04:35 ID:Ds9MyJAI.net] >>440 カーネルソースんとこでs_printグレップしようぜ 具烈婦 レップってすごいなコレ。どういう意味だ
450 名前:login:Penguin [2005/05/20(金) 08:58:08 ID:zG+tsX8i.net] >>441 烈婦ワロタ レスありがとうございます。 s_printでgrepしてみたのですが、同名のシンボルは無いようでした。 念のため、ドライバAに EXPORT_SYMBOL(s_print); を追加しても'Unknown symbol'になってしまいます。 ドライバ間の依存関係をどこかで明示する必要があるのでしょうか?
451 名前:login:Penguin mailto:sage [2005/06/07(火) 10:17:39 ID:6uaL4exB.net] 普通はそんなことはできないんじゃない? 誰かができると言ったのかな? デバイスファイル開いてioctlをコールが普通じゃねぇの?
452 名前:login:Penguin mailto:sage [2005/06/17(金) 18:54:11 ID:9kSGojSd.net] www.oreilly.com/catalog/linuxdrive3/book/index.csp Linux Device Drivers, Third Edition
453 名前:login:Penguin mailto:sage [2005/06/18(土) 19:13:08 ID:Uc6V46BE.net] >>444 chapter1まで読んだ。 Policy-free driversの意味がまったく分からない。 うえーん
454 名前:login:Penguin mailto:sage [2005/06/19(日) 15:13:18 ID:f3bsYXGy.net] the role of a device driver is providing mechanism, not policy. これが、policy-free
455 名前:login:Penguin mailto:sage [2005/06/19(日) 15:19:24 ID:f3bsYXGy.net] ここでのfreeはduty freeのfreeと同じ使われ方。 policyがないdriver
456 名前:login:Penguin [2005/06/29(水) 18:33:32 ID:hcN+gVRw.net] カーネル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になったのか なぞです。どなたかわかる方いらっしゃいますか?
457 名前:login:Penguin [2005/06/29(水) 18:42:20 ID:Cc/icRgl.net] Linux のドライバのプログラミングの 良い入門書があったらおしえてください
458 名前:login:Penguin mailto:sage [2005/06/29(水) 22:17:33 ID:OM3Tds/i.net] >>448 Kernel2.4.27のソースしか見てないので違ったら失礼。 >マイナー番号を100 120 140 160としました。 これがよくわからん。デフォでは192から16個を順番に割り当てるようになってるが、それをわざわざいじったってことか? そうなると、スケルトンをあちこち変更してあるのだろうから、さすがにソース無いとなんも判らん。
459 名前:login:Penguin [2005/06/29(水) 22:32:06 ID:rSbPN/4/.net] >>449 アレ買え。馬の絵の描いてあるヤツ。 高くても我慢しろ。読めば安いと思うようになる。 絶対買え。とにかく買え。12冊買え。たくさん買え。
460 名前:login:Penguin mailto:sage [2005/06/30(木) 09:52:01 ID:6k+4MtMc.net] 12冊=たくさん 納得した
461 名前:login:Penguin mailto:sage [2005/06/30(木) 11:24:58 ID:9CZUZn2O.net] なぜ12冊なのかちっとも納得いかないんだが
462 名前:login:Penguin mailto:sage [2005/06/30(木) 11:25:42 ID:J4A9ru3W.net] たくさんだからだろう
463 名前:Artane. ◆o6gE1yuDGM [2005/07/04(月) 07:22:47 ID:Y9u/GUb1.net] 2.6.13で又モジュール周りのAPIが変わりそうな悪寒… drivers/base/class_simple.cがまるごとなくなってる…そこのAPIを使ってる ttp://www.linuxant.com/ のx86_64用のHSFモデムドライバがそのままでは動かない状況に(;´Д`) その前はACPI絡みでデッドロックがかーねるにあって動かなかったし、どうなってるんだろうヽ(`ー´)ノ しかもライセンスがプロプラなのでどーすりゃいいのか頭が痛いです。
464 名前:login:Penguin mailto:sage [2005/07/07(木) 22:10:08 ID:DftqFJii.net] 2.4はcc -o hoge.o -c hoge.cするだけでokだったけど 2.6はmakeファイルを書かないとダメになった。 はぁ、マンドクセ
465 名前:login:Penguin mailto:sage [2005/07/07(木) 22:51:04 ID:Hy9t4ICF.net] ttp://japan.linux.com/kernel/03/10/26/1026229.shtml ここの一番下に書いてあるのなら楽だろ。簡単に再利用できるし。
466 名前:login:Penguin mailto:sage [2005/07/08(金) 11:00:44 ID:9KK2lDyF.net] obj-m := unko.o の1行でよくね?
467 名前:login:Penguin [2005/07/24(日) 15:33:14 ID:02p0TYUx.net] USBのドライバ書いたことアルヤツいる?
468 名前:login:Penguin mailto:sage [2005/07/28(木) 21:47:52 ID:3ylo+PR7.net] >>459 2.4.0testカーネルの時やってたなぁ ストレージ関係がクラスドライバでないときは動かすのに苦労したよ USB Snoopyで解析したりして
469 名前:login:Penguin mailto:sega [2005/07/31(日) 16:37:19 ID:0Amwd3lA.net] カーネル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をアトミックに処理するのに割禁使うのも大げさな気がします。 どうしたらよいでしょうか? (><)教えて!
470 名前:login:Penguin [2005/08/18(木) 13:31:44 ID:wsNIgIg1.net] ご存知の方がいたら教えて頂けないでしょうか? 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 はコンソールに *必ず* 出力するわけではない」 のでしょうか?どうなのでしょう?
471 名前:login:Penguin mailto:sage [2005/08/18(木) 14:45:51 ID:AA5MGziJ.net] >>462 ほんとうに\nを入れたのか
472 名前:login:Penguin [2005/08/18(木) 14:47:24 ID:zqtjM++q.net] >>462 ほんとうにコンソールなのか Xterm とかじゃないだろうな。
473 名前:login:Penguin [2005/08/18(木) 14:54:07 ID:zqtjM++q.net] X-Window は起動せずにって書いてあったな。 すまそ。 printk() は中で register_console() されたドライバの ->write() を 直接呼んでるから必ず出力されるよ。 出ないとするとログレベルの設定かな。 頭に "<1>" とかつけるといいのでは?
474 名前:462 [2005/08/18(木) 18:10:38 ID:wsNIgIg1.net] レスありがとうございます。 >>463 \n は入れてあります。 \n を入れるのと入れないのでは違いがあるんですか? >>465 出力されるときと出力されないときがあるんですよ。 でも、起動のたびにログレベルが変更されるというのは考えにくいし…
475 名前:login:Penguin mailto:sage [2005/08/18(木) 18:35:47 ID:spRqn48O.net] flushされていない or 同じメッセージなので纏められているのでは?(この場合、last message repeated xxx times とでる。)
476 名前:login:Penguin mailto:sage [2005/08/18(木) 20:41:10 ID:cWStGfHc.net] >>466 ログファイルに吐かれていればメッセージレベル。 出てなかったら改行だろう。 >>467 コンソールに出る方はまとめてくれない。
477 名前:462 mailto:sage [2005/08/19(金) 09:09:08 ID:qyuoI/lN.net] >>467 , 468 /var/log/message には出てます。 改行もしてるんだけどなぁ。 どうもよくわからないので、あきらめることにしました。(^^; お忙しいところ、レスありがとうございました!
478 名前:login:Penguin [2005/08/19(金) 22:08:36 ID:ZOCJz/g6.net] /etc/syslog.conf に kern.* /dev/console とか書いてあるか?
479 名前:462 mailto:sage [2005/08/22(月) 13:16:52 ID:nvUzxFpI.net] >>470 を! /etc/syslog.conf の kern.* /dev/console が コメントアウトされています! なるほど、これを有効にすると確実に表示されそう ですねぇ。 今、ハードが客先に行ってしまったので 確認できないんですけど、ハードが戻ってきたら 試してみます。 ありがとうございます!
480 名前:login:Penguin [2005/10/22(土) 01:07:43 ID:EmofMJka.net] やべえ、カッコイイ......デバイスドライバ自分で書いてる人たち......。 Cは一通り入門程度のことは覚えたけど、遊びでstdio.h使うことばっかりで入門の領域出てないんですよね、僕。 Linuxにも入って間もないからシェルスクリプトの使い方もまともに知らないからLinuxプログラミングなんてまだまだ....。 お馬さんの本、大学の図書館にありましたねー、ぱらっと見たけどさっぱり......。
481 名前:login:Penguin mailto:sage [2005/10/22(土) 17:23:49 ID:0rh+z8HN.net] デバドラ本第3版の和訳もう出てるのね。 洋書を見つけてレジに持っていこうとするも、ふと横を見ると書棚にありました
482 名前:login:Penguin mailto:sage [2005/10/23(日) 03:10:35 ID:JQc1kDtY.net] >>472 努力でどうとでもなる まぁ頑張れ
483 名前:login:Penguin mailto:sega [2005/10/23(日) 06:34:02 ID:TRsS2wCF.net] SMPな環境で、あるAという区間とBという区間があるとき そこを走行するCPUをひとつだけにして、 かつAとBを同時に走らないようにしたい。 最速で処理できる区間ではspin_lock_irqsaveを使ってもいいけど ちょっと時間を食いたい処理のときには割り禁にしたくない/出来ない。 こういうときってセマフォを使うんだっけ? あと、誰かがそこを走行してたら、待たずにあきらめる処理も どうやるのかいまいちわからんです。
484 名前:login:Penguin mailto:sage [2005/10/23(日) 07:17:36 ID:TyUzTsLn.net] っ[MUTEX]
485 名前:login:Penguin mailto:sage [2005/10/24(月) 11:41:52 ID:y/bnKz7N.net] futex
486 名前:login:Penguin [2005/10/24(月) 21:00:03 ID:qab5z916.net] insmod hello.o が出来ません.... bash: insmod: command not found と出てしょっぱなから弾かれました....。 FC4を入れているのですが、ぐぐったところKernelのバージョンが 上ってからサポートされなくなった(?)のようなことがかいてありましたが... ちょっとわからないです..。
487 名前:login:Penguin mailto:sage [2005/10/24(月) 21:41:23 ID:nHBdU4lq.net] >>478 module-init-toolsが入っていない。 なんて事はまずありえないので、パス通っていないだけだろう。
488 名前:login:Penguin mailto:sage [2005/10/25(火) 01:26:16 ID:boXSHzJM.net] っ[/sbin/insmod]
489 名前:login:Penguin mailto:sage [2005/10/25(火) 01:50:35 ID:mHOxbI49.net] $ su - passwd: #
490 名前:login:Penguin mailto:sage [2005/10/25(火) 07:29:46 ID:gtGeQ0F/.net] モジュールに挑戦する前にやるべきことがあるだろう。
491 名前:login:Penguin mailto:sage [2005/10/27(木) 22:32:36 ID:5z/EqZNh.net] みなさん、返事が遅れてすみません....。 何日ものぞいていませんでした。 どうやら、おっしゃる通りパスが通っていないようでして、 あれから、/sbin/insmod [filename] を試してみましたがなんだか、だめだ!のようなメッセージが表示されて しまい、無理でした。Linuxのデバイスドライバのプログラミングは BIOSレベルでのデバイスドライバを書くときの参考にもなるかと 思ったのですが、やっぱりLinuxを初めてあまりたっていないのに 背伸びをしすぎたようです。出直してきます。 御回答いただいた方々、ほんとうにありがとうございました。:-)
492 名前:login:Penguin mailto:sage [2005/10/28(金) 05:51:31 ID:gqZeSigl.net] │ │ J ∩_∩ ∩_∩ ( ・(ェ)・) (・(ェ)・ ) エサクマか? 違うクマよ、 あわてて食いつくと面倒なことになるクマ。
493 名前:login:Penguin mailto:sage [2005/10/28(金) 08:53:26 ID:iWNW3bFs.net] >>483 いえいえ是非また来て下さいね>< 御町して檻ます><
494 名前:483 mailto:sage [2005/10/30(日) 22:20:06 ID:kv9dDPbi.net] やっとできました! >>167 さんのレスのようにお馬さん初版第二章の一番最初のなーんにもしない モジュールのソースに追加することでロードすることができました。 試しにカーネルソースのmodule.hを見てみるとメッセージでライセンスが無いといわれた経緯から MODULE_LICENSE (license)の定義をみつけ、それをキーワードにぐぐったらこれを追加するような 記述をみつけることができました。 カーネルバージョンが2.4.1以降からこうなったようなことがinsmodのmanページにあったので一気に解決しました。 たぶん、insmodが認識されなかったのはKterm上からやろうとしたからですね.... 嬉しい!
495 名前:login:Penguin mailto:sage [2005/10/30(日) 22:27:05 ID:dxIdqW+o.net] >>486 よくやった! とりあえず、今の状態を登山に例えるなら 登山用品店の自動ドアが開いたあたりだな。
496 名前:login:Penguin mailto:sage [2005/11/19(土) 17:12:54 ID:mr3HUTh9.net] 2.4から2.6へポーティングしててkoができるまで行きました。 chrdevなんですけどudevの仲間に入る方法がわかりません。 2.4のころのように直接的にmknodしてinsmodするものなのでしょうか。
497 名前:login:Penguin [2005/11/24(木) 19:13:51 ID:tUhrvxEF.net] ageようよ。
498 名前:login:Penguin mailto:sage [2005/11/25(金) 02:45:31 ID:Y8mPXznM.net] 質問なのですが、回路の方は勉強しておられますでしょうか?
499 名前:login:Penguin mailto:sage [2005/12/08(木) 03:07:19 ID:B0ejvBgu.net] ちょっと質問させて下さい。 ノートパソコンを使っているんですが、マイクとスピーカーの位置が近いのでサウンドドライバの 読み込み時からサウンドミキサーが起動して音量設定するまでの間にハウリングしたりするんです。 そこで、サウンドドライバ読み込み時にマイクをミュートにしたいと考えたのですが、 例えばドライバの中にマイクの初期音量を0にするコードを追加したりするようなことは可能なんでしょうか? # スレ違いでしたら誘導お願いします。
500 名前:login:Penguin [2005/12/08(木) 10:11:04 ID:j53o+rA9.net] ageようよ。
501 名前:login:Penguin [2005/12/11(日) 18:47:51 ID:rh+AeURO.net] はじめまして。 Windows対応のRS232C->USB変換ケーブルを使って、スイッチャを LINUXのPCで制御しようとしているんですが、そもそもドライバを 自分で作る必要があるのでしょうか? LINUXの環境はOSがRED HAT 9でカーネルは2.4です。 もしくは必要かどうかを確認する方法ってあるのでしょうか? ご存知の方がいらっしゃいましたら、答えていただけないでしょうか? よろしくお願いします。
502 名前:login:Penguin [2005/12/11(日) 21:37:52 ID:ZmBeQHZx.net] >>493 自動認識されないか?? suse10だと自動で使えた けどBreak信号遅れなくてヒデブだった
503 名前:493 [2005/12/13(火) 02:44:01 ID:bCmTAm2t.net] >>494 お返事ありがとうございます。 /var/log/messagesでログを見たら、新しいUSBデバイスが認識できている っぽいことが書かれてました。 たぶんRS232C->USB変換ケーブルは認識できてると思います。 で、早速プログラム組んでスイッチャに信号を送ってみたんですが、 これがうんともスンとも言わなくて。 もしかして変換ケーブルだけ認識しててスイッチャは認識していないかも って考えたのですが、シリアル通信だから信号を送るだけなら送れますよね?
504 名前:login:Penguin mailto:sage [2005/12/13(火) 21:07:28 ID:sg6goQTn.net] /dev/ttyUSBの読み書き許可がなかったよ
505 名前:色情前世鑑定士 mailto:sage [2005/12/13(火) 23:49:52 ID:xAfc4hOf.net] >>495 ボーレートとかあってますよね? sttyとか使って動作中のUSBシリアルの各設定を 観察・設定してみるといいかもしれません
506 名前:login:Penguin [2005/12/17(土) 23:06:34 ID:oosooT9i.net] >>496 ,497 助言ありがとうございます。 パーミッションに関してはchmod 666を実行したので、大丈夫だと思います。 ボーレート他の初期設定は、少し自信がないのですが、他のシリアル通信 のプログラムを参考にして一通りプログラム内で設定しています。 sttyで確認するというのは知らなかったので、早速やってみたいと思います。 ありがとうございます。
507 名前:login:Penguin mailto:sage [2006/01/28(土) 02:19:52 ID:eIqcEw8I.net] 馬本買った記念age
508 名前:login:Penguin [2006/01/28(土) 02:22:46 ID:eIqcEw8I.net] ageて無かった…orz
509 名前::login:Penguin [2006/01/28(土) 13:24:51 ID:z02En7Mn.net] tky007lip10.iij.net [210.130.172.193]
510 名前:login:Penguin [2006/02/06(月) 00:56:30 ID:gxgsnq8Z.net] age
511 名前:login:Penguin mailto:sage [2006/03/19(日) 20:02:53 ID:wmRM5297.net] www.doodoo.ru/image-2006/03-16-yeticrab.jpg
512 名前:login:Penguin mailto:sage [2006/03/21(火) 02:41:04 ID:wxAXo3DG.net] SMPプログラミングの入門ページとかありませんかね? どちらかというとAの処理をCPU0に割り当ててBの処理を1に って感じで分けながら処理するタイプのプログラミングなので ASMPのほうがよいのですがこのような話題はどこで聞けばよいのでしょうか
513 名前:login:Penguin [2006/03/30(木) 20:19:25 ID:P2MixPUa.net] なんか誰も見てないような気もするけどちょっと質問 Redhat ES4(kernel 2.6..9-11 x86-64) CPU Xeon 2.8G(HT-on EM64T) メモリ4GB な環境で、SCSI Low level driverを書いてるんですが、 物理メモリ4GBしかないのに、SCSI Mid levle driverから 渡されてくる転送アドレス(物理アドレス)が4GBを超えた アドレスが渡されて来ます。 当然メモリ未実装エリアのアドレスなので転送しようにも 出来ない訳でSCSIカードが転送しようとしてエラーとなり ます。 pci_set_dma_msakに指定している値は、SCSIカードがサ ポートしてるアドレス範囲の40bitを指定しています。 これを32bitマスクにすると4GBを超えるアドレスは来な くなるんですけど、もしかしてpci_set_dma_msakて実装メ モリ量も気にしなければいけないんでしょうか? 馬本見てもそんな事書いてないし。たんにハードウェアの アドレス範囲を宣言するだけと認識してるんですけど。 何方かご存知の方居られたらご教授願います。
514 名前:login:Penguin mailto:sage [2006/03/31(金) 11:41:12 ID:zMWwd0XE.net] 適当に書いてみる。 他のドライバ見たらわかるけど、実装メモリは気にしない。 pci_dma_syncなんたらが失敗するの?
515 名前:login:Penguin [2006/03/31(金) 21:18:57 ID:OpI/WZIP.net] おお見てる人がw 実装メモリはカーネルが握ってるから本来気にする必要が無いのは 分かってるんですが、そのカーネルから来るアドレスが実装容量を超 えたアドレスを通知してくるので悩んで降ります。 pci_dma_syncでなくpci_map_sgで作られたスキャッタ/ギャザーリスト の中の物理アドレスが未実装領域のアドレスを指してる感じですね。 pci_set_dma_maskで32bitマスク(0xffffffff)してやればpci_map_sgで 作られたスキャッタ/ギャザーリスト内のアドレスは4GB未満のアドレ ス範囲で収まる感じです。(当然といえば当然) それを40bitマスク(0xffffffffff)にすると、実メモリ4GBしか無いにも 関わらず32bit以上、40bit未満のアドレスがスキャッタ/ギャザーリス トに含まれてしまいます。 カーネルのバグを疑い出して、カーネルソース追い始めた所でなの で実際にアドレス作り出す所まではまだ追いきれて無い状態です。 ご指摘の通り他のSCSI系ドライバのソースも参考にしてますが、実 装メモリなんて気にして無いしなんとも不可解…。 元々Solarisのドライバ作ってたんだけど、Linuxは今回初でかなり困っ てる状態ですorz
516 名前:login:Penguin mailto:sage [2006/03/32(土) 02:19:11 ID:9G03KeUN.net] また別の人が適当に書いてみる。 hugemem使ってみては?
517 名前:login:Penguin mailto:sage [2006/03/32(土) 10:42:43 ID:afhcBPMx.net] hugememってi386じゃなかったっけ? x86_64で4G載ってるって事は、IOMMUとか関係あるのかな。 結局virt_to_bus(pci-nommu.c)かvirt_to_phys(pci-gart.c)呼んでるから、 scatterlistのpageが期待しない値なんでしょうけど、そこら辺調べたらいいのかな。 ドライバいじったことはあるけど、書いたこと無いので適当です。
518 名前:login:Penguin mailto:sage [2006/03/32(土) 10:47:55 ID:shKEnT0S.net] 似たようなドライバの中身を調べてみればすぐわかりそうなものだが
519 名前:login:Penguin mailto:sage [2006/03/32(土) 15:12:47 ID:afhcBPMx.net] >>510 俺もそう思って、見たけどわからなかったw SCSI側からと、PCI側から見たら、よくわからなくなった。。 bioがよくわからん。 pci_set_dma_maskって要するにbounceするかどうかなのか? あとは、ページ確保するときのDMA/DMA32の切り分け。
520 名前:login:Penguin [2006/03/32(土) 16:46:33 ID:p6EHT8/a.net] うぉレスが増えてる。 >>508 hugemem は、>>509 が指摘の通り、x86_64では無いですね。 ただこのドライバは、一つのソースでRedhat ES4の 32bit Uni-processer/ SMP/hugemem kernelとx86-64 kernelの4種類サポートでして、実装メモリ 12GBのマシンでhugememカーネル使ってる分にはアドレスは正常な値が 返って来てます。 hugemem kernelとx86-64 kernelではDMAアドレスは64bit幅で来るのでこ の二つのカーネルの時は処理(アドレス計算とか)は共通にしてます。 >>509 正にそうです。scatterlistに入ってるpageが明後日の所を指し示してるので、 そのままSCSIカードに送るとカード上のIOPのファームがアクセスに行くとメ モリが無いのでメモリアクセスエラーを検出します。 >>510 SCSIカードと言うか実はRAIDコントローラでして、カード上にPCI-PCIブリッ ジが乗っかっててIOPとSCSIコントローラが載ってるカードです。 カード−ドライバ間はI2Oで通信してて、近い奴としてはmagariadとかqla1280 当たりなんですよね。他にも色々見てるんですが違いはそうは無い感じ。 >>511 bioはいまいち良く分からないですね。 ページ確保の時のDMA/DMA32て、GFP_DMA/GFP_DMA32フラグの事でし ょうか? 今使ってるカーネルをみるとGFP_DMA32が未定義でして、kernl-2.6.14とか 2.6.15とか見ると定義されてるんですよね。 なんかその辺も絡んでるのかなと気にはなってはいました。 皆さんアドバイスありがとうです。 もう少しカーネルソース見て来ます。
521 名前:login:Penguin mailto:sage [2006/04/04(火) 08:20:23 ID:0xn4pI8o.net] 気になるから、どうなったか知りたいです。
522 名前:login:Penguin mailto:sage [2006/04/04(火) 13:11:55 ID:p7vmOtaT.net] >>504 sched_setaffinity(2)
523 名前:login:Penguin mailto:sage [2006/04/06(木) 22:28:49 ID:Mnqgo3eJ.net] >>513 まだ色々と追っかけてる途中です。 とりあえずPCIドライバ周りから追っかけ中です。 PCIドライバを見た限りでは、pci_map_sgすると中でdma_map_sg 呼び出しててその中見てもあんまり大したことしてなさそうですね。 やはりbio周りも見ないと駄目なのかも。 もうちとかかりそうですが、わかり次第、結果をお知らせします。
524 名前:505 mailto:sage [2006/04/08(土) 14:24:03 ID:+mDmSXuo.net] 原因わかりました。 結論から言うと、pci_map_sg()で作られるSGリストのアドレスは正常でした。 問題なのはpci_map_single()で出てくるアドレスが、低位メモリだとカーネル 論理アドレスを返し、高位メモリだとカーネル仮想アドレスを返してるのが、 原因でした。 高位メモリだとページをダイナミックに確保されるため、物理アドレスとペー ジが1:1でマッピングされないので、pci_map_single()だとvirt_to_physしてる だけなので使えませんね。 なのでpci_map_pageで確保してやれば問題は消えました。 SGリストに変なアドレスが入ると言ってましたが、カードのファーム側で受 け取ったリストを見てたのですが、カード内でドライバから受けた転送アドレ スをカード内部のバッファに結びつける為にファームが独自にSGリストを 再構成しており、そのリストがpci_map_sg()で作られた物と勘違いしてまし た。OTL 色々アドバイスありがとうございました。
525 名前:login:Penguin mailto:sage [2006/04/08(土) 16:09:33 ID:MBAxFSYD.net] >>516 解決おめでとうございます。 一般的に使えそうなものならまたどこかで公開してくださいな。
526 名前:login:Penguin mailto:sage [2006/04/10(月) 22:36:55 ID:C69QC/MM.net] >>516 よかったよかった。 私もソース読んで少し勉強になったよ。 ネットワーク系しかいじったこと無かったから。
527 名前:505 mailto:sage [2006/04/10(月) 23:00:56 ID:9eFrvNz6.net] >>517 >>518 ありがとうございます。 馬鹿高な価格の独自のカード用のドライバで有用性はかな り低いです。。。一応GPLなんですが、カード買わないと非 公開という阿保な方針らしいので、一般公開は難しそうです。 Linuxでの初開発で手探り状態でしたが、お蔭様で何とか目 処が立ってきた感じです。まだ細かな問題がありますが…。 Linuxでの開発はカーネルや他のドライバソース読まなけば 資料が少
528 名前:ない所がキツイですね。 まぁコード上のテクニックとか色々勉強になる部分は多いけ ど、納期のある仕事でやるのは大変ですね。 流石UNIX板だけあって、建設的なスレで助かりました。 [] [ここ壊れてます]
529 名前:login:Penguin mailto:sage [2006/04/10(月) 23:42:28 ID:Cs5Rh9+Y.net] >>519 > Linuxでの開発はカーネルや他のドライバソース読まなけば > 資料が少ない所がキツイですね。 ちょっと教えてください。 Linuxより資料が多いOSってなんのことを指してますか? 自分は主にLinuxの開発に携わってますが、いつもオープンソースのありがたみを 感じながらやっているので、Linuxが資料が少ない、というのは意外です。
530 名前:login:Penguin mailto:sage [2006/04/11(火) 00:42:17 ID:KjDgNH9L.net] OSによっては中身がさっぱりわからないままドライバ開発しなきゃいけない事もあるしな。 つーか、そっちのほうが多そう。
531 名前:login:Penguin mailto:sage [2006/04/11(火) 00:47:03 ID:rZUiZ4e7.net] >>520 NetBSDはそういう部分のmanpageが充実してるとか聞きますな。 linuxはmanpage書き上げたら実装が別物になってたなんて笑えん状況がありそうだなあ…
532 名前:login:Penguin mailto:sage [2006/04/11(火) 00:57:41 ID:9nKANwAS.net] そこでmain treeにマージですよ。 main tree内の変更はたいていは面倒をみてくれる。
533 名前:login:Penguin [2006/05/11(木) 18:07:51 ID:PmwpTb/Y.net] ある内蔵デバイスのドライバでPCの機種毎に処理を変えなければいけない部分が あり、ユーザ負担を減らすためにドライバ側で自動判別したいと思っています。 機種は違うのにSubvendorIDやSubdeviceIDまで何故か一致しているので、SMBIOS のDMI情報を参照して機種を判別したいのですが、これって可能なんでしょうか? そんなやり方は行儀が悪いとか、他にもっとまともなやり方があるとか何でも 構いませんので、どうかご教示をよろしくお願いします。m(__)m
534 名前:好色少年のススメ mailto:sage [2006/05/11(木) 23:43:06 ID:Uu/mTCgT.net] 確かに行儀はよくないかも 新しいハードが出るたびにパッチ提供とか考えたら面倒だし たとえそれが自社ハードだとしてもバージョンアップあるだろうし 判別はユーザランドで行う方が気分も楽だし処理も楽だしバグも少ない
535 名前:login:Penguin mailto:sage [2006/05/26(金) 20:11:11 ID:YiUMorw/.net] ttp://lkml.org/lkml/2006/5/24/238
536 名前:login:Penguin [2006/08/20(日) 01:06:14 ID:BobpEKad.net] カーネル層のモジュールのテストプログラム を作ってるんですが、カーネル層でinit_moduleや ioctlからスレッドを起こして daemonのように 動作させることってできるんでしょうか? Linuxデバイスドライバを読んでもスレッドを 起こすような処理は載っていないようなので 参考書籍だけでも教えていただけるとありがたいです。
537 名前:login:Penguin mailto:sage [2006/08/20(日) 11:29:13 ID:EWXtKjUy.net] >>5
538 名前:27 kernel_thread daemonize [] [ここ壊れてます]
539 名前:login:Penguin mailto:sage [2006/08/20(日) 20:55:18 ID:bg2sTV9e.net] というか、普通に載ってるよね
540 名前:login:Penguin [2006/08/24(木) 12:55:11 ID:6WITQjoc.net] そいや、最近のノートPCには指紋センサーがあるけど あれはハックできるものなの?
541 名前:login:Penguin mailto:sage [2006/08/24(木) 13:34:05 ID:wKY4BjAS.net] >>530 OSM 8月号に記事載ってたよ。 shop.sbcr.jp/bm_detail.asp?sku=1016200604
542 名前:login:Penguin mailto:sage [2006/08/25(金) 00:34:04 ID:CPHGcnDi.net] >>531 せんきゅー!
543 名前:login:Penguin mailto:sage [2006/08/26(土) 07:37:08 ID:F4NpQAPn.net] >>529 すみません。ページご存知でしたら教えてください。 第3版持ってます。
544 名前:login:Penguin mailto:sage [2006/10/04(水) 21:49:48 ID:EGTQjLn1.net] すみません、どなたかわかる方教えてください。 現在、XFree86でグラフィックドライバを作ってます。チップは独自のものです。 バス等に接続されておらず、メモリマップドI/Oでアクセスします。 一応画面は出たのですが、1024*768だと縦が半分しか表示されず、 (縦に圧縮される感じ。マウスカーソルが縦につぶれている) 1280*1024だと画面が横に5個くらい表示されてしまいます。 使用しているチップは1ライン4096byte固定なので、解像度に応じて次のラインを 描画するアドレスを更新しなくてはなりません。 カーネルのFBドライバだとline_lengthとかの変数に設定してあげればうまいこと 描画してくれるのですが、XFree86の構造体にはそういった変数が見当たりません。 カーネルFBドライバのline_lengthとかに相当するものはどれでしょうか? 縦に圧縮されるのと画面が5個くらい表示されるのは、別問題な気がしてます。 今、手元にソースがないんですが、InitをするときにvirtualYを*2してやると縦が一見 正常っぽく表示されました。カーソルとかが縦につぶれたままなので、根本対策には なっていません。
545 名前:Mr.名無しさん [2006/10/09(月) 16:36:24 ID:OGKR436u.net] ■■■■■■■■■■■■■■■■ ■ ■ 違う板にコピペすると、四角の枠の中に ■ ■ メッセージとURLが現れる不思議な絵。 ■ ■ ■ ■ (その仕組みがリンク先に書いてある) ■ ■ ■ ■ この原理を応用すると、まったく新しい ■ ■ コピペが作れる予感。 ■■■■■■■■■■■■■■■■
546 名前:login:Penguin mailto:sage [2006/11/05(日) 18:18:15 ID:j6ZWju7f.net] >>534 グラフィックチップのモード設定を間違えている予感
547 名前:login:Penguin mailto:sage [2006/12/14(木) 22:35:16 ID:JyAlagq8.net] すみません どなたか助けて下さる方はいらっしゃらないでしょうか? 当方PCIデバイスのドライバをLinuxデバイスドライバ読みながら 作成しております。 今DMAを用いてread,writeさせようと思っているのですが、 うまく転送ができておりません。 DMA転送の関数としては dma_buff = kmalloc( count, GFP_KERNEL | __GFP_DMA) bus_addr = pci_map_single( pci_dev, dma_buff, count, direction ); flags = claim_dma_lock(); disable_dma(channel); clear_dma_ff(channel); set_dma_mode(channel, mode); set_dma_addr(channel, bus_addr); set_dma_count(channel, count); enable_dma(channel); release_dma_lock(flags); てな感じです。 get_dma_residueで転送できてるかどうかみてるのですが まったく転送されてないみたいです。 DMAコントローラのレジスタの設定とかは ほかに何かいるのでしょうか。 ちなみにターゲットのPCはPen3 800MHZ チップセットは815です。 どなたかお知りの方いらっしゃったら お願いします。
548 名前:login:Penguin mailto:sage [2006/12/15(金) 11:02:30 ID:Qc0JIFW5.net] >>537 見ているものがまったく違っているような気がしますが。 PCIでbus master転送したいんじゃないの?
549 名前:537 mailto:sage [2006/12/15(金) 15:20:46 ID:NJleqqJR.net] おお、早速のレスありがとうございます。 DMA転送するにはチップセットの中の8237DMAコントローラをいじればいいって思ってました。バスマスタについて少し調べましたが、IDEのDMAもバスマスタになるんですね、知りませんでした。 となるとこのバスマスタはどうやればいいのでしょうか?参考になるものでもいいので、教えてください、お願いします。
550 名前:login:Penguin mailto:sage [2006/12/15(金) 23:40:00 ID:72pQobUh.net] ターゲットとなるPCIデバイスの仕様がわからなきゃデバイスドライバは書けないよ せめて型番だけでも出してくれ
551 名前:login:Penguin mailto:sage [2006/12/16(土) 18:42:01 ID:wkeveW0d.net] ドライバというか、モジュールの話なんですけど スレッドを使ったせい?なのか、psすると 3635 pts/0 R 0:00 modprobe hoge と残るんですが、これは出ないようには出来ないものなんでしょうか? 勿論 rmmod hoge すると消えるんですけど。
552 名前:537 mailto:sage [2006/12/17(日) 19:34:20 ID:BtOAund7.net] ターゲットのデバイスは内製のボードなのですよ orz となると やっぱボード自体を作った人に聞いたほうがいいのかな?
553 名前:login:Penguin mailto:sage [2006/12/17(日) 19:50:10 ID:pl1Ns6BC.net] チップのレジスタ仕様と、制御のシーケンスがわからないとドライバは書けないよ。
554 名前:login:Penguin mailto:sage [2006/12/17(日) 20:36:37 ID:6E+xGodr.net] >>542 当然聞くべきなのですよ
555 名前:login:Penguin mailto:sage [2006/12/17(日) 22:08:40 ID:SVqrrgVr.net] チップも内製なのか? だったらデバイスドライバもチップ開発チームが書くものだよな 少なくともサンプルコードの類は書くはずだ そうでなくて市販のチップを使ってPWBAだけ内製したのなら 使用したチップのデータシートなりプログラマーズガイドなりを読めばいいだけの話
556 名前:537 mailto:sage [2006/12/18(月) 01:17:23 ID:5wopQO2S.net] ほぼ内製だったと思います。 ちょっと月曜日会社いったら、聞いてみようと思います。 大変参考になりました、ありがとうございました。 ところで、これは単なる質問ですが、 マザボのチップセットにある8237とかの DMAコントローラは古いし遅いみたいだから PCIとかIDEとかに使われてないみたいだけど、 Pen3 800MHzとかでも PIOのが早いの?
557 名前:login:Penguin mailto:sage [2006/12/18(月) 07:35:08 ID:a8xYea1H.net] 最近のデバイスで言うDMAはバスマスタDMAのことだよ。 バスマスタってのはデバイス側が主導権とってバスを制御して CPUの頭越しにメインメモリにデータ出し入れすることだ。 そのためにはデバイスにバスをのっとってデータ転送しろって命令を CPUからデバイスに発行する必要がある。 その手続きを知るためにレジスタなりデータシートなりを調べろって みなさん言ってるんだよ。
558 名前:537 mailto:sage [2006/12/19(火) 00:01:59 ID:2Sv0wv+g.net] なるほろ、大変勉強になりました。 ハード屋さんからマニュアルゲットして がんばってみます。
559 名前:login:Penguin [2006/12/19(火) 23:53:27 ID:g20RCuxU.net] >>537 つ ttp://www.oreilly.co.jp/books/4873112532/
560 名前:login:Penguin mailto:sage [2006/12/27(水) 05:38:58 ID:krfJbXj5.net] すみません ドライバでDMA転送するための連続したメモリ領域(64MB)を確保したいのです。 kmallocで確保可能な連続したDMA領域は最大128kB ということはネットで検索すると出て来たのですが、 どうすればドライバのDMA転送で利用可能な128kBを超えるの連続領域を確保出来るでしょうか? OSはlinuxカーネル2.6です。 ご存じの方おられましたら御教示戴きたくよろしくお願い致します。
561 名前:login:Penguin mailto:sage [2006/12/27(水) 10:51:31 ID:mQ5aQPBa.net] >>550 とりあえずそのふざけた石を投げ捨てれ。 やるならalloc_pagesだろうなあ。そのサイズで連続領域を
562 名前:ネ単に確保できるとは思えんが。 ついでに書いておくと128KByte制限は8237の呪いなのでPCIならそんなものはない。 [] [ここ壊れてます]
563 名前:login:Penguin mailto:sage [2006/12/27(水) 12:43:43 ID:krfJbXj5.net] 投げ捨てぇー…れないorz >>551 早速ありがとうございます。 検索してても思ったのですが、 なんか連続領域"64MB"っていうのは常識外れっぽいのですね… とはいえ組込み系で使った独自ロケットI/OのPC向け転用の必要があり、 石を投げ捨てる訳にもいかず今回の質問とあいなりました。 alloc_pages、試してみます!! 回答感謝いたします。 センキュー!!!!
564 名前:login:Penguin mailto:sage [2006/12/28(木) 02:29:39 ID:4Oi09t3r.net] かなり強引だけど、カーネルオプションで使用メモリ量に制限かけといて、 未使用領域を作った上でそこ使っちゃえば?
565 名前:login:Penguin mailto:sage [2006/12/28(木) 12:33:40 ID:vc2Jrznf.net] >>553 MMUの面倒は誰が見るですか? 面倒な世の中になったのう… 物理アドレスで完結してりゃなにも考えなくていいのに。
566 名前:login:Penguin mailto:sage [2006/12/29(金) 09:28:41 ID:JbqPlaTm.net] >>553 アドバイスありがとうございます。 ちょっと恐いですが、検討してみます。 >>554 MMU…よく判ってません…勉強してきます。 ご指摘ありがとうございます。 いろいろレスありがとうございました。 スレの皆様が良い年越しを迎えられますように!! それでは、また来年!!
567 名前:login:Penguin mailto:sage [2006/12/29(金) 10:44:35 ID:PkRb73AX.net] RocketIOってことはXilinxのFPGAだよな だったら128KBのブロックのアドレスポインタリストを渡すと 自動的にリスト通りブロックをたどって転送するように FPGA回路を再設計するのがまっとうな手段だろうな デバイスドライバやOS設定の変更ではどうにもならんと思う
568 名前:login:Penguin mailto:sage [2006/12/30(土) 00:07:40 ID:SZb58Bld.net] カーネル組込みで、ドライバ初期化のときなら確保できそうな気もするな。 開放したら二度と確保できなくなりそうだが。
569 名前:login:Penguin mailto:sage [2007/01/01(月) 22:05:23 ID:uXbHjsPd.net] 明けましておめでとうございます。 さらにレス&アドバイスありがとうございます。 うー勉強不足。知らないこと多過ぎますね!ハードル高いです orz 安定化まで考えると更にハードル上がりそうですが、ハード側とも相談してみます。 それでは本年もよろしくお願いいたします!!
570 名前:login:Penguin mailto:sage [2007/01/19(金) 00:41:46 ID:xhnZtOc/.net] 皆様に聞きたいのですが 当方Linux 2.6カーネルの元でドライバの開発を行っています。 起動してからinsmodでインサートするタイプのモジュールを作っています。 カーネルをフリーズさせたりして固まらせてしまって、やむなくリセットボタンを 押す事が多々あるのですが、その際にファイルシステムのチェックが 強制的に行われてしまい、これでかなりの時間をロスしてしまいます。 何とかこのファイルチェックを飛ばして時間の短縮を行う方法はないでしょうか? VMwareとかの仮想マシンを使えばいいのかもしれませんが、 特殊命令を使っておりますので、仮想マシンがその命令をサポートしていないために 導入できません。
571 名前:login:Penguin mailto:sage [2007/01/19(金) 02:15:30 ID:VcfRHkiI.net] >>559 mount -o remount,ro / とかやって、書き込み不可にしてから遊べばよくね?
572 名前:login:Penguin mailto:sage [2007/01/19(金) 08:04:16 ID:/YcMJPuk.net] /etc/fstabの6番目のフィールドの値を0にする。man fstabしてみそ。 tune2fsで-c 0とかもしておいたほうがいいかも。
573 名前:login:Penguin mailto:sage [2007/01/19(金) 20:24:37 ID:xhnZtOc/.net] >>560 でもそれをやると、kmallocをGFP_KERNELで使ったときに メモリがスワップアウトしたらまずいことになりませんか? >>561 やってみました なんかファイルチェックをしなくなったことで壊れそうでもありますが やっぱり我慢してチェックしたほうがいいでしょうか...
574 名前:login:Penguin mailto:sage [2007/01/20(土) 19:48:34 ID:3aq4dRUa.net] >>562 /だけ守ればいいので、なりません。
575 名前:login:Penguin mailto:sage [2007/01/21(日) 01:23:20 ID:QaYT7DDq.net] >>563 ああそうか、swapファイルはswapパーティションですもんね ありがとうございます
576 名前:login:Penguin mailto:sage [2007/01/27(土) 11:05:03 ID:4J9B+fMX.net] 評価機はネットブートさせてNFSroot稼動させればいつ飛んでも 大丈夫な環境にできるんじゃない?
577 名前:login:Penguin [2007/02/05(月) 06:03:38 ID:9i1Bwf6u.net] 通常、Linuxのドライバをインストールする時はカーネルにパッチを当ててカーネルごと コンパイルしなければいけないけど、Windowsのようにカーネルソース無しでドライバを コンパイルしてインストールできるようにする方法ってあるの?
578 名前:login:Penguin [2007/02/05(月) 06:26:04 ID:9i1Bwf6u.net] ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8E%E3%83%AA%E3%82%B7%E3%83%83%E3%82%AF%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB には 現在のカーネルではモジュールをカーネルの構築状態に依存する事なく追加できると 書いてあるけど、カーネル側でインターフェースが変更になった場合は旧ドライバは 使用できなくなるんじゃないの?それとも、カーネル側で旧インターフェースが温存されるの? あと、「カーネル側に受け皿となるインターフェースがモジュール毎に用意されている必要がある」 Linuxはどのバージョンまでなの?
579 名前:login:Penguin mailto:sage [2007/02/05(月) 06:56:37 ID:Zi/ATtvA.net] >>566 いまはそんなことしなくていいよ insmod rmmodで動的にドライバを挿入したり削除したりできる
580 名前:login:Penguin mailto:sage [2007/02/06(火) 01:26:43 ID:j3mwrUGC.net] いやぁソースはいるだろ。
581 名前:login:Penguin mailto:sage [2007/02/06(火) 08:59:25 ID:jQKQh5/W.net] ソースはいるけどカーネルのリビルドはいらない
582 名前:login:Penguin mailto:sage [2007/02/06(火) 10:27:34 ID:Rm04tDsq.net] いやぁリビルドは途中までいるだろ。
583 名前:login:Penguin [2007/02/10(土) 16:03:43 ID:XWBlzb1u.net] 初歩的な質問ですがよろしいでしょうか 私はlinuxカーネル2.6.13のモジュールでhello worldのプログラムを組込みたいのですが上手くいきません gcc -c module.c -Wall -Wstrict-prototypes -O -pipe -m486 この様にコンパイルしたのですがカーネルのソースコードに構文エラーがあるようでコンパイルが通りません カーネルのソースコードを見てみても構文エラーらしき物はみられませんでした どうすればコンパイルが通るでしょうか エラーメッセージとソースコードを書いておきます ソースコード sakuratan.ddo.jp/uploader/source/date32474.c エラーメッセージ sakuratan.ddo.jp/uploader/source/date32475.txt
584 名前:login:Penguin mailto:sage [2007/02/10(土) 17:14:52 ID:d+hexa9D.net] >>572 普通はMakefile書くわな
585 名前:login:Penguin mailto:sage [2007/02/10(土) 17:47:20 ID:a+8l3AD+.net] Makefileに obj-m += module.o って書いて make -C /usr/src/linux M=$PWD modules
586 名前:login:Penguin [2007/02/10(土) 19:18:09 ID:XWBlzb1u.net] >>543 そうみたいですね 私のみた資料では、そうコンパイルする様に書いてあったのですが結構古い奴だった のでしょうか >>574 本当にありがとうございました。 その方法で無事にモジュールを作れました 感謝感謝
587 名前:542 [2007/02/10(土) 19:55:09 ID:XWBlzb1u.net] .koってファイルが出てきたらからinsmodにかけてみたら insmod: error inserting 'module.ko': -1 Invalid module format って言われワラタ turbo linuxなんて微妙なの使ってるせいなんですかねこれは.....
588 名前:542 mailto:sage [2007/02/10(土) 20:03:22 ID:XWBlzb1u.net] 今までsage忘れてたごめん
589 名前:login:Penguin mailto:sage [2007/02/10(土) 20:06:01 ID:791EznrY.net] 話題提供時はage、その後はsage ってのが一番角が立たない。 正直、どうでもいいけど。
590 名前:login:Penguin mailto:sage [2007/02/10(土) 20:14:38 ID:a+8l3AD+.net] /usr/src/linux が今動いてるカーネルソースじゃないとか
591 名前:542 mailto:sage [2007/02/10(土) 21:33:23 ID:XWBlzb1u.net] >>579 そうですね 元からあったソースでコンパイルしようとすると必要なMakefileがないとかで無理 でしたから、kernel.orgから同じバージョンのコード落してきてまた設定しなし いた訳ですがそれが原因ですかね。 ディストリとかは独自の変更を加えているらしいし、また変更が加えられていない 純粋なカーネルインストールしてから出直してきます
592 名前:login:Penguin [2007/02/18(日) 23:17:11 ID:PxJoV1oA.net] すみません。kmallocで確保したメモリ領域をDMA転送するために、__paで変換して 渡してやるのと、dma_map_singleで変換して渡すのと、違いはあるのでしょうか? たとえば性能(処理効率)が違うとか? どう使い分けているのでしょうか?
593 名前:login:Penguin mailto:sage [2007/02/19(月) 10:56:01 ID:QHwPPpDN.net] UNIXTIMEを日付文字列に変換するのに なんかAPI用意されてないの? "2007/02/19 12:34:56" とかその程度のでいいんだけど。
594 名前:login:Penguin mailto:sage [2007/02/19(月) 11:19:53 ID:I/jMKPR3.net] strftime
595 名前:login:Penguin mailto:sage [2007/02/19(月) 13:52:20 ID:QHwPPpDN.net] >>583 いや、デバイスドライバ内でなんだけど、あったっけ? いや、ない。
596 名前:login:Penguin [2007/02/21(水) 07:53:48 ID:Wuryqsb6.net] Linux 2.6.16用のパッチとe2comprを同時に使いたいのだが、e2comprは2.6.10用まで しかない。カーネルとドライバが完全に分離され、カーネルバージョンが上がっても カーネル側の旧インターフェースが温存されるようになれば、ドライバの開発が停滞しても 最新のカーネルでそのドライバを使い続ける事ができる。
597 名前:login:Penguin mailto:sage [2007/02/22(木) 01:34:45 ID:I6i5DnCh.net] そのカーネル側のABI決めようぜ話はLinusに一蹴されてるんじゃなかったけ?
598 名前:login:Penguin [2007/02/22(木) 09:14:42 ID:y9d4aAAQ.net] >>586 カーネル側のドライバとして旧バージョンのカーネルのモジュールをロードできる ラッパーを作成して、カーネル側インターフェースが変更されるたびにラッパーを 更新していく手もあるべ。
599 名前:login:Penguin [2007/02/22(木) 09:16:48 ID:y9d4aAAQ.net] ラッパーにx86エミュレーションを追加するとザウルスでWindowsのドライバを読み込めたりもする。
600 名前:login:Penguin mailto:sage [2007/02/22(木) 22:34:24 ID:I6i5DnCh.net] つ NDISwrapper
601 名前:login:Penguin mailto:sage [2007/02/23(金) 00:44:11 ID:cxn/yRhr.net] つcapative ntfs
602 名前:login:Penguin [2007/04/03(火) 00:09:41 ID:3ycIJVku.net] <linux/module.h>が無いんだけど、 デバドラ開発するには、なにかパッケージ追加しなきゃいけないの? 使ってるのはfedora6
603 名前:login:Penguin [2007/04/03(火) 00:24:35 ID:3ycIJVku.net] yum install kernel-devel してもダメだな。何が足りない?
604 名前:login:Penguin mailto:sage [2007/04/03(火) 00:41:11 ID:xSB1c0Df.net] >>591 カーネルソースそのものじゃね?
605 名前:login:Penguin [2007/04/03(火) 01:00:14 ID:3ycIJVku.net] >>593 あ、カーネルソースに有った。ありがとう。 普通、/usr/includeには入らないの?
606 名前:login:Penguin [2007/04/03(火) 01:08:21 ID:3ycIJVku.net] あと、 man printk って出ないの?
607 名前:login:Penguin mailto:sage [2007/04/03(火) 02:25:43 ID:xSB1c0Df.net] >>595 出ないんじゃよ
608 名前:login:Penguin mailto:sage [2007/04/03(火) 02:43:03 ID:GYgStP3Z.net] >>594 カーネル用ヘッダと、ユーザプログラム用ヘッダは まざるとまずいから分離されてる。だから/usr/includeにカーネル用ヘッダはふつうは無い。
609 名前:login:Penguin mailto:sage [2007/04/04(水) 00:07:01 ID:NkZt7NAi.net] /usr/include/linux に入ってないか?鳥にもよるけど。
610 名前:login:Penguin [2007/04/04(水) 00:15:23 ID:wyW6RdvI.net] カーネル用ヘッダと、ユーザプログラム用ヘッダがまざると、何でとまずいだろ。
611 名前:login:Penguin [2007/04/04(水) 00:23:08 ID:ICf0Aql0.net] 爆発しても知りません。
612 名前:login:Penguin mailto:sage [2007/04/04(水) 00:42:58 ID:IK0cizpI.net] >>598 ,>>599 /usr/include/linuxにあるのは確かにカーネルのヘッダだが、glibcをビルドするときに使った アーキテクチャ依存部分とかのカーネルヘッダ、 /usr/src/linux/includeにあるのは「現在使用中のカーネル」のヘッダファイル だよね。(間違ってたらスマソ) これらが同じだとちょっとカーネルに変更があったときとかまずくない? 最悪glibc動かなくなるときもあるかと。
613 名前:login:Penguin [2007/04/08(日) 00:07:55 ID:gmHS+Fdj.net] >>17 をコンパイルするとエラーがたくさん出るんだけど何が悪いの?? エラーの一部 ↓ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’ from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h: 20, from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9, from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49, from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
614 名前:login:Penguin mailto:sage [2007/04/08(日) 00:09:38 ID:2aPQfsMY.net] 脳?
615 名前:login:Penguin [2007/04/08(日) 00:10:46 ID:gmHS+Fdj.net] >>603 いや、たぶん違うと思う。 こんなのも出てる。 ↓ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat ion specifiers or ‘...’ before ‘u8’ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat ion specifiers or ‘...’ before ‘u8’
616 名前:login:Penguin mailto:sage [2007/04/08(日) 00:11:42 ID:2aPQfsMY.net] じゃ、頭?
617 名前:login:Penguin [2007/04/08(日) 00:12:08 ID:gmHS+Fdj.net] NGID ID:2aPQfsMY
618 名前:login:Penguin mailto:sage [2007/04/08(日) 00:15:19 ID:2aPQfsMY.net] マジレスすると、読み込むヘッダーファイルが足りないんだよ。
619 名前:602 [2007/04/08(日) 00:19:06 ID:gmHS+Fdj.net] 環境はVMWare上でfedora 6を動かしてる。 こんなのも。 ↓ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/bitmap.h:149: error: ‘BITS_PER_LONG’ undeclared (first use in this function)
620 名前:login:Penguin mailto:sage [2007/04/08(日) 00:20:46 ID:2aPQfsMY.net] BITS_PER_LONGを定義しているファイルをさがすことだね。
621 名前:login:Penguin mailto:sage [2007/04/08(日) 00:29:38 ID:nSKp4d9I.net] なんだこのキチガイ
622 名前:login:Penguin mailto:sage [2007/04/08(日) 00:31:56 ID:2aPQfsMY.net] また、きちがいあつかいですか?
623 名前:login:Penguin mailto:sage [2007/04/08(日) 00:36:41 ID:nSKp4d9I.net] ほう「また」なんだ
624 名前:login:Penguin mailto:sage [2007/04/08(日) 00:37:31 ID:2aPQfsMY.net] で?
625 名前:login:Penguin mailto:sage [2007/04/08(日) 00:46:02 ID:nSKp4d9I.net] あらら
626 名前:login:Penguin mailto:sage [2007/04/08(日) 00:48:10 ID:2aPQfsMY.net] なにがあららなの?
627 名前:login:Penguin mailto:sage [2007/04/08(日) 00:49:12 ID:nSKp4d9I.net] 脳?
628 名前:login:Penguin mailto:sage [2007/04/08(日) 00:49:55 ID:2aPQfsMY.net] それはお互い様だろ?
629 名前:login:Penguin mailto:sage [2007/04/08(日) 00:51:34 ID:nSKp4d9I.net] 俺はその質問者じゃないんだけどねえ
630 名前:login:Penguin mailto:sage [2007/04/08(日) 00:56:35 ID:2aPQfsMY.net] お友達?
631 名前:602 [2007/04/08(日) 00:58:54 ID:gmHS+Fdj.net] もういちど、しきりなおし。 >>17 をコンパイルするとエラーがたくさん出るんだけど何が悪いの?? エラーの一部 ↓ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’ from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h: 20, from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9, from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49, from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
632 名前:login:Penguin mailto:sage [2007/04/08(日) 01:03:19 ID:z/motjJL.net] >>620 ヒント:>>17 のかかれた日付に注目。
633 名前:login:Penguin mailto:sage [2007/04/08(日) 01:11:57 ID:nSKp4d9I.net] 2.6以降はモジュールのフォーマットが変わって、 .oじゃなくて.koになってるからね。 ビルドの仕方も面倒になって...俺もよくしらない。
634 名前:login:Penguin mailto:sage [2007/04/08(日) 01:12:30 ID:2aPQfsMY.net] linux/compiler.hかな?
635 名前:login:Penguin [2007/04/08(日) 02:07:26 ID:gmHS+Fdj.net] >>621-622 情報が古いのか。。 でも、ウェブにあるサンプルは大体同じような感じなんだけど。 2.6用モジュールhello worldってないのかな。
636 名前:login:Penguin mailto:sage [2007/04/08(日) 02:24:54 ID:z/motjJL.net] >>624 2.6 kernel hello world でぐぐればすぐ出てくるぞ。
637 名前:login:Penguin [2007/04/08(日) 02:28:17 ID:gmHS+Fdj.net] >>625 なかなか無いよ。たとえばどこ? すぐ出てきたなら、ここに貼って。
638 名前:login:Penguin mailto:sage [2007/04/08(日) 02:34:41 ID:n+CzrFXh.net] #include <linux/init.h> がいるみたいね
639 名前:login:Penguin [2007/04/08(日) 02:41:10 ID:gmHS+Fdj.net] Makefileの書き方も変わってるみたいだね。 uguisu.skr.jp/algo/device.html のやり方でうまくいった。
640 名前:login:Penguin mailto:sage [2007/04/08(日) 03:09:43 ID:z/motjJL.net] こことかな。 www.si-linux.co.jp/wiki/silinux/index.php?Linux-2.6%A5%C7%A5%D0%A5%A4%A5%B9%A5%C9%A5%E9%A5%A4%A5%D0
641 名前:login:Penguin [2007/04/12(木) 01:42:14 ID:MCdnGupN.net] aio_write()でユーザ空間の登録だけして、後からハードウェア割り込みでその登録したユーザ空間にアクセスすることってできる? やり方教えて。
642 名前:login:Penguin mailto:sage [2007/04/12(木) 02:34:41 ID:HoyZz9hB.net] >>626 自分はこれが良かった。 www.freesoftwaremagazine.com/articles/drivers_linux
643 名前:login:Penguin [2007/04/15(日) 01:56:51 ID:YIKahQqf.net] タスクレットの中でcopy_to_user()、copy_from_user()を使えますか?
644 名前:login:Penguin mailto:sage [2007/04/17(火) 02:52:55 ID:IoB9zeVk.net] 試してみろ!! callした瞬間ぼくの丸太のような足蹴りが君の股間をつぶす それでもいいのなら!
645 名前:login:Penguin [2007/04/27(金) 00:53:37 ID:6m6QKylD.net] プログラムで確保したメモリの物理アドレスを知る方法と、その物理アドレスを使ってメモリにアクセスする方法を教えて。
646 名前:login:Penguin mailto:sage [2007/04/27(金) 06:02:05 ID:DTYmU0pC.net] www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/IO-mapping.txt.html
647 名前:login:Penguin mailto:sage [2007/04/27(金) 06:03:05 ID:DTYmU0pC.net] www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html
648 名前:login:Penguin [2007/04/27(金) 08:23:06 ID:6m6QKylD.net] ユーザプログラムで確保したメモリの物理アドレスを知る方法と、その物理アドレスを使ってメモリにアクセスする方法を教えて。
649 名前:login:Penguin [2007/04/27(金) 08:26:29 ID:6m6QKylD.net] (1)ユーザプログラムで確保したメモリの物理アドレスを知る方法と、 (2)その物理アドレスにアクセスする方法を教えて。 >>634-635 そこの記述では不十分だよ。
650 名前:login:Penguin mailto:sage [2007/04/27(金) 10:46:58 ID:cjUqO3s+.net] >>638 つ 馬本 なんで物理アドレスが必要なのかよくわからんが、virt_to_pyhsかのう。
651 名前:login:Penguin [2007/04/27(金) 21:21:47 ID:6NURgk06.net] >>639 virt_to_phys()で本当にユーザプログラムで確保したメモリの物理アドレスが求められる? 質問はカーネルの仮想アドレスを物理アドレスに変換したいのではないよ。 ユーザプログラムで確保したメモリのアドレスの物理アドレスだよ。 あと>>638 の(2)については、知ってる人いないの?
652 名前:login:Penguin mailto:sage [2007/04/27(金) 21:40:17 ID:67IsA5dw.net] 痛い人現る
653 名前:login:Penguin mailto:sage [2007/04/27(金) 23:10:53 ID:EZ45sIxG.net] cr3レジスタからたどれば
654 名前:login:Penguin [2007/04/27(金) 23:27:03 ID:6NURgk06.net] >>642 で、そのcr3レジスタの値はどこから持ってくるの? cr3レジスタの値はあくまでも現在のプロセスの仮想アドレスのページテーブルだよね。 カーネルプロセスからユーザプログラムのページテーブルを取得するにはどうするの? mm_structを保存しておけば、任意のユーザプロセスのメモリ空間にアクセスできる?
655 名前:login:Penguin mailto:sage [2007/04/28(土) 04:22:35 ID:+D3gS6jR.net] カーネル書き直せば?w
656 名前:login:Penguin [2007/04/28(土) 07:44:33 ID:oKLKreO7.net] カーネルを書きなおしてもいいよ。どこをどうすればいいの?その方法を教えて。 (1)カーネルから任意のユーザプログラムで確保したメモリの物理アドレスを知る方法と、 (2)その物理アドレスにアクセスする方法を教えて。
657 名前:login:Penguin mailto:sage [2007/04/28(土) 07:47:13 ID:dRSGn50m.net] カーネルからだとページテーブルがページアウトしている可能性もあるから めんどくさい
658 名前:login:Penguin [2007/04/28(土) 08:04:23 ID:oKLKreO7.net] ページアウトはしていないと仮定していいよ。それなら簡単?
659 名前:login:Penguin mailto:sage [2007/04/28(土) 11:40:13 ID:Fr2ol1ef.net] ザワザワ… ザワザワ…
660 名前:login:Penguin mailto:sage [2007/04/28(土) 23:24:32 ID:ZU2q9XRX.net] >>639 ttp://d.hatena.ne.jp/Newmarket/20060828/1156705255
661 名前:login:Penguin mailto:sage [2007/04/28(土) 23:42:14 ID:o6o1fGCI.net] 馬の多さにワロタ
662 名前:login:Penguin [2007/05/03(木) 23:34:15 ID:ErpReMz0.net] カーネルのソースツリーの一部分だけ、お試しでコンパイル したいときってどのようにすればいいですか? たとえば、lib/ の下だけすこしいじって、syntaxのチェック だけしたいときとか。2.6.21です。
663 名前:login:Penguin mailto:sage [2007/05/04(金) 00:08:49 ID:9yQs8D1Y.net] >>651 なんだかんだいっても、一度全体コンパイルしておくのが一番早い。
664 名前:login:Penguin [2007/05/04(金) 00:18:46 ID:yYLKnQ2E.net] >>652 thx.でも、 一度全体をコンパイルしておいて、lib/以下をちょっと(.cのみ)いじって、 全体をmake bzImageすると、それだけで5分以上かかるんすよ... わたしのへぼマシンだと。
665 名前:login:Penguin mailto:sage [2007/05/04(金) 00:23:00 ID:gFGVYRPM.net] やっぱりCPU速くするのが一番
666 名前:login:Penguin mailto:sage [2007/05/04(金) 00:24:14 ID:yYLKnQ2E.net] そこをなんとか。
667 名前:login:Penguin mailto:sage [2007/05/04(金) 00:35:21 ID:n4WASQRt.net] >>653 2.6だったらトップディレクトリから $ make lib/cmdline.o CC lib/cmdline.o とか出来る。
668 名前:login:Penguin mailto:sage [2007/05/04(金) 00:38:41 ID:yYLKnQ2E.net] できました。ありがとうございました。
669 名前:login:Penguin mailto:sage [2007/05/04(金) 01:24:26 ID:ulT/mofy.net] >>576 カーネルをコンパイルしたgccでモジュールをコンパイルしないとinsmod時にそのエラーが出るよ。
670 名前:login:Penguin mailto:sage [2007/05/13(日) 23:53:14 ID:EYFP+J0v.net] 質問です。 >>620 さんと同じ状況です。 ただ>>628 >>629 の方法を試したのですが 解決しませんでした。 いまだに>>620 さんが書かれてるエラーがでてしまいます。 考えられる原因はありますでしょうか? ubuntu 7.04、gcc version 4.1.2 (Ubuntu 4.1.2-0ubuntu4) を使っています。
671 名前:login:Penguin mailto:sage [2007/05/26(土) 11:11:39 ID:XoKsvVbX.net] >>15 IPLで使いたい分のメモリを確保すればいいって聞いたことがある。 カーネルのブートパラメータでから使いたい分を引く感じ。
672 名前:login:Penguin mailto:sage [2007/05/26(土) 16:19:33 ID:olOYm4ED.net] >>660 それで短くなるの? ならないと思うけど。
673 名前:login:Penguin mailto:sage [2007/05/26(土) 23:30:58 ID:XoKsvVbX.net] >>661 あれ?なんかぜんぜん違う話へのレスになってる…。 スマソ、なんか誤爆っぽい…orz
674 名前:login:Penguin [2007/06/03(日) 15:06:38 ID:W8zh9WHI.net] ドライバ内での double 型の使用について質問があります. Kernel 2.6 のドライバ内で double の演算と,sprintf("%.2f", ...) の様な 関数を使うのはどうすればいいのでしょうか? 現在,下記のようなエラーが出ていてドライバをロードできないです. % make ...(snip) WARNING: "__adddf3" [hoge.ko] undefined! WARNING: "__muldf3" [hoge.ko] undefined! WARNING: "__floatsidf" [hoge.ko] undefined! % insmod hoge,ko insmod: error inserting 'hoge.ko': -1 Unknown symbol in module
675 名前:login:Penguin mailto:sage [2007/06/03(日) 15:14:36 ID:1QJRDZ5d.net] >>663 ドライバで浮動小数点の計算はしない方がいいと思う。
676 名前:login:Penguin mailto:sage [2007/06/03(日) 15:35:59 ID:W8zh9WHI.net] proc_fs で表示するために使いたいのですが,駄目なんでしょうか...?
677 名前:login:Penguin mailto:sage [2007/06/03(日) 16:53:58 ID:KH63vIBs.net] 浮動小数点演算はFPUを使う可能性があるから カーネルモードでは可能な限り避けるべき きちんと対応すれば使えないことはないけど、 速度的な利点はほとんどなくなる
678 名前:login:Penguin mailto:sage [2007/06/03(日) 23:23:42 ID:/hAY1VOO.net] 「速度的な利点」って何に対する何の利点?
679 名前:login:Penguin mailto:sage [2007/06/03(日) 23:31:28 ID:5NVvB11p.net] きっと >>666 の CPU は浮動小数点演算を使うと割り込み禁止になるんだろう
680 名前:login:Penguin mailto:sage [2007/06/04(月) 00:46:42 ID:CXn8XPVL.net] nVidiaのドライバの解析って3年ぐらいまでやってる人間 いたけど今どうなってるの?
681 名前:webmaster@気まぐれアナスイ mailto:192.168.0.1 [2007/06/04(月) 12:11:48 ID:RaTjYNE+.net] !(-_Φ+){ ... }
682 名前:663 mailto:sage [2007/06/05(火) 02:17:22 ID:aHzmfEHS.net] とりあえず固定小数点もどきをつかって回避して,こんなのできました. お時間があれば添削などしていただけると嬉しいです. acapulco.dyndns.org/usbrh/
683 名前:login:Penguin mailto:sage [2007/06/05(火) 10:49:22 ID:qhZ8Q9LN.net] >>665 固定小数点じゃだめか? 値が必ず正値と仮定、valに本当の値の100倍を入れるとすると unsigned int val; sprintf(str, "%d.%02d", val/100, val%100) みたいな感じ 負値だと剰余の扱いがちょっと面倒になる
684 名前:login:Penguin [2007/07/16(月) 18:26:19 ID:h1/eDBu5.net] はck
685 名前:login:Penguin [2007/08/06(月) 00:29:52 ID:E6mK6Nbx.net] ドライバ書くときってCPUの事は知っておいた方がいいのでしょうか?
686 名前:login:Penguin mailto:sage [2007/08/06(月) 01:55:04 ID:Taq1zrH7.net] どうでもいいよ タマゴがどっち向きかだけ知っとけば
687 名前:login:Penguin [2007/08/28(火) 23:24:19 ID:aUO2fWSH.net] あげ
688 名前:login:Penguin mailto:sage [2007/08/29(水) 01:23:49 ID:bmM5qB+B.net] >>675 俺はとんがったほうから食べるのが好きだ。
689 名前:login:Penguin mailto:sage [2007/08/29(水) 23:50:22 ID:E1JDVS03.net] どちらから割るのが正しいかが問題だ。大きいほうか、尖った方か。 16bit時代以降、中には大きい方から割って、尖った方から食べるという 両刀使いが出てきてさらにややこしくなった。
690 名前:login:Penguin mailto:sage [2007/08/30(木) 12:40:15 ID:pmmgZB5J.net] そんな両刀使いがいたのか 具体的にはドレ?
691 名前:login:Penguin mailto:sage [2007/08/31(金) 00:43:34 ID:pR6eg2ir.net] NUXIとかmixed endianでggr。1234じゃなくて2143並びになったりするらしい。 実は漏れも知らなかったが、最近でも某腕プロセッサはデータ型によってはまさにミックスになるそうな。
692 名前:login:Penguin mailto:sage [2007/08/31(金) 01:04:08 ID://apeG96.net] まあそうはいっても日常的にミックスは体験してるよな 通信プロトコルは大体ビッグだからな
693 名前:login:Penguin [2007/08/31(金) 07:07:24 ID:IHXG9RG5.net] uartのドライバ書きたいのだけど、uart_opsのメンバのそれぞれの責務がよく分からない。 文字列送って受けるだけなのに、なぜこんなにいっぱいあるんでしょう? 軽くおしえてもらえないでしょうか? include/linux/serial_core.h /* * This structure describes all the operations that can be * done on the physical hardware. */ struct uart_ops { unsigned int (*tx_empty)(struct uart_port *); void (*set_mctrl)(struct uart_port *, unsigned int mctrl); unsigned int (*get_mctrl)(struct uart_port *); void (*stop_tx)(struct uart_port *); void (*start_tx)(struct uart_port *); void (*send_xchar)(struct uart_port *, char ch); void (*stop_rx)(struct uart_port *); void (*enable_ms)(struct uart_port *); void (*break_ctl)(struct uart_port *, int ctl); int (*startup)(struct uart_port *); void (*shutdown)(struct uart_port *); void (*set_termios)(struct uart_port *, struct ktermios *new, struct ktermios *old); void (*pm)(struct uart_port *, unsigned int state, unsigned int oldstate); int (*set_wake)(struct uart_port *, unsigned int state);
694 名前:login:Penguin mailto:sage [2007/08/31(金) 07:12:11 ID:Bq5CxAt1.net] >>682 シリアル通信の基本を誰かに教えてもらったら...
695 名前:login:Penguin mailto:sage [2007/08/31(金) 14:54:06 ID:bz+r4Vre.net] >>682 ドライバを組むのなら、ターゲットの仕様をきちんとおさえるのが基本。 uart程度の解説なら本屋にいくらでもあるし、ググればいくらでも情報 が手に入る。 その程度の情報収集ができないなら、ドライバ開発は諦めたほうが良い。
696 名前:login:Penguin [2007/09/12(水) 11:40:08 ID:W+jFMZNC.net] 初歩的な質問で、すみません linuxカーネルは2.6.18-1.2798.fc6-i586で、fedora core6のカーネルを使っています USBマウスが差し込まれたときに、呼ばれるprobeのコールバックと、外されたときに呼ぶdisconnect のコールバックを書いたのですが、なぜかvenderIDと、productIDに間違いはないはずなのに これらが呼ばれません USBドライバの登録には成功しているようなのですが、登録に使う構造体の初期化に間違いがあったのでしょうか それとも、このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか 文字数制限の問題で、ソースは>>686 に貼らせていただきます
697 名前:685 [2007/09/12(水) 11:47:03 ID:W+jFMZNC.net] コピペでは無理だったので、ロダに上げしました sakuratan.ddo.jp/uploader/source/date51655.c
698 名前:login:Penguin mailto:sage [2007/09/12(水) 12:38:12 ID:b4ZSgzLd.net] >>685 ハードウエアを接続したとき、dmesgにはなんて出てくる?
699 名前:685 [2007/09/12(水) 13:23:18 ID:W+jFMZNC.net] >>687 dmesgは、このように出力しています usbcore: registered new driver usb_mouse succes_usbregist<6>usb 4-2: new low speed USB device using ohci_hcd and address 6 usb 4-2: configuration #1 chosen from 1 choice input: Cypress Sem PS2/USB Browser Combo Mouse as /class/input/input6 input: USB HID v1.00 Mouse [Cypress Sem PS2/USB Browser Combo Mouse] on usb-0000:00:0b.1-2
700 名前:login:Penguin mailto:sage [2007/09/12(水) 13:41:02 ID:Eo9vQi0w.net] >>688 フックできないような感じだけど? [] [ここ壊れてます]
702 名前:login:Penguin mailto:sage [2007/09/12(水) 14:04:06 ID:gJXCaswd.net] usb_device_id の .driver_info だけ定義するとすべてのデバイスにマッチするらしい(馬本参照)ので デバッグ用にやってみるのがいいかも > このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか たぶんそう
703 名前:login:Penguin [2007/09/13(木) 12:25:45 ID:oMFp/NB1.net] ドライバの開発って難しいでしょうか?
704 名前:login:Penguin mailto:sage [2007/09/13(木) 21:34:22 ID:dbMVSAQN.net] そのような質問をする方には難しいです。
705 名前:login:Penguin mailto:sage [2007/09/14(金) 03:35:04 ID:bpVkKQxn.net] >>685 むかしは定義に合致するドライバが呼ばれたが最近は1つ合致するやつが あると、それ以上呼ばないようになってたと思う HIDドライバが先にとっちゃうんでしょう。.configで無効にしてやってみそ
706 名前:login:Penguin [2007/10/03(水) 08:13:37 ID:WhUHfKUP.net] あげ
707 名前:login:Penguin mailto:sage [2007/10/07(日) 18:44:44 ID:wad8eg6i.net] UIO:ユーザー空間でデバイスドライバ作成が可能に www.atmarkit.co.jp/flinux/rensai/watch2007/watch09a.html
708 名前:login:Penguin [2007/10/08(月) 12:39:42 ID:v1nGyoTL.net] 馬本でデバドラを勉強しています。 カーネルのソースでドライバやったことがない人にも分かりやすいソースってどれですかね?
709 名前:login:Penguin mailto:sage [2007/10/08(月) 12:48:08 ID:Y0LW8BuC.net] そんな事言ってる位なら、馬本のドライバソース見ればいいじゃん。ダウンロードできるよ
710 名前:login:Penguin mailto:sage [2007/10/09(火) 08:54:41 ID:qhmHV8vi.net] >>696 何系のドライバかによるのでは>どれを見たらいいか。 ドライバの種類によってどういうインタフェースセット(いわゆる*_opsとか)を register_*とかで登録するのか、またインタフェース間やカーネル側処理がキュー等を 介してどのように連携するのか全く異なる。 漏れも読みたて入門者なんであれだけど、 キャラクタデバイスなら/dev/null(mem.c)とパラレルポート(ppdev.c + parport/*) ブロックデバイスならフロッピー(floppy.c)かramdisk(rd.c) ファイルシステムならromfs(romfs/*, readonly-fs)とbfs(bfs/*, readwrite-fs) が短かったり馴染みがあったりしてすんなり読めた。
711 名前:696 [2007/10/09(火) 12:16:03 ID:BjHL69v3.net] >>697-697 レスありがとうございます。
712 名前:login:Penguin mailto:sage [2007/10/18(木) 23:39:59 ID:YYamJxiT.net] 複数のデバイス間でデータをバイパス したいのですがサンプルないですか?
713 名前:login:Penguin mailto:sage [2007/10/19(金) 14:04:12 ID:CYTWECsc.net] いくらなんでも漠然としすぎだろw
714 名前:login:Penguin mailto:sage [2007/10/20(土) 01:03:15 ID:jtNU9aYY.net] 2ポートとか4ポート付きのNICって モジュールはどのようにロードされるの? またデータの共有とかRx,Txバッファの 管理とかどうなってるの?
715 名前:login:Penguin mailto:sage [2007/10/20(土) 04:41:50 ID:izm7N8bV.net] 1ポートのNICが複数枚ある場合と大差はない。
716 名前:login:Penguin [2007/10/21(日) 17:41:17 ID:yGaxVLsH.net] >>701 各ポートにデバイス eth0, eth1 ... と付いて、このデバイスファイルごとに 設定が管理されるだけじゃね?
717 名前:login:Penguin mailto:sage [2007/10/21(日) 18:39:44 ID:SCXCQ8PP.net] >>704 pciのデバイスとしては1つにしか見えないんだけどさ どうやって、その後4ポート認識してるかわからないんだよね
718 名前:login:Penguin mailto:sage [2007/10/21(日) 19:36:55 ID:f7YPzoUy.net] >>705 それはPCIブリッジが載ってるからじゃね? LANチップはその向こうのローカルバスに4ケ載ってるかと。
719 名前:login:Penguin [2007/10/23(火) 20:59:15 ID:pGCXISsZ.net] どなたかおしえてください。カーネルモジュールにバイナリコードを渡したい のでrequest_firmware()を呼び出しているのですが、このrequest_firmware() という関数から呼び出されるhotplugはどのディレクトリでバイナリコードを 検索してくれるのかわかりません。言ってみればバイナリコードをどのディレクトリ におけばいいかがわかりません。ディストリビューションはfc6でカーネルは2.6.22です。 カーネルモジュールに対応するデバイスは無いので、sysfs上に仮想的なバスと デバイス、ドライバを作ってあります。このデバイスのdevice構造体を使って request_firmwareを呼んでいます。申し訳ありませんが、かなりまいってるので お願いします。ご助力ください。
720 名前:login:Penguin mailto:sage [2007/10/23(火) 21:05:08 ID:tiPDo332.net] >>707 Documentation/firmware_class/* ?
721 名前:login:Penguin mailto:sage [2007/10/23(火) 22:03:44 ID:+D+WWc4l.net] BUFFALOのCD-RWドライブがまだ使えるのでハックしたいんですが、 必要な情報ってメーカーから提供されているんでしょうか?
722 名前:login:Penguin mailto:sage [2007/10/24(水) 15:38:46 ID:8BiGN5WQ.net] ハゲシク板違い
723 名前:login:Penguin mailto:sage [2007/10/26(金) 18:00:12 ID:OMFZLcsd.net] お馬さんの本読んで勉強してるのだが、さっぱり分からん。 ちなみに今3章のscullデバイス。 みんな最初はこんなもんなの? それとも、俺がバカなだけなのか?諦めたほうがいいのか? 意見求む!!
724 名前:login:Penguin mailto:sage [2007/10/26(金) 18:53:10 ID:OVakku/9.net] やる気の問題じゃね?
725 名前:login:Penguin mailto:sage [2007/10/26(金) 20:06:04 ID:nlKsXgN2.net] >>711 「作ってみなきゃわかんない」 の典型かもしれん。 実際作業するとキャラクタデバイスは楽しい。 そして、ブロックデバイスに挑戦するときに 分けわかんなさをもう一度楽しめる
726 名前:login:Penguin mailto:sage [2007/10/27(土) 11:47:28 ID:US/tv6oE.net] よくわかんないのが、他のドライバの叩き方なんだよな。 ネットワーク通信してファイルとかブロックデバイスにも書くような ドライバが最終ゴールなんだけど、他のドライバのAPIってどうやって 叩くのか(どこがインタフェース界面なのか)と。
727 名前:login:Penguin mailto:sage [2007/10/27(土) 12:04:42 ID:Y1miLqrF.net] OSの勉強やり直しっぽい
728 名前:login:Penguin [2007/10/27(土) 19:45:56 ID:5LV4rb/o.net] >>714 それってkernelspaceじゃなくてuserspaceでやればいいのでは。
729 名前:login:Penguin mailto:sage [2007/10/27(土) 20:15:47 ID:US/tv6oE.net] >>716 使う側からはファイルシステムに見せたいので、実際プロトタイプは FUSE方式でやろうとしてます。でもそれだと簡単ではあるものの 二級市民みたいなので、kernelspaceでの正しいやり方を知りたいなと。 nfsとかcryptfsのコードを読むは読むにしても、どっかにそういう 各種ドライバを内部から使うための情報をとりまとめたものとかは ないのかなと。
730 名前:login:Penguin mailto:sage [2007/10/27(土) 21:00:45 ID:RlzxlVfH.net] >>717 とにかくなんでもいいから氏ねw
731 名前:711 mailto:sage [2007/10/28(日) 02:49:08 ID:W9zUZBn1.net] >>712 鋭いな。そうかもしんない。 >>713 なるほど、これは貴重な意見が聞けた。サンスコ!!
732 名前:login:Penguin mailto:sage [2007/10/28(日) 02:54:06 ID:7ULWmmgi.net] >>717 ntfs-3g なんかはfuseだけど、実用的に動いているし、全然2級って感じしないけど。
733 名前:login:Penguin [2007/10/28(日) 23:36:04 ID:jy3FHf6c.net] 馬本にOSの仕組みを知ってる必要があると書いてありましたが、 どんなことを知っていたほうがいいのでしょうか?
734 名前:login:Penguin mailto:sage [2007/10/28(日) 23:41:48 ID:1vAj4w/k.net] メモリ管理・特権・スケジューリング・ファイルシステム(ry…全部じゃん
735 名前:login:Penguin [2007/10/28(日) 23:45:24 ID:jy3FHf6c.net] >>722 ありがとうございます。 詳解Linuxカーネルも読みます。
736 名前:login:Penguin mailto:sage [2007/10/29(月) 00:42:23 ID:uCaYz1aO.net] >>723 知りたくなったときに読めばいいよ でも必ず買っとけ
737 名前:login:Penguin mailto:sage [2007/10/29(月) 09:44:50 ID:wx/mrO8x.net] 買うなら原書(英語版)のほうがいいぜ 版が新しいし安いからな
738 名前:login:Penguin mailto:sage [2007/10/29(月) 10:27:48 ID:nDk3r2gZ.net] > 版が新しいし 4th edition でたの?
739 名前:login:Penguin mailto:sage [2007/10/29(月) 20:53:20 ID:Bg0Jp9i7.net] konozama.comとか少しは自分で調べようよ
740 名前:login:Penguin mailto:sage [2007/10/29(月) 23:42:16 ID:oMEBh2dX.net] Oh〜、チョッとお聞きしただけで損何怒らなくても いいじゃないですかぁ〜。Hey,take it easy ! でも調べるところは教えてくれるアナタに感謝で〜す!
741 名前:login:Penguin [2007/11/08(木) 00:29:00 ID:Cm3oK6QC.net] メーカーとかが作ったデバドラのソースって公開してるものはあるのでしょうか?
742 名前:login:Penguin mailto:sage [2007/11/08(木) 01:07:57 ID:vscqki7B.net] ネットワークデバイス系はそういうのが結構多いような。 超いい加減だけど: つ $ grep -r 'Inc[.o]' drivers | egrep -v '(Red|Vista|Foundation)'
743 名前:login:Penguin [2007/11/12(月) 11:19:56 ID:vNQ95D4g.net] kernel2.6.18.6でターゲット側のUSBドライバ書こうとしてるんですが 参考になるサンプルってありますでしょうか? drivers/usb/gadget/net2280.cとかが近いのかも知れないですけど どうもpciで登録してるように見えて「別物かなぁ?」と思いまして。 あとホスト側のUSBドライバで挿されたら何でも拾う設定って usb_device_idの.device_infoに適当な値を突っ込めばいいと思って たんですがどうにもattachの際に自作のprobeが呼ばれません。 成功した方っていらっしゃいます? ご存知の方いらっしゃればお願いします。
744 名前:login:Penguin mailto:sage [2007/11/12(月) 23:57:28 ID:xIHzaILy.net] >>731 おめー御馬様のサンプル 見てていってるんだよね? もしそうなら、適正無いから諦めろ 見てないなら、お前は調査能力ない からニートかなんかになれ
745 名前:login:Penguin mailto:sage [2007/11/13(火) 00:56:13 ID:0Tz4Ruwv.net] >>732 よく判ってらっしゃる。 馬本はさらっと読みましたが元がLinuxでも組み込みでもない世界で やってて、急遽ヘルプで入ったんでさっぱり。 前任が逃げてヘルプなんで誰も知ってる人がいない\(^o^)/ で、聞いてみたんですが俺も逃げっかな・・・
746 名前:login:Penguin mailto:sage [2007/11/13(火) 01:11:37 ID:nAlW3/rO.net] >>733 一週間悩んだら解かんないか? すげー複雑な科学計算とか遺伝子関係の プログラミング以外ほとんどの対象のプログラミング なんて簡単だぞ 時間がかかるものが多いのは事実だが ドライバは簡単な部類だ
747 名前:login:Penguin mailto:sage [2007/11/13(火) 01:21:16 ID:0Tz4Ruwv.net] >>734 まだ2日程度なんですよね。 「デバドラ」だと思ったんで聞いてみたんですがレベル設定あるみたいなんで 「くだらねぇ」でも行ってきます(´・ω・`)
748 名前:login:Penguin mailto:sage [2007/11/13(火) 01:24:22 ID:O430Avmc.net] 御馬様っていうのか・・・ 昨日、買いました。勉強します〜
749 名前:login:Penguin mailto:sage [2007/11/13(火) 09:24:54 ID:SFIG7nsG.net] >>734 ちなみに、回答しない人の言うことは無視したほうがいいよ。 >>732 はニートとか言ってるし典型的な煽り。
750 名前:735 mailto:sage [2007/11/14(水) 00:27:19 ID:2+ZY8Hov.net] 馬本見たら「本書の範囲を超えるので載せません」て書かれてた(´・ω・`) USB gadgetは難しいだろうかnet2280.cよりもZero.c見たほうがいいのかなぁ・・・。
751 名前:login:Penguin mailto:sage [2007/11/14(水) 02:20:20 ID:aLuJUt0c.net] 文句とか愚痴だけいって何も貢献しない人間ほどむかつく奴はいない。
752 名前:login:Penguin [2007/11/17(土) 09:40:38 ID:MN9c6cz5.net] >>739 どうどうどぅ…
753 名前:login:Penguin mailto:sage [2007/11/17(土) 11:39:12 ID:AZzmHExp.net] >>739 Do! Do! Do!
754 名前:login:Penguin [2007/11/17(土) 11:43:31 ID:4avAGLIe.net] do_fork
755 名前:login:Penguin [2007/11/29(木) 13:55:56 ID:yo1OGExb.net] mmapで特定のデバイスのIOメモリを仮想空間に割り付けて, その領域に対してユーザーからデータを書き込むことを考えています. ユーザープログラムからその領域上に,あるデータ型の双方向リスト を作りたいのですが,ユーザー空間の特定のアドレス範囲から空き メモリ領域を動的に確保する方法ってないでしょうか void *dev_malloc(start_address, end_adress, nbyte); とすると仮想アドレスstart_address〜end_adressの範囲から nbyteバイトの領域を確保するみたいなイメージです
756 名前:login:Penguin mailto:sage [2007/11/29(木) 20:09:08 ID:iCD9/EY6.net] >>743 かーなーり スレ違い デバイスドライバ関係ない 汎用heap管理ライブラリがほしいってことだろ heap-management とか ヒープ管理 でぐぐってみそ ちなみに void *dev_malloc(start_address, end_adress, nbyte); ってI/Fはありえないと思うぞ 毎回 start_addressとend_adressを与えるわけ??
757 名前:login:Penguin [2007/12/02(日) 23:50:11 ID:lbIQi7BJ.net] あげ
758 名前:login:Penguin [2007/12/13(木) 19:50:31 ID:pBhS9AMD.net] あげ
759 名前:俺 [2007/12/18(火) 23:09:45 ID:K//ZswLt.net] ドライバでCPUキャッシュのフラッシュやりたい! どうやるの?だれかおせぇ〜てぇ〜
760 名前:login:Penguin mailto:sage [2007/12/18(火) 23:41:07 ID:uNdsweTC.net] >>747 CPUキャッシュのフラッシュをする命令を実行すればいいんじゃない? CPUはなに?
761 名前:俺 [2007/12/18(火) 23:59:27 ID:K//ZswLt.net] >>748 Xeonの5100です。 データシートとか見つからなくて。。。 ご存知でしたら教えていただけませんか? <経緯> Linuxマシンで、DMAでPCIeのデバイスからホストメモリにデータ転送 したときにキャッシュのせいか、2周目のリングバッファ領域が うまく参照できていなく、フラッシュすればと思いました。。
762 名前:login:Penguin mailto:sage [2007/12/23(日) 13:45:51 ID:VU+KNtKv.net] >>ORE ttp://www.intel.com/products/processor/manuals/index.htm
763 名前:login:Penguin [2007/12/24(月) 18:03:58 ID:ugbio3bt.net] Linux 2.6.22 ARM9マシンでシリアルコンソールでデバッグするためにカーネルコマンドラインで console=uart,mmio,0x80004600,57600n8 とすると、カーネルの初期化中に early_uart_console_init()→register_console()→early_uart_setup()→parse_options()→ioremap()→__arm_ioremap()→__arm_ioremap_pfn()→get_vm_area()→__get_vm_area_node()→kmalloc_node()→kmalloc()→kmem_cache_alloc() が呼ばれてkmem_cache_alloc()でこけます。 slabアロケータがまだ初期化されていないのにkmem_cache_alloc()が呼ばれているのがこける原因と思うのですが、armマシンでもearly_uart_consoleは使えるのでしょうか?
764 名前: 【大吉】 【801円】 [2008/01/01(火) 19:54:53 ID:EHGXP/cp.net] 新年あげ
765 名前: 【中吉】 【156円】 [2008/01/01(火) 20:58:21 ID:LfamTH+n.net] >750 749じゃないけど,これいいな.サンクス. みんなチップのデータとかはどこから調べてくるの? ちょっと想像してみたけど,「とりあえずメーカサイトを調べる」 以外の方法がわからん. windowsのドライバから情報調べたりする人もいるの? いたらその解析方法とかおしえてください.
766 名前:login:Penguin mailto:sage [2008/01/01(火) 20:59:27 ID:VCekl7x7.net] >>753 メーカに電話して聞く
767 名前:login:Penguin mailto:sage [2008/01/01(火) 23:23:30 ID:hQDOyXLN.net] >>749 Intel の CPU だとその手のキャッシュのことは気にしなくていいんじゃなかったっけ? いわゆるバススヌープ。ま、明示的にフラッシュしたきゃできるだろうけど。 (実は俺自身は x86 以外用のドライバしか書いたことがないので聞きかじりだが...) あと、キャッシュが効いているなら1周目でも駄目な場合がありそうだがどうなん? 単にリングバッファのアリゴリズムでしくじってたりして。 って、よく見るとえらい昔の書き込みだった。もう解決したのかな。
768 名前:login:Penguin mailto:sage [2008/01/02(水) 12:58:56 ID:jVjgkvN4.net] チップの購入先の営業から入手とか チップベンダのwebサイトからダウンロードだろ 常考
769 名前:login:Penguin [2008/01/14(月) 11:44:33 ID:MLu8ArWP.net] 今馬本の第 3 版読んでんだけど scull のソースコードって Web でダウンロードできるの?
770 名前:login:Penguin mailto:sage [2008/01/14(月) 11:59:56 ID:hAs2atpA.net] あるよ
771 名前:login:Penguin mailto:sage [2008/01/14(月) 13:03:13 ID:MLu8ArWP.net] >>758 早速ありがとう. 本を斜め読みしてるんだけど URL が見当たらないです. 検索しても見付からないし,もしよろしければ教えていただけますと うれしいです
772 名前:login:Penguin mailto:sage [2008/01/14(月) 13:36:46 ID:Q2m15cvj.net] >>759 >>80
773 名前:login:Penguin mailto:sage [2008/01/14(月) 14:10:16 ID:MLu8ArWP.net] >>759 ありがとう! 3版のは FTP で以下からダウンロードできました. ar.linux.it/pub/ldd3/ldd3-samples-1.0.0.tar.gz かなり感謝です ありがとう
774 名前:login:Penguin mailto:sage [2008/01/14(月) 14:13:07 ID:MLu8ArWP.net] 自分にお礼ちまった >>761 の「>>759 」は >>760 の間違いです >>760 さんありがとう
775 名前:login:Penguin mailto:sage [2008/01/17(木) 11:56:40 ID:1+AIbUNm.net] >>761 あれ?お馬さんの第3版それなの? 日付が気になるので、第3版翻訳本に載ってたのをこぴぺ ftp://example.oreilly.com/pub/examples/linuxdrive3 examples.tar.gz 70 KB 2005/05/12 0:00:00 ちょいとだけ新しいかも。同じくLinuxデバドラはじめる所なので よろしく〜。Win系でWDM書いてました〜。
776 名前:!omikuji !dama [2008/01/25(金) 07:11:44 ID:dVpHcdky.net] kaso
777 名前:login:Penguin mailto:sage [2008/01/25(金) 21:56:39 ID:OZPnpJ0W.net] ドライバでのロックの掛け方とか その変のデザインパターンみたいなもの ないのですか? 馬本読んでも、DualSocket 4コアとか その辺の場合どうすればいいとかまったく 書いてなくて困ってる。 CPU毎にあるモノを意識しなければならないのか 全リソースを意識した作りなのかの判断も ケースバイケースとかだし。WDMの方がいいよね
778 名前:login:Penguin mailto:sage [2008/01/26(土) 23:10:19 ID:jNmSnKBM.net] >>765 スピンロック様
779 名前:login:Penguin mailto:sage [2008/01/27(日) 14:19:40 ID:/9d4A9Tg.net] WDMってよく知らないが、割り禁、スピン、寝る&起こす以外に 排他の方法があるの?
780 名前:login:Penguin mailto:sage [2008/01/27(日) 17:28:29 ID:Q2ylOq7r.net] そもそも排他なんじゃねーの? 昔はLinuxも明示的にスケジュールよぶまで カーネル空間は排他だったじゃん SMPが出てきて全部直す羽目になったけど
781 名前:login:Penguin mailto:sage [2008/01/27(日) 19:45:28 ID:/9d4A9Tg.net] 割込みハンドラ
782 名前:login:Penguin [2008/02/03(日) 19:45:35 ID:coODkdMv.net] 過疎
783 名前:login:Penguin mailto:sage [2008/02/07(木) 03:30:55 ID:9BnmgFGp.net] 「新着1件ってことは、いつもの良スレ上げ厨かなぁ」と思ったらそう来たか。
784 名前:login:Penguin [2008/02/19(火) 16:29:32 ID:vNMS2dUr.net] 基本的にPCIデバイスにデータ渡すだけのドライバを作ってるのですが、 I2Cデータ転送もしたいといわれ、苦戦中につき質問させて下さい。 カーネルリリースは2.6.11-1.1369_FC4 今のところインクルードしてるのは下記ヘッダーです。 linux/module.h linux/kernel.h linux/pci.h linux/pci-dev.h asm/uaccess.h unistd/.h sys/ioctl.h sys/perm.h I2Cのオープンのために、これにfcntl.hを加えたところ、dev_tの型などが再定義されたとエラーが出ます。 また、KERNELDIRを取得して、その場でMAKEしているため Makefileにて、環境変数C_INCLUDE_PATHに/usr/includeを設定しているのですが fcntl.hを除いてコンパイルしてもclose, ioctl等が未定義と警告されます。 これらエラーや警告の対応に行き詰まってしまいました。 インクルードに過不足あるのか、Makefileが悪いのか、そもそもPCIドライバからI2Cを叩く方法が悪いのか… アドバイス等お願い出来ますでしょうか。
785 名前:login:Penguin mailto:sage [2008/02/19(火) 19:10:24 ID:5BDGV8A6.net] デバイスドライバでunistd.hなんかincludeしちゃダメだろ fcntl.hも同様
786 名前:login:Penguin mailto:sage [2008/02/19(火) 21:35:29 ID:ec7S8nn5.net] 何言ってるのかわからないなw PCIデバイスとして、I2Cバスへのブリッジが載っているのか? それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか?
787 名前:772 mailto:sage [2008/02/19(火) 22:00:59 ID:vQR2/dLm.net] >>773 やっぱりダメですか。 というか、無理やり環境変数使ってコンパイラのエラーを抜けてる(unistd.h以降3ヘッダ、加えてfcntl.h)のは全部includeしちゃダメですかね。 >>774 >PCIデバイスとして、I2Cバスへのブリッジが載っているのか? >それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか? PCIデバイスにI2Cバスへのブリッジが載っている、のはずです。
788 名前:login:Penguin mailto:sage [2008/02/19(火) 22:53:37 ID:5BDGV8A6.net] つーかさ カーネルモードで動いてるデバイスドライバの中から open()とかclose()とかioctl()みたいなシステムコールを 発行できるわけないだろ? >>772 が作りたいと思ってるのは root権限で直接I/O叩くだけの ユーザランドで動くアプリなんじゃないのか?
789 名前:login:Penguin mailto:sage [2008/02/19(火) 23:10:27 ID:ec7S8nn5.net] >>775 じゃあ、そのPCI-I2Cブリッジのデバイスドライバを書いているんだとして、 >I2Cのオープンのために なんで、こうなるのよw とりあえずDocumentation/i2c/summaryでも読んでくれ。
790 名前:login:Penguin mailto:sage [2008/02/20(水) 08:43:00 ID:zgvkT7V3.net] >>776 呼んじゃダメなんですね。了解しました。 先週までアプリしかやったことがなく、ついそっち寄りな考えに、と、蛇足でした。失礼しました。 >>777 あー、確かに。 教えていただいたものを読んでみます。 ありがとうございました。
791 名前:login:Penguin mailto:sage [2008/02/20(水) 09:40:57 ID:zxxPBExl.net] >>773 そういえば、しちゃダメだ ってどこにも書いてないな わからない奴はわからないんじゃないか?
792 名前:login:Penguin mailto:sage [2008/02/21(木) 00:46:11 ID:VUV3LHo/.net] ちょっと相談なんだが、いいかな writeの中で長時間割り込み待ちをするような処理と、その場で終わる処理を持ったデバドラがあって、 (処理の切り替えはioctl) まずアプリAが長時間かかる処理のためにwriteわ呼び出す。 当然割り込み待ちになるが、そのままアプリBがioctlやwriteを呼び出すとどうなる? 普通に処理出来る?
793 名前:login:Penguin mailto:sage [2008/02/21(木) 00:55:15 ID:A2lpGb2W.net] 一つのデバイスを二つのアプリで同時に使うっつー事ですか?
794 名前:login:Penguin mailto:sage [2008/02/21(木) 01:18:43 ID:VUV3LHo/.net] >>781 その通りで。 ただ、1つのアプリがマルチスレッドになってるという場合もありでお願いしたい
795 名前:login:Penguin mailto:sage [2008/02/21(木) 01:55:12 ID:6LvlPNy5.net] できるかどうかは作り方次第だろうな 資源の排他処理が必要なら、ロック使わなきゃならん その場合は、すぐ終わるはずの処理ももちろん待たされる 待たせたくなけりゃ、長時間かかるというwriteにバッファを設けて write処理と割り込み処理とを分離するみたいな工夫したらどうだ 的外れならスマソ
796 名前:login:Penguin mailto:sage [2008/02/21(木) 02:11:45 ID:VUV3LHo/.net] >>783 資源は共有しないからロックはいらなさそうだ writeにバッファを設けて処理を分離ってのがイマイチわからんのだけど、説明頼んでもいいかい? デバドラの中でもスレッドとかで並列にするの?
797 名前:login:Penguin mailto:sage [2008/02/21(木) 06:04:45 ID:Xs+RkuJQ.net] シリアルポートを想像してみたらどうだろう Write、Read、割り込みがそれぞれ並列に動くはずだ Writeで割り込み使ってるかどうかは知らないけど
798 名前:login:Penguin mailto:sage [2008/02/21(木) 07:26:26 ID:Kf6eqU14.net] ブロック と ノンブロック という用語を使ってほしいところだな んで複数プロセスから同時に使えるかどうかはデバイスドライバの作り方次第 手抜きにつくると open()されるときに競合問題を判断して 同時にひとつとかopenできないようにするよな 複数同時にopenして、ひとつがブロックしてる時に また別のがノンブロックの処理要求してきたなんて場合は そういう風にうまく動くようにドライバの中で考慮する必要がある
799 名前:login:Penguin mailto:sage [2008/02/21(木) 07:32:20 ID:Kf6eqU14.net] 追記 呼び出し側がマルチスレッド使ってるかどうかはあまり関係ない ふたつのプロセスがメモリを共有してようがしてまいが ドライバにとっては関係ない話だ それよりCPUが複数ある(いわゆるSMP)かどうかの方が重要 smp対応させるなら必要なところできっちりspinlockしないとダメ
800 名前:login:Penguin mailto:sage [2008/02/21(木) 08:59:36 ID:VUV3LHo/.net] >>787-788 ブロック=長時間処理 ノンブロック=即時処理 でおk? 複数からopenされるのはアリにしないといけないっぽいんで、考えてみる。 ブロック中にアプリBからもwrite自体は呼び出せる? その時点で破綻してるなら、今のwriteをそのままスレッド化して、write自体はスレッド起動だけにするなりで対応とか…ダメかな あとCPUは1つ前提でおkっす。 余裕があったら後学のためにもsmp対応も抑えておきたいがw
801 名前:login:Penguin mailto:sage [2008/02/21(木) 09:10:48 ID:Kf6eqU14.net] > ブロック中にアプリBからもwrite自体は呼び出せる? もちろん呼べる ブロック処理とは、簡単にいうと処理開始をデバイス(ハードウェア)に 通知したあとスリープ状態に入り、処理完了割込が入ったら 割込ハンドラがスリープ(ブロッキング)しているプロセスを たたき起こすって流れ。 アプリAがスリープ(ブロッキング)している間に アプリBからreadなりwriteなりが発行されるのは当然ありうる話。 ちゃんとドライバを書いておけば問題なく動く。 linuxカーネルのソースコードそのものがいいサンプルコードだから いろいろ読んでみるとよい。 それから、procfs(/procの下に仮想ファイルをつくる)に 状態監視・デバッグ操作用のI/Fを用意しておくと後々楽になるよ。
802 名前:login:Penguin mailto:sage [2008/02/21(木) 09:27:27 ID:VUV3LHo/.net] >>789 凄く参考になった! ありがとう >答えてくれた人達 いろいろありがとう
803 名前:login:Penguin [2008/03/03(月) 00:13:39 ID:JgGlbVL6.net] ttp://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html 上記を参考にシステムコールをフックするプログラムを書きました(そのままでは駄目なので必要に応じて修正しています)。 コンパイルすると、 original_sys_uname = sys_call_table[sys_uname]; sys_call_table[sys_uname] = hook_uname; のsys_unameで `sys_uname' undeclared (first use in this function) とエラーがでます。 これは arch/i386/kernel/syscall_table.S をインクルードしておく必要があるのでしょうか? 使用しているカーネル:2.6.23
804 名前:login:Penguin mailto:sage [2008/03/03(月) 01:17:37 ID:dOT+ttrq.net] >>791 よく知らんけど、これよめ。 System calls replacement ttp://kerneltrap.org/node/5793 nm -uでundefinedなシンボルが置き換えらればいいだけなら、 LD_PRELOADなりLD_AUDITをつかってどうにかしたほうがいいんじゃね? そうなら、以後下へどうぞ。 Linuxプログラミング pc11.2ch.net/test/read.cgi/linux/1118024349/
805 名前:login:Penguin mailto:sage [2008/03/03(月) 04:02:04 ID:JCTvrwL7.net] >>791 sys_call_table[NR_uname] = hook_uname; の様な気がするわけですが。 >>792 それはユーザー空間で乗っ取る方法ですがな。
806 名前:791 [2008/03/03(月) 07:25:41 ID:zrYDUX8A.net] >>792-793 試してみます。 情報ありがとうございます。
807 名前:login:Penguin mailto:sage [2008/03/04(火) 09:36:17 ID:NdRlprld.net] >>791 乗り遅れたか!? Linux 2.6からシステムコールのフックはできません。 パッチ当てなきゃできないようなことが ttp://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf 8章にそのようなことが書いてあったはず。 記憶が確かなら、792の示したサイトの unsigned long **sys_call_table = find_sys_call_table();を 加えればできたと思う。
808 名前:795 mailto:sage [2008/03/04(火) 09:39:35 ID:NdRlprld.net] >>791 パッチを当てるのが嫌ならLSMを使ったらいい。 決まった関数で始めるとか、とかsecurity_operations構造体に登録するあたりとか デバドラに似ているからsecurity以下を読めば使えると思う。
809 名前:791 [2008/03/04(火) 19:10:21 ID:iX0t2env.net] >>795 どうもです。 あれから色々調べたら>>795 の言うとおりに2.6.xからはできないみたいですね。 下記のURLに書いてある。i386_ksyms.cに extern void* sys_call_table[]; EXPORT_SYMBOL(sys_call_table); を、追加・再構築してやってみようと思います。 ttp://mail.nl.linux.org/kernelnewbies/2006-05/msg00334.html
810 名前:login:Penguin mailto:sage [2008/03/04(火) 20:25:09 ID:neWtFAJV.net] >>791 調べもせずに書いてるけどLinux版のウィルス対策ソフトのお試し版に 運がよければカーネルモジュールのソースが含まれていて、なおかつ、 それがシステムコールのフックしていたりしないか?
811 名前:791 [2008/03/05(水) 00:39:02 ID:QPFLTsD+.net] >>798 そのようなことはございません
812 名前:login:Penguin [2008/03/17(月) 18:46:02 ID:c0UdNwV3.net] あげ
813 名前:login:Penguin mailto:sage [2008/03/18(火) 18:12:00 ID:z8581E+A.net] init中にalloc_chrdev_regionでデバイス番号を動的確保した後で、 そのまま(関数内で)スペシャルファイルを作成する事は可能? mknodコマンドでなく、あくまでインスコだけで済ませるように出来ないかと…
814 名前:login:Penguin mailto:sage [2008/03/18(火) 18:22:19 ID:qC/Waqz9.net] udevじゃダメなの?
815 名前:login:Penguin mailto:sage [2008/03/18(火) 20:50:35 ID:Hq9+Lc7G.net] >>801 オレならprocなりsysなりのみで済ます
816 名前:801 mailto:sage [2008/03/18(火) 21:37:57 ID:z8581E+A.net] >>802 >>803 それだとinsmod以外にも必要になるんじゃないんですか? 関数で無いですかね (init_moduleから呼び出す) insmod hoge だけ実行すればアプリから叩けるような形にしたいんですが…
817 名前:login:Penguin mailto:sage [2008/03/18(火) 21:49:17 ID:irgQA2zj.net] shell スクリプト作ってその中で insmod、mknod すれば? rmmod も出来るようにすれば、なお良いでしょ?
818 名前:login:Penguin mailto:sage [2008/03/18(火) 23:47:40 ID:z8581E+A.net] >>805 それが良さげですね。 ありがとうございました。
819 名前:login:Penguin mailto:sage [2008/03/18(火) 23:49:33 ID:owXiyD5i.net] >>801 mknodしたくないってだけなら、device_create(9)か、手を抜きたいなら misc_reg
820 名前:ister(9)に全部にまかせれば、>>802 が言ってるように、udevが勝手に スペシャルファイルを作ってくれるんじゃないか? [] [ここ壊れてます]
821 名前:login:Penguin mailto:sage [2008/03/19(水) 10:35:22 ID:J+fEVrF8.net] ブロックデバイスのブロックサイズってどこで決まってるの? ユーザアプリから見る方法ある?
822 名前:login:Penguin mailto:sage [2008/03/19(水) 14:37:31 ID:ZMxkS/nc.net] >>808 mkfsする時に決まると思うが。 ext2/ext3 なら tune2fs -l で見るか、ファイルがあれば stat構造体の st_blksize を見る。
823 名前:login:Penguin mailto:sage [2008/03/20(木) 00:19:26 ID:tEIlyDHp.net] >>808 そのブロックデバイスドライバが制御しているハードの規格によりだね。 SCSI系ならMode Senseコマンドで取れたんじゃないっけ?
824 名前:login:Penguin mailto:sage [2008/03/20(木) 00:24:56 ID:tEIlyDHp.net] >>808 試してないけど、blktool(8)のblock-szコマンドでいけそうかもね?
825 名前:login:Penguin mailto:sage [2008/03/20(木) 02:10:32 ID:wMmGSYfl.net] >>809 フォーマットする前に最適値を知っときたい乙女心です >>810-811 ありがとう。でもハードの規格というよりブロックデバイスとして なんかその辺を返してくれるioctlなりなんなりがあったらいいな とか夢想してた
826 名前:login:Penguin mailto:sage [2008/03/28(金) 15:40:00 ID:BcQjSrEl.net] >>807 見て、misc_register調べてちょっと使ってみたんだけど、 これで作ったもんどうやって消すんだ? 関数自体は使い方分かったが、対になるもの無い? misc_register込みのinsmod→rmmod→再度insmodでハングするんだが
827 名前:login:Penguin mailto:sage [2008/03/28(金) 15:47:49 ID:BcQjSrEl.net] 書いた直後に自己解決しちまったorz misc_deregisterがあるのね… スレ汚しすまんかった
828 名前:791 [2008/04/06(日) 15:36:55 ID:n9AD6VHb.net] ほ?
829 名前:login:Penguin [2008/04/10(木) 21:40:14 ID:zop984mC.net] mmapを利用して物理アドレス0x10000000に存在するデバイス(SRAM)のR/Wを 行うドライバを作成しようと思っています。 馬本の第3版のサンプルソース(simple)を参考にしながらremap_pfn_rangeで マッピングし、ダンプをとってみたところ、0x10000000エリアのデータでは なく、全て0のデータが読み取れました。 0x1000等の小さい物理アドレスであれば正常にリード出来ているようです。 0x10000000のように上の方のアドレスは、remap_pfn_rangeではマッピング されないのでしょうか? カーネルのバージョンは2.6.11です。
830 名前:816 [2008/04/10(木) 22:19:28 ID:zop984mC.net] /dev/mem openして memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000) でも同じ結果でした・・・
831 名前:816 [2008/04/10(木) 22:20:55 ID:zop984mC.net] 訂正 >>817 >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000)
832 名前:816 [2008/04/10(木) 22:21:43 ID:zop984mC.net] 訂正 >>817 >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000)
833 名前:login:Penguin mailto:sage [2008/04/10(木) 23:10:16 ID:hws3UYgb.net] Linux 2.6.11 使ってないしためしてないけど、 /sys/devices/pci*/*/resource? を mmap(2) って出来ないんだっけ?
834 名前:login:Penguin mailto:sage [2008/04/11(金) 00:58:30 ID:pzz5pihD.net] とりあえず、落ち着けw man mmap2
835 名前:816 [2008/04/11(金) 23:01:18 ID:1s5/4DVK.net] >>821 >man mmap2 ↓ですよね? www.pinkdragon.net/doc_lib/contents/ja/linux_man/mmap2.2.html Linux 2.3.31 以降で使用可能とありますが、この環境では定義されていないと言われます。 組込み系だからなんでしょうか・・・ それと馬本第3版のP437 15.2.6 RAMのマッピングを変更する に 「ramap_pfn_rangeがRAMを扱えないことは・・・」ってくだりがあります。 実際いま起きている問題はこれなんでしょうか? ioremap_nocacheでReadする方法とダンプ比較したところ,mmapだと 0x00000000〜0x00800000 あたりまではちゃんとよめますが、 0x01000000になったとたん、0x00000000の値になってしまいます・・・ ioremap_nocacheでは0x01000000も見れるのに・・・
836 名前:login:Penguin mailto:sage [2008/04/12(土) 04:09:25 ID:CJCvWk/v.net] MTD使えばいいんじゃない? phram.koとか slram.koとか
837 名前:login:Penguin mailto:sage [2008/05/26(月) 23:35:38 ID:ZMUO6bXW.net] タスクレットの中でsleep_on_timeoutって呼べないんですか? なぜかカーネルパニックになってしまいます…
838 名前:login:Penguin mailto:sage [2008/05/28(水) 19:14:20 ID:eAKKlqpI.net] タスクレットからkill_fasync()呼びたいんですけど、 第一引数ってどこから持ってくればいいんでしょうか?
839 名前:login:Penguin [2008/06/13(金) 19:47:44 ID:ngpRzev4.net] フリーオのデバイスドライバー書ける人が居たら神!
840 名前:login:Penguin mailto:sage [2008/06/13(金) 22:56:58 ID:yAy4CW2H.net] 玄箱用のは、あるだろ
841 名前:login:Penguin [2008/07/05(土) 05:09:39 ID:+CtKxXwh.net] あげあげ
842 名前:login:Penguin mailto:sage [2008/07/05(土) 08:11:05 ID:d6Puhgue.net] ttp://pc11.2ch.net/test/read.cgi/linux/1213378360/
843 名前:login:Penguin mailto:sage [2008/07/05(土) 11:49:23 ID:D1363wxr.net] やっぱり情報公開されてない物のドライバ造るのって無理がある? Willcomスマートフォン端末でLinuxを動かすプロジェクト?があるのですが、 WS003SH、WSはPrismチップの無線LANを使用。 WS011SHではSharp独自のチップを使用した物のようです。 WS020SHは不明。 当方WS011SHの物の開発に興味があるのですが、難しいどころか情報の公開がされていない限りは 手すら付けられない状態でしょうか? アドバイスよろしくお願いします。
844 名前:login:Penguin [2008/07/27(日) 04:17:46 ID:JGvJfhtT.net] copy_{to,from}_user()でユーザプロセスのアドレスを与えるところにカーネル空間のアドレスを与えるとどうなります? やっぱりaccess_ok()で弾かれる?
845 名前:login:Penguin [2008/07/27(日) 08:01:26 ID:Nq54nVAZ.net] >>831 その程度、自分で確認しろ。
846 名前:login:Penguin [2008/08/21(木) 06:11:30 ID:5vh0FBcx.net] あげ
847 名前:login:Penguin [2008/09/17(水) 22:50:23 ID:v0hV3n2N.net] Linuxデバドラ移植の質問です。 雑誌の記事でx86Linuxデバドラを他CPUのLinuxに移植する際に、デバドラのソースが x86に依存してて移植できないことを知りました。 どうやらx86プログラマが他のCPUへの移植性を考えずに開発したことが原因みたいです。 雑誌によるとデバドラの依存箇所は以下が多いようです。 ・バイトオーダ ・アライメント ・I/Oアクセス ・タイミング 皆様に質問ですが、このようなx86に依存したLinuxデバドラが落ちている場所を ご存じないでしょうか? また、根本的なことですがx86Linuxデバドラを移植したり、移植しようとしたが x86に依存してて大変だったという案件は多いのでしょうか? どうぞよろしくお願いいたします。
848 名前:login:Penguin mailto:sage [2008/09/17(水) 23:58:51 ID:3YmhTjsY.net] >>834 drivers/ 直すのはそんなにめんどくないが、どこに地雷があるかわかりにくいのがのう。
849 名前:login:Penguin mailto:sage [2008/09/18(木) 00:34:30 ID:YTkXriLK.net] >>834 というか、デバイスドライバは基本的にハードに依存して当然 という側面も否定できないと言わざるを得ないこともあるので。
850 名前:834 mailto:sage [2008/09/18(木) 00:34:38 ID:csSd+QEz.net] カーネルソース内にあるんですね! 知りませんでした; 私は初心者でよく知らないんですが、てっきりカーネルソール内のコードって 移植性をちゃんと考えてあって(arch/以外)、管理されていると思ってました。 むしろ、カーネルソース外の開発(企業or個人)で公開されているドライバに あるのかと思ってました。
851 名前:login:Penguin mailto:sage [2008/09/18(木) 10:25:28 ID:tEXQNL4k.net] >>834 ふつー開発者の持ってるCPUでしかテストしないよ。 tg3とかe1000とかはNEC(ia64)とかIBM(powerpc)とかが 頑張って自分とこのハードで動くようにしてるけど、 個人でハックしてるものはたいていx86だけ。
852 名前:login:Penguin mailto:sage [2008/09/19(金) 05:32:38 ID:PmgUOzFO.net] まあ、過去の経験からすると ・USBターゲット - ほとんど手を入れる必要無し ・PCI - そんなに苦労することはない ・CPU直結 - 健闘を祈る てところですかねえ。
853 名前:login:Penguin [2008/11/09(日) 10:59:58 ID:QBZrgAJi.net] age
854 名前:login:Penguin mailto:sage [2008/11/13(木) 05:29:37 ID:dS9nrsy0.net] USBデバイスでも無線LANとかは
855 名前:login:Penguin [2008/12/07(日) 17:23:17 ID:Ht7uJKzk.net] age
856 名前:login:Penguin mailto:sage [2008/12/19(金) 14:08:43 ID:MwDJWbRs.net] HWからの割込み処理中の、ローカルAPICへのEOI発行タイミングについて質問があります。 レベル・トリガの割込みだった場合は、end関数からEOIを発行しています。 これは、割込み処理の先頭で発行してしまうと、I/O APICへEOIが通知され、デバイスのアサートが 失われてしまうのが不都合だからでしょうか? カーネルのverは2.6.18 です。
857 名前:login:Penguin mailto:sage [2008/12/20(土) 08:40:05 ID:9ZJbjYSC.net] >>843 一般的な話だけど 割り込みに関わるのは3つ。 @割り込み発生の条件と、割り込み要求するデバイス A割り込みを調停する割り込みコントローラと、割り込み受付のカーネル B実際の割り込み処理プログラム @→A→Bの流れは分かるよね それなら質問の答えも分かるよねw わんこ蕎麦に例えると @>>843 のお椀の蓋が開いてる A>>843 のお椀に蕎麦を放り込むおばちゃん B蕎麦を食べる>>843 満腹になった>>843 Bが最初にすべきは、@の処理かAの処理か
858 名前:login:Penguin mailto:sage [2008/12/21(日) 18:36:36 ID:6RSqLOEI.net] >>844 「ご馳走様でした」と言いながら金を払わないで蓋も開けっ放しで逃げる。
859 名前:login:Penguin mailto:sage [2008/12/21(日) 19:17:37 ID:otIiAnj0.net] ダブルフォルト乙
860 名前:login:Penguin mailto:sage [2008/12/22(月) 03:52:28 ID:guo09gfy.net] (1)はおばさんのスピードに勝てないと判断して、(2)のおばさんに話し掛けるよな もうお腹いっぱいって
861 名前:login:Penguin [2009/01/24(土) 00:42:09 ID:UJ+xFTUa.net] a
862 名前:login:Penguin mailto:sage [2009/02/17(火) 22:55:17 ID:m2mCukTw.net] ポートIOするサンプルを作ってみようと思ったのですが、 下のコードの時点で、すでにコンパイルが通りません。 sys_ioplを呼ぶのに、何が足りないのか分からないです。 どうしたら良いか、アドバイス頂けたら助かります。 よろしくお願いします。 debian 2.6.24 gcc 4.1.2 make -C /lib/modules/2.6.24/build M=/test module error: implicit declartion of function 'sys_iopl' --- #include <linux/init.h> #include <linux/module.h> #include <linux/io.h> #include <linux/ioport.h> static int __init hello_init(void){ sys_iopl(3); return; } static void __exit hello_exit(void){ return; } module_init(hello_init); module_exit(hello_exit);
863 名前:login:Penguin [2009/02/17(火) 22:55:48 ID:m2mCukTw.net] すみません、sageてしまいました。
864 名前:login:Penguin mailto:sage [2009/02/18(水) 00:04:19 ID:lQ8CDN9P.net] 根本的に間違っているような気がするので、 もう少し具体的にやりたいことを書いた方がいいと思う。 取り合えずドライバでioplはいらねえ。
865 名前:login:Penguin mailto:sage [2009/02/18(水) 01:04:31 ID:WJ6360yx.net] >>851 もしかして、ドライバ内では、ポートにアクセスするのに、iopl自体が使えないということでしょうか? そうすると、request_regionしていくしかないということですかね。 それとも、アクセス許可自体が必要ないのでしょうか。 元々、独自PCI-I/Fボードにアクセスするアプリがありまして、 それの、ドライバ版を作ろうと思いました。 そのアプリでは、iopl(3)→outb(),inb()にて値を取得していたので、同じ様に作っていたところでした。 PCIからのポートアドレス取得が上手くでき、そのアドレスにアクセスする段階だったのですが、 ioplでどうしてもコンパイルが通らず、includeの問題なのか、Makefileなのか、 途方に暮れてました。>>849 はそのテストプログラムを抜き出しです。
866 名前:login:Penguin mailto:sage [2009/02/18(水) 01:38:21 ID:lQ8CDN9P.net] なんでドライバにする必要があるのかよくわからんが。 そういうレベルでわからんのであれば、まずは馬本で基礎知識を 身につけた方がいいと思う。 ついでに、sys_ioplの呼び方はそうじゃない。 つうかカーネルの中でsys_〜は直接呼ぶもんじゃない。
867 名前:login:Penguin mailto:sage [2009/02/18(水) 12:48:39 ID:WJ6360yx.net] >>853 ありがとうございます。 ドライバ版の意図は、いずれ割り込みを使うつもりだったからです。 馬本は十分理解できなかったので、とりあえず作ってみるという感じでやってました。 sys_ioplは呼んではいけないんですね。 馬本、もう一度読んでみます。
868 名前:login:Penguin mailto:sage [2009/02/18(水) 16:25:38 ID:zpaCJvuo.net] 馬本はカーネルの知識がある程度ある前提で書かれてるので まずはLinuxカーネルに関する文献を読んでみることをおすすめするよ デバイスドライバはカーネルの一部でもあることを忘れるな
869 名前:login:Penguin mailto:sage [2009/05/29(金) 14:40:20 ID:D/EXOrYt.net] Kernel 内で IN/OUT アセンブラ命令に相当するのは 何かマクロがあるんじゃなかったっけ? READ_PORT とかそんなの。
870 名前:login:Penguin mailto:sage [2009/05/29(金) 23:00:18 ID:A6oE+oT8.net] in[bwl] out[bwl] とか。 include/asm/io.hに入ってたはず。
871 名前:login:Penguin mailto:sage [2009/07/04(土) 14:39:23 ID:D5yvn6Kc.net] シリアルドライバ内の情報で、何バイト受信済みとか、何バイト未送信という情報って 取得することは可能ですか?
872 名前:858 mailto:sage [2009/07/04(土) 16:35:43 ID:D5yvn6Kc.net] 補足です。 上記の情報をアプリケーションから取得できますか?
873 名前:login:Penguin mailto:sage [2009/07/05(日) 02:17:52 ID:vnzKXmwE.net] >>859 ioctlでTIOCINQとかTIOCOUTQみれば出来そう。 つーかマニュアル嫁よ。せっかくあるんだからよ。
874 名前:login:Penguin mailto:sage [2009/07/05(日) 14:39:25 ID:jkHVDhT6.net] ヌルイぞ。そこは つーかソース嫁よ。せっかるあるんだからよ。 だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。 ・・・ってえらいひとがいってました!
875 名前:login:Penguin mailto:sage [2009/07/05(日) 23:11:19 ID:vnzKXmwE.net] >>861 その偉い人は馬鹿だよ
876 名前:login:Penguin mailto:sage [2009/07/05(日) 23:20:49 ID:xNWd+cLB.net] どこでも、えらい人は馬鹿なもんさ。
877 名前:login:Penguin [2009/09/19(土) 20:24:56 ID:I29pddJ7.net] 保守上げ
878 名前:login:Penguin mailto:sage [2009/10/12(月) 16:24:20 ID:cJbteqq9.net] >>861 × だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。 ○ だろ。ソース以外の資料なんかないんだからOSSってのは質問禁止なんだよ。
879 名前:login:Penguin mailto:sage [2009/12/03(木) 22:11:10 ID:s69LcKJk.net] i386BSDカーネルの386BSDカーネルソースコードの秘密 ソース以上の資料なんかないんだから、に対して何か書いてあったな。
880 名前:login:Penguin mailto:sage [2009/12/03(木) 23:11:02 ID:LYVup2we.net] >>866 ソースそのものと、ソースにこめられた趣旨は別じゃないかな?
881 名前:login:Penguin mailto:sage [2009/12/10(木) 00:21:58 ID:XvjOUXRH.net] UTSL だな。
882 名前:login:Penguin [2010/02/18(木) 10:40:00 ID:hWc/MwlX.net] linuxmintとウィンドウズ7RCを使っています。WIN7は試用なので来月から起動後一時間で自動で電源が落ちるようです。 リナックスに乗り換えるのは簡単なのですが、今使ってるテレビチューナーのドライバがリナックスには無いのです。 だれかmvp-rx3のドライバを書いてください。 このままではリナックスでテレビが見られず、リナックスをあきらめてウィンドウズのところにお嫁にイかされてしまいます。 テレビを見るためにはリナックスをお慕いもうしあげていますのにウィンドウズを買わなければならない境遇に どうかどうか同情をしていただけるスーパーハッカーの方はドライバ書いてくださいませんか。 生きていくためには愛をもあきらめゲイツに身をゆだねなければならないのかと震えております。 ちなみにあたし女子中学生です。生娘です。似ている芸能人は17歳のころの広末涼子です。
883 名前:login:Penguin mailto:sage [2010/02/18(木) 19:21:20 ID:tk+7V5La.net] >>869 GV-MVP/RX3 www.iodata.jp/product/tv/analog/gv-mvprx3/ mvp-rx3はアナログTVキャプチャーボードですね。 2011年7月にアナログテレビ放送が終了するので どのみち地上デジタルテレビチューナーが必要になります。 Windows7を買う金でPT2を買ってLinuxで使う方がよいと思います。 PT2なら地デジでもコピーワンスによる不便から逃れられます。 日経Linux 2010年2月号 itpro.nikkeibp.co.jp/article/MAG/20100105/342880/ > 特集2 > PT2で地デジ録画システムを作る > パソコンで地上デジタル放送や衛星放送を受信できる > デジタル・チューナ「PT2」を使ってシステムを作ります。 > 最新のLinuxディストリビューションのFedora 12とUbuntu 9.10で > PT2のドライバをインストールし,高画質のテレビ番組を見てみましょう。 > 番組表から録画予約する方法も紹介します。 【視聴】Linuxでデジタル放送【録画】 pc11.2ch.net/test/read.cgi/linux/1230616112/
884 名前:login:Penguin mailto:sage [2010/06/28(月) 20:46:03 ID:Pckx/KO8.net] デバイスクラスがCDCでバルクでデータ転送するUSBドライバを作りたいんですけど、usb-skeltonドライバのベンダーIDとプロダクトIDを変更すれば使えるのでしょうか?
885 名前:login:Penguin mailto:sage [2010/11/04(木) 21:49:31 ID:S1XESMQS.net] ioctlについて教えてください。 ioctlのパラメーターで指定するIDはlinux/ioctl.hで定義されているIOWやIORを使います。 しかし、アプリ開発者に渡すヘッダにIOWなどを使ってしまうと、ioctl.hはカーネルヘッダなので アプリ開発者に渡せません。 ioctl.hごと渡すという手もありますが、ioctl.hの実態はarchの下を辿っていったものなので、 ずばりIOWなどが定義されているioctl.hを渡してしまっては、アーキテクチャを隠蔽している意味が 薄れてしまいます。 かと言って、別にヘッダを作っては無駄です。 これは、本来はどのように解決することを想定されているのでしょうか?
886 名前:login:Penguin mailto:sage [2010/11/04(木) 22:06:18 ID:qwjxXvn/.net] ビルド環境に入っているものを素直に使う。
887 名前:login:Penguin mailto:sage [2010/11/04(木) 22:34:19 ID:S1XESMQS.net] >>873 ビルド環境? すみません、Linuxはドライバの開発とOSの移植しかやったことがないので、 ビルド環境がよくわかりません。 ドライバを開発するうえで、アプリ屋さんにどのようにドライバのヘッダファイルを 渡すのが正しいやり方なのかを知りたいです。
888 名前:login:Penguin mailto:sage [2010/11/04(木) 22:38:36 ID:LR3hS2yn.net] ?ttp://homepage3.nifty.com/rio_i/lab/driver24/00205ioctl.html
889 名前:login:Penguin mailto:sage [2010/11/04(木) 23:04:47 ID:S1XESMQS.net] 分かりました。 ioctl.hはわざわざ渡さなくても、アプリ開発で使用するカーネルヘッダに入っているので 大丈夫ということですね。 ありがとうございました。
890 名前:login:Penguin mailto:sage [2010/12/02(木) 23:23:04 ID:4b10+uK8.net] ドライバコンパイル時に静的ライブラリをリンクさせることって出来ますか?
891 名前:login:Penguin mailto:sage [2010/12/02(木) 23:29:16 ID:QEjw5J80.net] はい
892 名前:login:Penguin mailto:sage [2010/12/03(金) 01:20:27 ID:q4cXzrWN.net] どうやったら出来ますか? 2.6系のカーネルですが、-lでライブラリを指定しても WARNING: "hoge" [/home/hoge.ko] undefined! と言われてリンクできないんですよ。
893 名前:login:Penguin mailto:sage [2010/12/03(金) 01:26:12 ID:HjCnxCbQ.net] .koってライブラリじゃないよ
894 名前:login:Penguin mailto:sage [2010/12/03(金) 10:36:25 ID:CY74Qv7R.net] そもそもgccやbinutilsはWARNINGとか大文字は出さないだろう 何かすごい勘違いしてそう
895 名前:login:Penguin mailto:sage [2010/12/11(土) 14:59:04 ID:uuYvSF4I.net] >>879 そもそも -l のかわりにソース直指定ならリンクできるのか?
896 名前:login:Penguin [2010/12/29(水) 17:20:29 ID:4yM0+SZ6.net] webcam(UVC)を接続すると、/dev/video0にデバイスが作成されますが、 ここから流れてくるフォーマットについて知りたいのですが、どこか 参照するところってありますでしょうか?
897 名前: 【中吉】 【1992円】 mailto:sage [2011/01/01(土) 00:36:00 ID:NRMsojMl.net] おめおめ!
898 名前:login:Penguin mailto:sage [2011/05/27(金) 16:14:52.73 ID:hBkzVcCP.net] Cライブラリのassert()のドライバ版みたいなのないですかね? 勉強用にドライバを書いているのだけど、エラーチェックにいちいち if文を書くのが面倒くさい。 普通のアプリの場合は、assert()で一行でエラーチェックを終わらせるのだけど。 無いなら、どうやってエラーチェックしてるか教えて貰えるとありがたい。
899 名前:login:Penguin mailto:sage [2011/05/27(金) 16:21:32.12 ID:oqgnTIfp.net] BUG_ON
900 名前:login:Penguin mailto:sage [2011/05/27(金) 23:08:25.94 ID:NHryjoxJ.net] タイプ数減らしたいだけなら自分でマクロ書けばいいじゃん #define assert(x) なんとかかんとか
901 名前:885 mailto:sage [2011/05/28(土) 21:55:24.09 ID:DZ/zAfXL.net] >886 どうもありがとう。良い情報を頂きました。 >887 最悪その方法を取るけれど、既存の洗練された方法があるならそっちを使うべきでしょう?
902 名前:login:Penguin [2011/07/28(木) 17:08:37.75 ID:fa8I36t3.net] PCIの自作用穴あき基板ってあるんですかね? 自作基板をスロットに差してデバドラも自分で書いて使ってる人います?
903 名前:login:Penguin [2011/07/28(木) 21:19:13.92 ID:9X016Sem.net] FPGAでプログラムする人とかいるんじゃないかな
904 名前:login:Penguin mailto:sage [2011/08/30(火) 14:59:09.92 ID:0covJFQI.net] >>889 サンハヤトで売ってる ttp://www.sunhayato.co.jp/products/details.php?u=242&id=07008 もう生産終了して在庫のみみたいだが… ・FPGAにPCIバスコントローラIPを組込む (QuickPCIのようなPCIコア搭載のASSPも可) ・PLXのPCIバスブリッジLSIを使う とかが簡単かな? ただし、多chロジアナかPCIバスアナライザがないとH/Wのデバッグつらそう
905 名前:電板住人 mailto:sage [2011/09/08(木) 22:50:33.11 ID:5S22Lom/.net] >891 なせばなるってか。 elm-chan.org/works/pci/report.html USB highspeed で足りなくなる用途ってのがなかなかなくて なんか作る前に PCI がオワコンになってしまた。
906 名前:login:Penguin mailto:sage [2011/09/08(木) 22:57:53.59 ID:gAMXe89X.net] 汎用のPCIプロトコルICがあればいいのにね プロトコルが複雑なせいで使いにくいよ、PCIは
907 名前:login:Penguin mailto:sage [2011/09/08(木) 23:36:34.13 ID:M1WIsemQ.net] >>893 (やーさん) 891が言ってるPLXのPCI bridge LSIが、いわゆる汎用のPCIプロトコルICだろ? ttp://www.plxtech.com/products/fastlane/ ttp://www.plxtech.com/products/expresslane/bridges
908 名前:login:Penguin mailto:sage [2011/09/09(金) 00:51:36.99 ID:i51Tyjoe.net] >894 MOUSERで買えるんだな。知らなかった。 俺が知ってるのはこっち。 shop.trenz-electronic.de/catalog/product_info.php?products_id=801
909 名前:login:Penguin mailto:sage [2011/09/09(金) 08:48:41.83 ID:RO54tTej.net] PCIってバスマスタ機能ついてないと強烈に遅いからなぁ ターゲットアクセスONLYだったらUSBの方が全然マシ
910 名前:login:Penguin mailto:sage [2011/09/09(金) 12:22:55.91 ID:c/CggDIE.net] USBはターゲット側から割り込みかけられんのがなあ 3.0が一般的になれば解決しそうだが
911 名前:login:Penguin mailto:sage [2011/09/16(金) 20:45:13.24 ID:sbRt/b8G.net] page2.auctions.yahoo.co.jp/jp/auction/b124613538 旦那、アナライザが出てきましたぜ
912 名前:login:Penguin mailto:sage [2011/09/17(土) 13:18:09.75 ID:1xn24TfS.net] >>898 一瞬安いと思ってしまったが、いまさら使い道ないよなぁ
913 名前:login:Penguin mailto:sage [2011/10/01(土) 08:26:06.16 ID:PYdveQ5P.net] create_workqueueでカーネルスレッドいっぱい作るドライバが多いな core-i7とか12個もできたりする
914 名前:login:Penguin mailto:sage [2012/04/10(火) 20:10:51.64 ID:K9bAsJRY.net] NICレジスタのとあるフィールドを、MMIOを使って書き換えようとしています。 1.pci_get_device()でデバイス情報取得 2.pci_resource_start()で物理アドレス取得 3.ここで、一応request_mem_region()をコールしますが、既にベンダー提供の デバイスドライバでrequest_mem_region()されているので、0が返ってきます。 が、構わず続けて、 4.ioremap_nocache()でマッピングされたアドレスを取得 4.の結果を以ってレジスタのREADはできた(ethtool -dとの比較結果が一致)のですが、 writeb()を使って書き込んでも反映されていません(ethtool -dで確認)。 そこで質問なのですが、既にrequest_mem_region()されているレジスタについては、 READはできてもWRITEは不可といったことなんでしょうか? それとも、他にフラグ操作等足らない操作があるのでしょうか?
915 名前:login:Penguin mailto:sage [2012/04/10(火) 20:13:57.19 ID:TjB2iYHy.net] 同じリソースに2ヶ所(個別の管理している?)からアクセス(書き込み)したら、どうなるかわかってる?
916 名前:login:Penguin mailto:sage [2012/04/11(水) 07:08:07.09 ID:Ov29jEBq.net] >>902 実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、 それでも横から弄られたら破綻するかなと思います。 そもそも、ベンダー側ドライバがこのbitを操作するioctl()なりEXPORT関数なりを用意 してないので、サポート外動作というのは理解しています。 一応、この辺はベンダー側にNDAでもいいんで提供してもらえるように依頼しています。 今回は、それまでに時間がかかるのでとりあえずでも弄ることができないかとあれこれ やっています。 最悪は、このbitをドライバロード時に設定しているドライバソースを弄ればなんとか なりそうなんですが、ソースを弄ることなく外から設定できるといいな、と。
917 名前:login:Penguin [2012/04/11(水) 07:42:58.51 ID:k8CqWmKf.net] ioremap()の場合ですが、こんな事書いてる人もいますね。 ttp://0x74.blogspot.jp/2009/05/linuxrequestmemregionio.html その後バージョンが上がって変わってるかもしれません。
918 名前:login:Penguin mailto:sage [2012/04/11(水) 14:34:19.38 ID:idMu7gyr.net] >実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、 スレタイに通りに、NDAドライバをハックして バイナリパッチのほうが早くね
919 名前:login:Penguin mailto:sage [2012/04/11(水) 19:39:13.21 ID:Ov29jEBq.net] >>904 今回、MMIO使って書き換えてみようと考えたのが、そこのページを見たためでした。 結局まだうまくいってませんが… >>905 とりあえず、ドライバソースを弄る方で先にやってみようと思います。
920 名前:906 mailto:sage [2012/04/12(木) 20:02:46.16 ID:lbSIQeJF.net] 結局、ドライバソースを弄って無事目的を果たせました。
921 名前:login:Penguin mailto:sage [2012/10/08(月) 17:33:01.99 ID:Z+p5tcDI.net] kernel技術者の需要ってどんなもんでしょう? 技術者が不足している分野と、 待遇の目安など教えてもらえると嬉しいです。
922 名前:login:Penguin mailto:sage [2012/10/09(火) 10:23:13.53 ID:fG1BPWH9.net] 今それが見えてない時点でアウトだと思うよ
923 名前:login:Penguin mailto:sage [2012/10/09(火) 10:46:20.92 ID:HshUGVwS.net] いや、なら他を当たるまでなので別によいです webなりDBなり頑張ります
924 名前:login:Penguin mailto:sage [2012/10/09(火) 11:24:00.87 ID:fG1BPWH9.net] ジャンルには関係ないとは思うが、まあいいか
925 名前:login:Penguin mailto:sage [2012/10/09(火) 12:26:59.26 ID:sI4/BkKw.net] >>910 まだ選択の余地があるなら他に進んだ方がいいと思う。プログラム業なんて、>>909 みたいなカスしかいないから。
926 名前:login:Penguin mailto:sage [2012/10/09(火) 13:10:40.17 ID:GPpGUb7J.net] プログラム業
927 名前:login:Penguin [2013/03/26(火) 08:51:30.75 ID:CLzKF3Up.net] age
928 名前:login:Penguin [2014/02/13(木) 19:42:26.30 ID:StvXlIag.net] /dev/input で type=EV_MSC code=MSC_SCAN って なにを意味してんの?
929 名前:login:Penguin [2014/02/23(日) 12:43:47.37 ID:ytOaVGS4.net] ecb ってなにドライバー?
930 名前:login:Penguin [2014/02/26(水) 10:47:34.06 ID:w6lQvC2s.net] キン肉ドライバー!
931 名前:login:Penguin mailto:sage [2014/04/02(水) 15:13:48.18 ID:rDv+tjOg.net] ドバイスデライバァ!
932 名前:login:Penguin mailto:sage [2014/04/09(水) 11:07:29.91 ID:MFnWvffb.net] 奇跡、神秘、真実、夢
933 名前:login:Penguin [2014/10/30(木) 21:21:48.26 ID:xfEc1Jae.net] ユーザーランドで動作するデバイスドライバ って作れる?
934 名前:login:Penguin mailto:sage [2014/10/31(金) 07:35:14.24 ID:tkZ1h6qo.net] >>920 User Space I/O (uio)のこと?
935 名前:login:Penguin mailto:sage [2015/09/06(日) 01:15:03.40 ID:M4p9U028.net] 923
936 名前:login:Penguin mailto:age [2015/09/19(土) 22:49:35.27 ID:wUZ4n7AX.net] ハック?
937 名前:login:Penguin mailto:sage [2015/09/20(日) 05:44:26.94 ID:Y/A9fOOn.net] 啓発
938 名前:login:Penguin mailto:sage [2015/09/20(日) 16:39:17.03 ID:Y/A9fOOn.net] deviceは接続しただけで、大手デイストリやその系列は自動認識の時代だろ
939 名前:login:Penguin [2016/03/14(月) 02:03:02.13 ID:wYUVNjV4.net] >>46 懐かしい。もう14年経ったか。この人いまどうしてるだろう? 私はこの話の元ネタであるコメンテーターというお笑いネタをマ板に書いた者。 当時は想像もしなかったが、今じゃ私もLinux使いになってしまった。 私が書いたのはお笑いネタだけど、>>46 みたいに、実際のコードを 面白おかしく解説してくれる記事があったらもっと読みたかったな。 記念に書きのこしておく。スレ汚しごめんよ。
940 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています