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


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

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



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


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

満腹になった>>843Bが最初にすべきは、@の処理か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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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