ディバイスドライバをハックしよう!at LINUX
ディバイスドライバをハックしよう! - 暇つぶし2ch809:login:Penguin
08/03/19 14:37:31 ZMxkS/nc
>>808
mkfsする時に決まると思うが。
ext2/ext3 なら tune2fs -l で見るか、ファイルがあれば stat構造体の st_blksize を見る。

810:login:Penguin
08/03/20 00:19:26 tEIlyDHp
>>808
そのブロックデバイスドライバが制御しているハードの規格によりだね。
SCSI系ならMode Senseコマンドで取れたんじゃないっけ?

811:login:Penguin
08/03/20 00:24:56 tEIlyDHp
>>808
試してないけど、blktool(8)のblock-szコマンドでいけそうかもね?

812:login:Penguin
08/03/20 02:10:32 wMmGSYfl
>>809
フォーマットする前に最適値を知っときたい乙女心です

>>810-811
ありがとう。でもハードの規格というよりブロックデバイスとして
なんかその辺を返してくれるioctlなりなんなりがあったらいいな
とか夢想してた

813:login:Penguin
08/03/28 15:40:00 BcQjSrEl
>>807見て、misc_register調べてちょっと使ってみたんだけど、
これで作ったもんどうやって消すんだ?

関数自体は使い方分かったが、対になるもの無い?
misc_register込みのinsmod→rmmod→再度insmodでハングするんだが

814:login:Penguin
08/03/28 15:47:49 BcQjSrEl
書いた直後に自己解決しちまったorz

misc_deregisterがあるのね…
スレ汚しすまんかった

815:791
08/04/06 15:36:55 n9AD6VHb
ほ?

816:login:Penguin
08/04/10 21:40:14 zop984mC
mmapを利用して物理アドレス0x10000000に存在するデバイス(SRAM)のR/Wを
行うドライバを作成しようと思っています。
馬本の第3版のサンプルソース(simple)を参考にしながらremap_pfn_rangeで
マッピングし、ダンプをとってみたところ、0x10000000エリアのデータでは
なく、全て0のデータが読み取れました。
0x1000等の小さい物理アドレスであれば正常にリード出来ているようです。
0x10000000のように上の方のアドレスは、remap_pfn_rangeではマッピング
されないのでしょうか?

カーネルのバージョンは2.6.11です。


817:816
08/04/10 22:19:28 zop984mC
/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)
でも同じ結果でした・・・



818:816
08/04/10 22:20:55 zop984mC
訂正
>>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)


819:816
08/04/10 22:21:43 zop984mC
訂正
>>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)


820:login:Penguin
08/04/10 23:10:16 hws3UYgb
Linux 2.6.11 使ってないしためしてないけど、
/sys/devices/pci*/*/resource? を mmap(2) って出来ないんだっけ?

821:login:Penguin
08/04/11 00:58:30 pzz5pihD
とりあえず、落ち着けw
man mmap2

822:816
08/04/11 23:01:18 1s5/4DVK
>>821
>man mmap2
↓ですよね?
URLリンク(www.pinkdragon.net)
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も見れるのに・・・

823:login:Penguin
08/04/12 04:09:25 CJCvWk/v
MTD使えばいいんじゃない?
phram.koとか
slram.koとか

824:login:Penguin
08/05/26 23:35:38 ZMUO6bXW
タスクレットの中でsleep_on_timeoutって呼べないんですか?
なぜかカーネルパニックになってしまいます…

825:login:Penguin
08/05/28 19:14:20 eAKKlqpI
タスクレットからkill_fasync()呼びたいんですけど、
第一引数ってどこから持ってくればいいんでしょうか?

826:login:Penguin
08/06/13 19:47:44 ngpRzev4
フリーオのデバイスドライバー書ける人が居たら神!

827:login:Penguin
08/06/13 22:56:58 yAy4CW2H
玄箱用のは、あるだろ

828:login:Penguin
08/07/05 05:09:39 +CtKxXwh
あげあげ

829:login:Penguin
08/07/05 08:11:05 d6Puhgue

スレリンク(linux板)

830:login:Penguin
08/07/05 11:49:23 D1363wxr
やっぱり情報公開されてない物のドライバ造るのって無理がある?
Willcomスマートフォン端末でLinuxを動かすプロジェクト?があるのですが、
WS003SH、WSはPrismチップの無線LANを使用。
WS011SHではSharp独自のチップを使用した物のようです。
WS020SHは不明。

当方WS011SHの物の開発に興味があるのですが、難しいどころか情報の公開がされていない限りは
手すら付けられない状態でしょうか?
アドバイスよろしくお願いします。

831:login:Penguin
08/07/27 04:17:46 JGvJfhtT
copy_{to,from}_user()でユーザプロセスのアドレスを与えるところにカーネル空間のアドレスを与えるとどうなります?
やっぱりaccess_ok()で弾かれる?


832:login:Penguin
08/07/27 08:01:26 Nq54nVAZ
>>831
その程度、自分で確認しろ。

833:login:Penguin
08/08/21 06:11:30 5vh0FBcx
あげ

834:login:Penguin
08/09/17 22:50:23 v0hV3n2N
Linuxデバドラ移植の質問です。
雑誌の記事でx86Linuxデバドラを他CPUのLinuxに移植する際に、デバドラのソースが
x86に依存してて移植できないことを知りました。
どうやらx86プログラマが他のCPUへの移植性を考えずに開発したことが原因みたいです。

雑誌によるとデバドラの依存箇所は以下が多いようです。
・バイトオーダ
・アライメント
・I/Oアクセス
・タイミング

皆様に質問ですが、このようなx86に依存したLinuxデバドラが落ちている場所を
ご存じないでしょうか?
また、根本的なことですがx86Linuxデバドラを移植したり、移植しようとしたが
x86に依存してて大変だったという案件は多いのでしょうか?

どうぞよろしくお願いいたします。













835:login:Penguin
08/09/17 23:58:51 3YmhTjsY
>>834
drivers/

直すのはそんなにめんどくないが、どこに地雷があるかわかりにくいのがのう。


836:login:Penguin
08/09/18 00:34:30 YTkXriLK
>>834
というか、デバイスドライバは基本的にハードに依存して当然
という側面も否定できないと言わざるを得ないこともあるので。

837:834
08/09/18 00:34:38 csSd+QEz
カーネルソース内にあるんですね!
知りませんでした;

私は初心者でよく知らないんですが、てっきりカーネルソール内のコードって
移植性をちゃんと考えてあって(arch/以外)、管理されていると思ってました。

むしろ、カーネルソース外の開発(企業or個人)で公開されているドライバに
あるのかと思ってました。

838:login:Penguin
08/09/18 10:25:28 tEXQNL4k
>>834
ふつー開発者の持ってるCPUでしかテストしないよ。

tg3とかe1000とかはNEC(ia64)とかIBM(powerpc)とかが
頑張って自分とこのハードで動くようにしてるけど、
個人でハックしてるものはたいていx86だけ。

839:login:Penguin
08/09/19 05:32:38 PmgUOzFO
まあ、過去の経験からすると
・USBターゲット - ほとんど手を入れる必要無し
・PCI - そんなに苦労することはない
・CPU直結 - 健闘を祈る
てところですかねえ。


840:login:Penguin
08/11/09 10:59:58 QBZrgAJi
age

841:login:Penguin
08/11/13 05:29:37 dS9nrsy0
USBデバイスでも無線LANとかは

842:login:Penguin
08/12/07 17:23:17 Ht7uJKzk
age

843:login:Penguin
08/12/19 14:08:43 MwDJWbRs
HWからの割込み処理中の、ローカルAPICへのEOI発行タイミングについて質問があります。
レベル・トリガの割込みだった場合は、end関数からEOIを発行しています。
これは、割込み処理の先頭で発行してしまうと、I/O APICへEOIが通知され、デバイスのアサートが
失われてしまうのが不都合だからでしょうか?
カーネルのverは2.6.18 です。



844:login:Penguin
08/12/20 08:40:05 9ZJbjYSC
>>843
一般的な話だけど
割り込みに関わるのは3つ。
①割り込み発生の条件と、割り込み要求するデバイス
②割り込みを調停する割り込みコントローラと、割り込み受付のカーネル
③実際の割り込み処理プログラム

①→②→③の流れは分かるよね
それなら質問の答えも分かるよねw


わんこ蕎麦に例えると
>>843のお椀の蓋が開いてる
>>843のお椀に蕎麦を放り込むおばちゃん
③蕎麦を食べる>>843

満腹になった>>843③が最初にすべきは、①の処理か②の処理か

845:login:Penguin
08/12/21 18:36:36 6RSqLOEI
>>844
「ご馳走様でした」と言いながら金を払わないで蓋も開けっ放しで逃げる。



846:login:Penguin
08/12/21 19:17:37 otIiAnj0
ダブルフォルト乙

847:login:Penguin
08/12/22 03:52:28 guo09gfy
(1)はおばさんのスピードに勝てないと判断して、(2)のおばさんに話し掛けるよな
もうお腹いっぱいって

848:login:Penguin
09/01/24 00:42:09 UJ+xFTUa
a

849:login:Penguin
09/02/17 22:55:17 m2mCukTw
ポート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);


850:login:Penguin
09/02/17 22:55:48 m2mCukTw
すみません、sageてしまいました。

851:login:Penguin
09/02/18 00:04:19 lQ8CDN9P
根本的に間違っているような気がするので、
もう少し具体的にやりたいことを書いた方がいいと思う。

取り合えずドライバでioplはいらねえ。


852:login:Penguin
09/02/18 01:04:31 WJ6360yx
>>851
もしかして、ドライバ内では、ポートにアクセスするのに、iopl自体が使えないということでしょうか?
そうすると、request_regionしていくしかないということですかね。
それとも、アクセス許可自体が必要ないのでしょうか。


元々、独自PCI-I/Fボードにアクセスするアプリがありまして、
それの、ドライバ版を作ろうと思いました。
そのアプリでは、iopl(3)→outb(),inb()にて値を取得していたので、同じ様に作っていたところでした。
PCIからのポートアドレス取得が上手くでき、そのアドレスにアクセスする段階だったのですが、
ioplでどうしてもコンパイルが通らず、includeの問題なのか、Makefileなのか、
途方に暮れてました。>>849はそのテストプログラムを抜き出しです。


853:login:Penguin
09/02/18 01:38:21 lQ8CDN9P
なんでドライバにする必要があるのかよくわからんが。
そういうレベルでわからんのであれば、まずは馬本で基礎知識を
身につけた方がいいと思う。

ついでに、sys_ioplの呼び方はそうじゃない。
つうかカーネルの中でsys_~は直接呼ぶもんじゃない。


854:login:Penguin
09/02/18 12:48:39 WJ6360yx
>>853
ありがとうございます。
ドライバ版の意図は、いずれ割り込みを使うつもりだったからです。
馬本は十分理解できなかったので、とりあえず作ってみるという感じでやってました。
sys_ioplは呼んではいけないんですね。
馬本、もう一度読んでみます。

855:login:Penguin
09/02/18 16:25:38 zpaCJvuo
馬本はカーネルの知識がある程度ある前提で書かれてるので
まずはLinuxカーネルに関する文献を読んでみることをおすすめするよ

デバイスドライバはカーネルの一部でもあることを忘れるな

856:login:Penguin
09/05/29 14:40:20 D/EXOrYt
Kernel 内で IN/OUT アセンブラ命令に相当するのは
何かマクロがあるんじゃなかったっけ?

READ_PORT とかそんなの。


857:login:Penguin
09/05/29 23:00:18 A6oE+oT8
in[bwl]
out[bwl]
とか。
include/asm/io.hに入ってたはず。


858:login:Penguin
09/07/04 14:39:23 D5yvn6Kc
シリアルドライバ内の情報で、何バイト受信済みとか、何バイト未送信という情報って
取得することは可能ですか?

859:858
09/07/04 16:35:43 D5yvn6Kc
補足です。
上記の情報をアプリケーションから取得できますか?

860:login:Penguin
09/07/05 02:17:52 vnzKXmwE
>>859
ioctlでTIOCINQとかTIOCOUTQみれば出来そう。
つーかマニュアル嫁よ。せっかくあるんだからよ。

861:login:Penguin
09/07/05 14:39:25 jkHVDhT6
ヌルイぞ。そこは

 つーかソース嫁よ。せっかるあるんだからよ。

だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。

・・・ってえらいひとがいってました!

862:login:Penguin
09/07/05 23:11:19 vnzKXmwE
>>861
その偉い人は馬鹿だよ

863:login:Penguin
09/07/05 23:20:49 xNWd+cLB
どこでも、えらい人は馬鹿なもんさ。

864:login:Penguin
09/09/19 20:24:56 I29pddJ7
保守上げ

865:login:Penguin
09/10/12 16:24:20 cJbteqq9
>>861

× だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。

○ だろ。ソース以外の資料なんかないんだからOSSってのは質問禁止なんだよ。

866:login:Penguin
09/12/03 22:11:10 s69LcKJk
i386BSDカーネルの386BSDカーネルソースコードの秘密
ソース以上の資料なんかないんだから、に対して何か書いてあったな。

867:login:Penguin
09/12/03 23:11:02 LYVup2we
>>866
ソースそのものと、ソースにこめられた趣旨は別じゃないかな?

868:login:Penguin
09/12/10 00:21:58 XvjOUXRH
UTSL だな。


869:login:Penguin
10/02/18 10:40:00 hWc/MwlX
linuxmintとウィンドウズ7RCを使っています。WIN7は試用なので来月から起動後一時間で自動で電源が落ちるようです。
リナックスに乗り換えるのは簡単なのですが、今使ってるテレビチューナーのドライバがリナックスには無いのです。
だれかmvp-rx3のドライバを書いてください。
このままではリナックスでテレビが見られず、リナックスをあきらめてウィンドウズのところにお嫁にイかされてしまいます。
テレビを見るためにはリナックスをお慕いもうしあげていますのにウィンドウズを買わなければならない境遇に
どうかどうか同情をしていただけるスーパーハッカーの方はドライバ書いてくださいませんか。
生きていくためには愛をもあきらめゲイツに身をゆだねなければならないのかと震えております。
ちなみにあたし女子中学生です。生娘です。似ている芸能人は17歳のころの広末涼子です。

870:login:Penguin
10/02/18 19:21:20 tk+7V5La
>>869
GV-MVP/RX3
URLリンク(www.iodata.jp)

mvp-rx3はアナログTVキャプチャーボードですね。
2011年7月にアナログテレビ放送が終了するので
どのみち地上デジタルテレビチューナーが必要になります。
Windows7を買う金でPT2を買ってLinuxで使う方がよいと思います。
PT2なら地デジでもコピーワンスによる不便から逃れられます。

日経Linux 2010年2月号
URLリンク(itpro.nikkeibp.co.jp)
> 特集2
> PT2で地デジ録画システムを作る
> パソコンで地上デジタル放送や衛星放送を受信できる
> デジタル・チューナ「PT2」を使ってシステムを作ります。
> 最新のLinuxディストリビューションのFedora 12とUbuntu 9.10で
> PT2のドライバをインストールし,高画質のテレビ番組を見てみましょう。
> 番組表から録画予約する方法も紹介します。

【視聴】Linuxでデジタル放送【録画】
スレリンク(linux板)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch