[表示 : 全て 最新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]
ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。


507 名前:login:Penguin [2006/03/31(金) 21:18:57 ID:OpI/WZIP]
おお見てる人が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

508 名前:login:Penguin mailto:sage [2006/03/32(土) 02:19:11 ID:9G03KeUN]
また別の人が適当に書いてみる。
hugemem使ってみては?

509 名前:login:Penguin mailto:sage [2006/03/32(土) 10:42:43 ID:afhcBPMx]
hugememってi386じゃなかったっけ?

x86_64で4G載ってるって事は、IOMMUとか関係あるのかな。
結局virt_to_bus(pci-nommu.c)かvirt_to_phys(pci-gart.c)呼んでるから、
scatterlistのpageが期待しない値なんでしょうけど、そこら辺調べたらいいのかな。

ドライバいじったことはあるけど、書いたこと無いので適当です。

510 名前:login:Penguin mailto:sage [2006/03/32(土) 10:47:55 ID:shKEnT0S]
似たようなドライバの中身を調べてみればすぐわかりそうなものだが

511 名前:login:Penguin mailto:sage [2006/03/32(土) 15:12:47 ID:afhcBPMx]
>>510
俺もそう思って、見たけどわからなかったw

SCSI側からと、PCI側から見たら、よくわからなくなった。。
bioがよくわからん。
pci_set_dma_maskって要するにbounceするかどうかなのか?
あとは、ページ確保するときのDMA/DMA32の切り分け。

512 名前:login:Penguin [2006/03/32(土) 16:46:33 ID:p6EHT8/a]
うぉレスが増えてる。

>>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とか見ると定義されてるんですよね。
なんかその辺も絡んでるのかなと気にはなってはいました。

皆さんアドバイスありがとうです。
もう少しカーネルソース見て来ます。

513 名前:login:Penguin mailto:sage [2006/04/04(火) 08:20:23 ID:0xn4pI8o]
気になるから、どうなったか知りたいです。

514 名前:login:Penguin mailto:sage [2006/04/04(火) 13:11:55 ID:p7vmOtaT]
>>504
sched_setaffinity(2)


515 名前:login:Penguin mailto:sage [2006/04/06(木) 22:28:49 ID:Mnqgo3eJ]
>>513

まだ色々と追っかけてる途中です。
とりあえずPCIドライバ周りから追っかけ中です。
PCIドライバを見た限りでは、pci_map_sgすると中でdma_map_sg
呼び出しててその中見てもあんまり大したことしてなさそうですね。
やはりbio周りも見ないと駄目なのかも。
もうちとかかりそうですが、わかり次第、結果をお知らせします。




516 名前:505 mailto:sage [2006/04/08(土) 14:24:03 ID:+mDmSXuo]
原因わかりました。
結論から言うと、pci_map_sg()で作られるSGリストのアドレスは正常でした。
問題なのはpci_map_single()で出てくるアドレスが、低位メモリだとカーネル
論理アドレスを返し、高位メモリだとカーネル仮想アドレスを返してるのが、
原因でした。

高位メモリだとページをダイナミックに確保されるため、物理アドレスとペー
ジが1:1でマッピングされないので、pci_map_single()だとvirt_to_physしてる
だけなので使えませんね。

なのでpci_map_pageで確保してやれば問題は消えました。

SGリストに変なアドレスが入ると言ってましたが、カードのファーム側で受
け取ったリストを見てたのですが、カード内でドライバから受けた転送アドレ
スをカード内部のバッファに結びつける為にファームが独自にSGリストを
再構成しており、そのリストがpci_map_sg()で作られた物と勘違いしてまし
た。OTL

色々アドバイスありがとうございました。


517 名前:login:Penguin mailto:sage [2006/04/08(土) 16:09:33 ID:MBAxFSYD]
>>516
解決おめでとうございます。
一般的に使えそうなものならまたどこかで公開してくださいな。

518 名前:login:Penguin mailto:sage [2006/04/10(月) 22:36:55 ID:C69QC/MM]
>>516
よかったよかった。
私もソース読んで少し勉強になったよ。
ネットワーク系しかいじったこと無かったから。

519 名前:505 mailto:sage [2006/04/10(月) 23:00:56 ID:9eFrvNz6]
>>517 >>518

ありがとうございます。
馬鹿高な価格の独自のカード用のドライバで有用性はかな
り低いです。。。一応GPLなんですが、カード買わないと非
公開という阿保な方針らしいので、一般公開は難しそうです。

Linuxでの初開発で手探り状態でしたが、お蔭様で何とか目
処が立ってきた感じです。まだ細かな問題がありますが…。

Linuxでの開発はカーネルや他のドライバソース読まなけば
資料が少ない所がキツイですね。
まぁコード上のテクニックとか色々勉強になる部分は多いけ
ど、納期のある仕事でやるのは大変ですね。

流石UNIX板だけあって、建設的なスレで助かりました。

520 名前:login:Penguin mailto:sage [2006/04/10(月) 23:42:28 ID:Cs5Rh9+Y]
>>519
> Linuxでの開発はカーネルや他のドライバソース読まなけば
> 資料が少ない所がキツイですね。

ちょっと教えてください。
Linuxより資料が多いOSってなんのことを指してますか?
自分は主にLinuxの開発に携わってますが、いつもオープンソースのありがたみを
感じながらやっているので、Linuxが資料が少ない、というのは意外です。

521 名前:login:Penguin mailto:sage [2006/04/11(火) 00:42:17 ID:KjDgNH9L]
OSによっては中身がさっぱりわからないままドライバ開発しなきゃいけない事もあるしな。
つーか、そっちのほうが多そう。

522 名前:login:Penguin mailto:sage [2006/04/11(火) 00:47:03 ID:rZUiZ4e7]
>>520
NetBSDはそういう部分のmanpageが充実してるとか聞きますな。
linuxはmanpage書き上げたら実装が別物になってたなんて笑えん状況がありそうだなあ…


523 名前:login:Penguin mailto:sage [2006/04/11(火) 00:57:41 ID:9nKANwAS]
そこでmain treeにマージですよ。
main tree内の変更はたいていは面倒をみてくれる。

524 名前:login:Penguin [2006/05/11(木) 18:07:51 ID:PmwpTb/Y]
ある内蔵デバイスのドライバでPCの機種毎に処理を変えなければいけない部分が
あり、ユーザ負担を減らすためにドライバ側で自動判別したいと思っています。
機種は違うのにSubvendorIDやSubdeviceIDまで何故か一致しているので、SMBIOS
のDMI情報を参照して機種を判別したいのですが、これって可能なんでしょうか?
そんなやり方は行儀が悪いとか、他にもっとまともなやり方があるとか何でも
構いませんので、どうかご教示をよろしくお願いします。m(__)m

525 名前:好色少年のススメ mailto:sage [2006/05/11(木) 23:43:06 ID:Uu/mTCgT]
確かに行儀はよくないかも
新しいハードが出るたびにパッチ提供とか考えたら面倒だし
たとえそれが自社ハードだとしてもバージョンアップあるだろうし
判別はユーザランドで行う方が気分も楽だし処理も楽だしバグも少ない



526 名前:login:Penguin mailto:sage [2006/05/26(金) 20:11:11 ID:YiUMorw/]
ttp://lkml.org/lkml/2006/5/24/238


527 名前:login:Penguin [2006/08/20(日) 01:06:14 ID:BobpEKad]
カーネル層のモジュールのテストプログラム
を作ってるんですが、カーネル層でinit_moduleや
ioctlからスレッドを起こして daemonのように
動作させることってできるんでしょうか?

Linuxデバイスドライバを読んでもスレッドを
起こすような処理は載っていないようなので
参考書籍だけでも教えていただけるとありがたいです。

528 名前:login:Penguin mailto:sage [2006/08/20(日) 11:29:13 ID:EWXtKjUy]
>>527
kernel_thread
daemonize


529 名前:login:Penguin mailto:sage [2006/08/20(日) 20:55:18 ID:bg2sTV9e]
というか、普通に載ってるよね

530 名前:login:Penguin [2006/08/24(木) 12:55:11 ID:6WITQjoc]
そいや、最近のノートPCには指紋センサーがあるけど

あれはハックできるものなの?

531 名前:login:Penguin mailto:sage [2006/08/24(木) 13:34:05 ID:wKY4BjAS]
>>530
OSM 8月号に記事載ってたよ。
shop.sbcr.jp/bm_detail.asp?sku=1016200604

532 名前:login:Penguin mailto:sage [2006/08/25(金) 00:34:04 ID:CPHGcnDi]
>>531 せんきゅー!

533 名前:login:Penguin mailto:sage [2006/08/26(土) 07:37:08 ID:F4NpQAPn]
>>529
すみません。ページご存知でしたら教えてください。
第3版持ってます。


534 名前:login:Penguin mailto:sage [2006/10/04(水) 21:49:48 ID:EGTQjLn1]
すみません、どなたかわかる方教えてください。

現在、XFree86でグラフィックドライバを作ってます。チップは独自のものです。
バス等に接続されておらず、メモリマップドI/Oでアクセスします。

一応画面は出たのですが、1024*768だと縦が半分しか表示されず、
(縦に圧縮される感じ。マウスカーソルが縦につぶれている)
1280*1024だと画面が横に5個くらい表示されてしまいます。

使用しているチップは1ライン4096byte固定なので、解像度に応じて次のラインを
描画するアドレスを更新しなくてはなりません。
カーネルのFBドライバだとline_lengthとかの変数に設定してあげればうまいこと
描画してくれるのですが、XFree86の構造体にはそういった変数が見当たりません。

カーネルFBドライバのline_lengthとかに相当するものはどれでしょうか?

縦に圧縮されるのと画面が5個くらい表示されるのは、別問題な気がしてます。
今、手元にソースがないんですが、InitをするときにvirtualYを*2してやると縦が一見
正常っぽく表示されました。カーソルとかが縦につぶれたままなので、根本対策には
なっていません。

535 名前:Mr.名無しさん [2006/10/09(月) 16:36:24 ID:OGKR436u]
■■■■■■■■■■■■■■■■
■                     ■  違う板にコピペすると、四角の枠の中に
■                     ■  メッセージとURLが現れる不思議な絵。
■                     ■
■                     ■  (その仕組みがリンク先に書いてある)
■                     ■
■                     ■  この原理を応用すると、まったく新しい
■                     ■  コピペが作れる予感。
■■■■■■■■■■■■■■■■






536 名前:login:Penguin mailto:sage [2006/11/05(日) 18:18:15 ID:j6ZWju7f]
>>534
グラフィックチップのモード設定を間違えている予感

537 名前:login:Penguin mailto:sage [2006/12/14(木) 22:35:16 ID:JyAlagq8]
すみません どなたか助けて下さる方はいらっしゃらないでしょうか?
当方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です。
どなたかお知りの方いらっしゃったら お願いします。


538 名前:login:Penguin mailto:sage [2006/12/15(金) 11:02:30 ID:Qc0JIFW5]
>>537
見ているものがまったく違っているような気がしますが。
PCIでbus master転送したいんじゃないの?


539 名前:537 mailto:sage [2006/12/15(金) 15:20:46 ID:NJleqqJR]
おお、早速のレスありがとうございます。

DMA転送するにはチップセットの中の8237DMAコントローラをいじればいいって思ってました。バスマスタについて少し調べましたが、IDEのDMAもバスマスタになるんですね、知りませんでした。

となるとこのバスマスタはどうやればいいのでしょうか?参考になるものでもいいので、教えてください、お願いします。

540 名前:login:Penguin mailto:sage [2006/12/15(金) 23:40:00 ID:72pQobUh]
ターゲットとなるPCIデバイスの仕様がわからなきゃデバイスドライバは書けないよ
せめて型番だけでも出してくれ

541 名前:login:Penguin mailto:sage [2006/12/16(土) 18:42:01 ID:wkeveW0d]
ドライバというか、モジュールの話なんですけど
スレッドを使ったせい?なのか、psすると
3635 pts/0 R 0:00 modprobe hoge
と残るんですが、これは出ないようには出来ないものなんでしょうか?
勿論 rmmod hoge すると消えるんですけど。


542 名前:537 mailto:sage [2006/12/17(日) 19:34:20 ID:BtOAund7]
ターゲットのデバイスは内製のボードなのですよ orz
となると やっぱボード自体を作った人に聞いたほうがいいのかな?

543 名前:login:Penguin mailto:sage [2006/12/17(日) 19:50:10 ID:pl1Ns6BC]
チップのレジスタ仕様と、制御のシーケンスがわからないとドライバは書けないよ。

544 名前:login:Penguin mailto:sage [2006/12/17(日) 20:36:37 ID:6E+xGodr]
>>542
当然聞くべきなのですよ

545 名前:login:Penguin mailto:sage [2006/12/17(日) 22:08:40 ID:SVqrrgVr]
チップも内製なのか?
だったらデバイスドライバもチップ開発チームが書くものだよな
少なくともサンプルコードの類は書くはずだ

そうでなくて市販のチップを使ってPWBAだけ内製したのなら
使用したチップのデータシートなりプログラマーズガイドなりを読めばいいだけの話



546 名前:537 mailto:sage [2006/12/18(月) 01:17:23 ID:5wopQO2S]
ほぼ内製だったと思います。
ちょっと月曜日会社いったら、聞いてみようと思います。
大変参考になりました、ありがとうございました。

ところで、これは単なる質問ですが、
マザボのチップセットにある8237とかの
DMAコントローラは古いし遅いみたいだから
PCIとかIDEとかに使われてないみたいだけど、
Pen3 800MHzとかでも PIOのが早いの?

547 名前:login:Penguin mailto:sage [2006/12/18(月) 07:35:08 ID:a8xYea1H]
最近のデバイスで言うDMAはバスマスタDMAのことだよ。
バスマスタってのはデバイス側が主導権とってバスを制御して
CPUの頭越しにメインメモリにデータ出し入れすることだ。
そのためにはデバイスにバスをのっとってデータ転送しろって命令を
CPUからデバイスに発行する必要がある。

その手続きを知るためにレジスタなりデータシートなりを調べろって
みなさん言ってるんだよ。

548 名前:537 mailto:sage [2006/12/19(火) 00:01:59 ID:2Sv0wv+g]
なるほろ、大変勉強になりました。
ハード屋さんからマニュアルゲットして
がんばってみます。


549 名前:login:Penguin [2006/12/19(火) 23:53:27 ID:g20RCuxU]
>>537
つ ttp://www.oreilly.co.jp/books/4873112532/


550 名前:login:Penguin mailto:sage [2006/12/27(水) 05:38:58 ID:krfJbXj5]
すみません ドライバでDMA転送するための連続したメモリ領域(64MB)を確保したいのです。
kmallocで確保可能な連続したDMA領域は最大128kB ということはネットで検索すると出て来たのですが、
どうすればドライバのDMA転送で利用可能な128kBを超えるの連続領域を確保出来るでしょうか?
OSはlinuxカーネル2.6です。
ご存じの方おられましたら御教示戴きたくよろしくお願い致します。

551 名前:login:Penguin mailto:sage [2006/12/27(水) 10:51:31 ID:mQ5aQPBa]
>>550
とりあえずそのふざけた石を投げ捨てれ。

やるならalloc_pagesだろうなあ。そのサイズで連続領域を簡単に確保できるとは思えんが。
ついでに書いておくと128KByte制限は8237の呪いなのでPCIならそんなものはない。



552 名前:login:Penguin mailto:sage [2006/12/27(水) 12:43:43 ID:krfJbXj5]
投げ捨てぇー…れないorz

>>551
早速ありがとうございます。
検索してても思ったのですが、
なんか連続領域"64MB"っていうのは常識外れっぽいのですね…
とはいえ組込み系で使った独自ロケットI/OのPC向け転用の必要があり、
石を投げ捨てる訳にもいかず今回の質問とあいなりました。
alloc_pages、試してみます!!

回答感謝いたします。
センキュー!!!!

553 名前:login:Penguin mailto:sage [2006/12/28(木) 02:29:39 ID:4Oi09t3r]
かなり強引だけど、カーネルオプションで使用メモリ量に制限かけといて、
未使用領域を作った上でそこ使っちゃえば?

554 名前:login:Penguin mailto:sage [2006/12/28(木) 12:33:40 ID:vc2Jrznf]
>>553
MMUの面倒は誰が見るですか?

面倒な世の中になったのう…
物理アドレスで完結してりゃなにも考えなくていいのに。


555 名前:login:Penguin mailto:sage [2006/12/29(金) 09:28:41 ID:JbqPlaTm]
>>553
アドバイスありがとうございます。
ちょっと恐いですが、検討してみます。

>>554
MMU…よく判ってません…勉強してきます。
ご指摘ありがとうございます。

いろいろレスありがとうございました。
スレの皆様が良い年越しを迎えられますように!!
それでは、また来年!!



556 名前:login:Penguin mailto:sage [2006/12/29(金) 10:44:35 ID:PkRb73AX]
RocketIOってことはXilinxのFPGAだよな
だったら128KBのブロックのアドレスポインタリストを渡すと
自動的にリスト通りブロックをたどって転送するように
FPGA回路を再設計するのがまっとうな手段だろうな

デバイスドライバやOS設定の変更ではどうにもならんと思う

557 名前:login:Penguin mailto:sage [2006/12/30(土) 00:07:40 ID:SZb58Bld]
カーネル組込みで、ドライバ初期化のときなら確保できそうな気もするな。
開放したら二度と確保できなくなりそうだが。


558 名前:login:Penguin mailto:sage [2007/01/01(月) 22:05:23 ID:uXbHjsPd]
明けましておめでとうございます。

さらにレス&アドバイスありがとうございます。
うー勉強不足。知らないこと多過ぎますね!ハードル高いです orz
安定化まで考えると更にハードル上がりそうですが、ハード側とも相談してみます。

それでは本年もよろしくお願いいたします!!

559 名前:login:Penguin mailto:sage [2007/01/19(金) 00:41:46 ID:xhnZtOc/]
皆様に聞きたいのですが
当方Linux 2.6カーネルの元でドライバの開発を行っています。
起動してからinsmodでインサートするタイプのモジュールを作っています。
カーネルをフリーズさせたりして固まらせてしまって、やむなくリセットボタンを
押す事が多々あるのですが、その際にファイルシステムのチェックが
強制的に行われてしまい、これでかなりの時間をロスしてしまいます。
何とかこのファイルチェックを飛ばして時間の短縮を行う方法はないでしょうか?

VMwareとかの仮想マシンを使えばいいのかもしれませんが、
特殊命令を使っておりますので、仮想マシンがその命令をサポートしていないために
導入できません。

560 名前:login:Penguin mailto:sage [2007/01/19(金) 02:15:30 ID:VcfRHkiI]
>>559
mount -o remount,ro /
とかやって、書き込み不可にしてから遊べばよくね?

561 名前:login:Penguin mailto:sage [2007/01/19(金) 08:04:16 ID:/YcMJPuk]
/etc/fstabの6番目のフィールドの値を0にする。man fstabしてみそ。
tune2fsで-c 0とかもしておいたほうがいいかも。


562 名前:login:Penguin mailto:sage [2007/01/19(金) 20:24:37 ID:xhnZtOc/]
>>560
でもそれをやると、kmallocをGFP_KERNELで使ったときに
メモリがスワップアウトしたらまずいことになりませんか?

>>561
やってみました

なんかファイルチェックをしなくなったことで壊れそうでもありますが
やっぱり我慢してチェックしたほうがいいでしょうか...

563 名前:login:Penguin mailto:sage [2007/01/20(土) 19:48:34 ID:3aq4dRUa]
>>562
/だけ守ればいいので、なりません。

564 名前:login:Penguin mailto:sage [2007/01/21(日) 01:23:20 ID:QaYT7DDq]
>>563
ああそうか、swapファイルはswapパーティションですもんね
ありがとうございます

565 名前:login:Penguin mailto:sage [2007/01/27(土) 11:05:03 ID:4J9B+fMX]
評価機はネットブートさせてNFSroot稼動させればいつ飛んでも
大丈夫な環境にできるんじゃない?




566 名前:login:Penguin [2007/02/05(月) 06:03:38 ID:9i1Bwf6u]
通常、Linuxのドライバをインストールする時はカーネルにパッチを当ててカーネルごと
コンパイルしなければいけないけど、Windowsのようにカーネルソース無しでドライバを
コンパイルしてインストールできるようにする方法ってあるの?

567 名前:login:Penguin [2007/02/05(月) 06:26:04 ID:9i1Bwf6u]
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はどのバージョンまでなの?

568 名前:login:Penguin mailto:sage [2007/02/05(月) 06:56:37 ID:Zi/ATtvA]
>>566
いまはそんなことしなくていいよ
insmod rmmodで動的にドライバを挿入したり削除したりできる

569 名前:login:Penguin mailto:sage [2007/02/06(火) 01:26:43 ID:j3mwrUGC]
いやぁソースはいるだろ。

570 名前:login:Penguin mailto:sage [2007/02/06(火) 08:59:25 ID:jQKQh5/W]
ソースはいるけどカーネルのリビルドはいらない

571 名前:login:Penguin mailto:sage [2007/02/06(火) 10:27:34 ID:Rm04tDsq]
いやぁリビルドは途中までいるだろ。

572 名前:login:Penguin [2007/02/10(土) 16:03:43 ID:XWBlzb1u]
初歩的な質問ですがよろしいでしょうか

私は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

573 名前:login:Penguin mailto:sage [2007/02/10(土) 17:14:52 ID:d+hexa9D]
>>572
普通はMakefile書くわな


574 名前:login:Penguin mailto:sage [2007/02/10(土) 17:47:20 ID:a+8l3AD+]
Makefileに
obj-m += module.o
って書いて
make -C /usr/src/linux M=$PWD modules

575 名前:login:Penguin [2007/02/10(土) 19:18:09 ID:XWBlzb1u]
>>543

そうみたいですね
私のみた資料では、そうコンパイルする様に書いてあったのですが結構古い奴だった
のでしょうか

>>574

本当にありがとうございました。
その方法で無事にモジュールを作れました

感謝感謝




576 名前:542 [2007/02/10(土) 19:55:09 ID:XWBlzb1u]
.koってファイルが出てきたらからinsmodにかけてみたら
insmod: error inserting 'module.ko': -1 Invalid module format

って言われワラタ
turbo linuxなんて微妙なの使ってるせいなんですかねこれは.....

577 名前:542 mailto:sage [2007/02/10(土) 20:03:22 ID:XWBlzb1u]
今までsage忘れてたごめん

578 名前:login:Penguin mailto:sage [2007/02/10(土) 20:06:01 ID:791EznrY]
話題提供時はage、その後はsage
ってのが一番角が立たない。

正直、どうでもいいけど。

579 名前:login:Penguin mailto:sage [2007/02/10(土) 20:14:38 ID:a+8l3AD+]
/usr/src/linux が今動いてるカーネルソースじゃないとか

580 名前:542 mailto:sage [2007/02/10(土) 21:33:23 ID:XWBlzb1u]
>>579

そうですね
元からあったソースでコンパイルしようとすると必要なMakefileがないとかで無理
でしたから、kernel.orgから同じバージョンのコード落してきてまた設定しなし
いた訳ですがそれが原因ですかね。

ディストリとかは独自の変更を加えているらしいし、また変更が加えられていない
純粋なカーネルインストールしてから出直してきます



581 名前:login:Penguin [2007/02/18(日) 23:17:11 ID:PxJoV1oA]
すみません。kmallocで確保したメモリ領域をDMA転送するために、__paで変換して
渡してやるのと、dma_map_singleで変換して渡すのと、違いはあるのでしょうか?
たとえば性能(処理効率)が違うとか? どう使い分けているのでしょうか?


582 名前:login:Penguin mailto:sage [2007/02/19(月) 10:56:01 ID:QHwPPpDN]
UNIXTIMEを日付文字列に変換するのに なんかAPI用意されてないの?
"2007/02/19 12:34:56" とかその程度のでいいんだけど。

583 名前:login:Penguin mailto:sage [2007/02/19(月) 11:19:53 ID:I/jMKPR3]
strftime

584 名前:login:Penguin mailto:sage [2007/02/19(月) 13:52:20 ID:QHwPPpDN]
>>583
いや、デバイスドライバ内でなんだけど、あったっけ? いや、ない。

585 名前:login:Penguin [2007/02/21(水) 07:53:48 ID:Wuryqsb6]
Linux 2.6.16用のパッチとe2comprを同時に使いたいのだが、e2comprは2.6.10用まで
しかない。カーネルとドライバが完全に分離され、カーネルバージョンが上がっても
カーネル側の旧インターフェースが温存されるようになれば、ドライバの開発が停滞しても
最新のカーネルでそのドライバを使い続ける事ができる。



586 名前:login:Penguin mailto:sage [2007/02/22(木) 01:34:45 ID:I6i5DnCh]
そのカーネル側のABI決めようぜ話はLinusに一蹴されてるんじゃなかったけ?


587 名前:login:Penguin [2007/02/22(木) 09:14:42 ID:y9d4aAAQ]
>>586
カーネル側のドライバとして旧バージョンのカーネルのモジュールをロードできる
ラッパーを作成して、カーネル側インターフェースが変更されるたびにラッパーを
更新していく手もあるべ。

588 名前:login:Penguin [2007/02/22(木) 09:16:48 ID:y9d4aAAQ]
ラッパーにx86エミュレーションを追加するとザウルスでWindowsのドライバを読み込めたりもする。

589 名前:login:Penguin mailto:sage [2007/02/22(木) 22:34:24 ID:I6i5DnCh]
つ NDISwrapper


590 名前:login:Penguin mailto:sage [2007/02/23(金) 00:44:11 ID:cxn/yRhr]
つcapative ntfs

591 名前:login:Penguin [2007/04/03(火) 00:09:41 ID:3ycIJVku]
<linux/module.h>が無いんだけど、
デバドラ開発するには、なにかパッケージ追加しなきゃいけないの?

使ってるのはfedora6

592 名前:login:Penguin [2007/04/03(火) 00:24:35 ID:3ycIJVku]
yum install kernel-devel
してもダメだな。何が足りない?

593 名前:login:Penguin mailto:sage [2007/04/03(火) 00:41:11 ID:xSB1c0Df]
>>591
カーネルソースそのものじゃね?

594 名前:login:Penguin [2007/04/03(火) 01:00:14 ID:3ycIJVku]
>>593
あ、カーネルソースに有った。ありがとう。

普通、/usr/includeには入らないの?

595 名前:login:Penguin [2007/04/03(火) 01:08:21 ID:3ycIJVku]
あと、
man printk
って出ないの?



596 名前:login:Penguin mailto:sage [2007/04/03(火) 02:25:43 ID:xSB1c0Df]
>>595
出ないんじゃよ

597 名前:login:Penguin mailto:sage [2007/04/03(火) 02:43:03 ID:GYgStP3Z]
>>594
カーネル用ヘッダと、ユーザプログラム用ヘッダは
まざるとまずいから分離されてる。だから/usr/includeにカーネル用ヘッダはふつうは無い。

598 名前:login:Penguin mailto:sage [2007/04/04(水) 00:07:01 ID:NkZt7NAi]
/usr/include/linux に入ってないか?鳥にもよるけど。


599 名前:login:Penguin [2007/04/04(水) 00:15:23 ID:wyW6RdvI]
カーネル用ヘッダと、ユーザプログラム用ヘッダがまざると、何でとまずいだろ。

600 名前:login:Penguin [2007/04/04(水) 00:23:08 ID:ICf0Aql0]
爆発しても知りません。

601 名前:login:Penguin mailto:sage [2007/04/04(水) 00:42:58 ID:IK0cizpI]
>>598,>>599
/usr/include/linuxにあるのは確かにカーネルのヘッダだが、glibcをビルドするときに使った
アーキテクチャ依存部分とかのカーネルヘッダ、
/usr/src/linux/includeにあるのは「現在使用中のカーネル」のヘッダファイル
だよね。(間違ってたらスマソ)

これらが同じだとちょっとカーネルに変更があったときとかまずくない?
最悪glibc動かなくなるときもあるかと。

602 名前:login:Penguin [2007/04/08(日) 00:07:55 ID:gmHS+Fdj]
>>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,

603 名前:login:Penguin mailto:sage [2007/04/08(日) 00:09:38 ID:2aPQfsMY]
脳?

604 名前:login:Penguin [2007/04/08(日) 00:10:46 ID:gmHS+Fdj]
>>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’

605 名前:login:Penguin mailto:sage [2007/04/08(日) 00:11:42 ID:2aPQfsMY]
じゃ、頭?



606 名前:login:Penguin [2007/04/08(日) 00:12:08 ID:gmHS+Fdj]
NGID ID:2aPQfsMY

607 名前:login:Penguin mailto:sage [2007/04/08(日) 00:15:19 ID:2aPQfsMY]
マジレスすると、読み込むヘッダーファイルが足りないんだよ。






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

前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