1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys] ディバイスドライバの改造、製作にまつわる情報交換、質問、 噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
499 名前:login:Penguin mailto:sage [2006/01/28(土) 02:19:52 ID:eIqcEw8I] 馬本買った記念age
500 名前:login:Penguin [2006/01/28(土) 02:22:46 ID:eIqcEw8I] ageて無かった…orz
501 名前::login:Penguin [2006/01/28(土) 13:24:51 ID:z02En7Mn] tky007lip10.iij.net [210.130.172.193]
502 名前:login:Penguin [2006/02/06(月) 00:56:30 ID:gxgsnq8Z] age
503 名前:login:Penguin mailto:sage [2006/03/19(日) 20:02:53 ID:wmRM5297] www.doodoo.ru/image-2006/03-16-yeticrab.jpg
504 名前:login:Penguin mailto:sage [2006/03/21(火) 02:41:04 ID:wxAXo3DG] SMPプログラミングの入門ページとかありませんかね? どちらかというとAの処理をCPU0に割り当ててBの処理を1に って感じで分けながら処理するタイプのプログラミングなので ASMPのほうがよいのですがこのような話題はどこで聞けばよいのでしょうか
505 名前:login:Penguin [2006/03/30(木) 20:19:25 ID:P2MixPUa] なんか誰も見てないような気もするけどちょっと質問 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て実装メ モリ量も気にしなければいけないんでしょうか? 馬本見てもそんな事書いてないし。たんにハードウェアの アドレス範囲を宣言するだけと認識してるんですけど。 何方かご存知の方居られたらご教授願います。
506 名前:login:Penguin mailto:sage [2006/03/31(金) 11:41:12 ID:zMWwd0XE] 適当に書いてみる。 他のドライバ見たらわかるけど、実装メモリは気にしない。 pci_dma_syncなんたらが失敗するの?
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] カーネル用ヘッダと、ユーザプログラム用ヘッダがまざると、何でとまずいだろ。