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


742 名前:login:Penguin [2007/11/17(土) 11:43:31 ID:4avAGLIe]
do_fork

743 名前:login:Penguin [2007/11/29(木) 13:55:56 ID:yo1OGExb]
mmapで特定のデバイスのIOメモリを仮想空間に割り付けて,
その領域に対してユーザーからデータを書き込むことを考えています.

ユーザープログラムからその領域上に,あるデータ型の双方向リスト
を作りたいのですが,ユーザー空間の特定のアドレス範囲から空き
メモリ領域を動的に確保する方法ってないでしょうか

void *dev_malloc(start_address, end_adress, nbyte);
とすると仮想アドレスstart_address〜end_adressの範囲から
nbyteバイトの領域を確保するみたいなイメージです


744 名前:login:Penguin mailto:sage [2007/11/29(木) 20:09:08 ID:iCD9/EY6]
>>743
かーなーり スレ違い
デバイスドライバ関係ない
汎用heap管理ライブラリがほしいってことだろ

heap-management とか ヒープ管理 でぐぐってみそ

ちなみに
void *dev_malloc(start_address, end_adress, nbyte);
ってI/Fはありえないと思うぞ
毎回 start_addressとend_adressを与えるわけ??

745 名前:login:Penguin [2007/12/02(日) 23:50:11 ID:lbIQi7BJ]
あげ

746 名前:login:Penguin [2007/12/13(木) 19:50:31 ID:pBhS9AMD]
あげ

747 名前: [2007/12/18(火) 23:09:45 ID:K//ZswLt]
ドライバでCPUキャッシュのフラッシュやりたい!
どうやるの?だれかおせぇ〜てぇ〜

748 名前:login:Penguin mailto:sage [2007/12/18(火) 23:41:07 ID:uNdsweTC]
>>747
CPUキャッシュのフラッシュをする命令を実行すればいいんじゃない?
CPUはなに?

749 名前: [2007/12/18(火) 23:59:27 ID:K//ZswLt]
>>748
Xeonの5100です。
データシートとか見つからなくて。。。
ご存知でしたら教えていただけませんか?

<経緯>
Linuxマシンで、DMAでPCIeのデバイスからホストメモリにデータ転送
したときにキャッシュのせいか、2周目のリングバッファ領域が
うまく参照できていなく、フラッシュすればと思いました。。



750 名前:login:Penguin mailto:sage [2007/12/23(日) 13:45:51 ID:VU+KNtKv]
>>ORE
ttp://www.intel.com/products/processor/manuals/index.htm



751 名前:login:Penguin [2007/12/24(月) 18:03:58 ID:ugbio3bt]
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は使えるのでしょうか?

752 名前: 【大吉】 【801円】 [2008/01/01(火) 19:54:53 ID:EHGXP/cp]
新年あげ

753 名前: 【中吉】 【156円】 [2008/01/01(火) 20:58:21 ID:LfamTH+n]
>750
749じゃないけど,これいいな.サンクス.
みんなチップのデータとかはどこから調べてくるの?
ちょっと想像してみたけど,「とりあえずメーカサイトを調べる」
以外の方法がわからん.
windowsのドライバから情報調べたりする人もいるの?
いたらその解析方法とかおしえてください.

754 名前:login:Penguin mailto:sage [2008/01/01(火) 20:59:27 ID:VCekl7x7]
>>753
メーカに電話して聞く

755 名前:login:Penguin mailto:sage [2008/01/01(火) 23:23:30 ID:hQDOyXLN]
>>749
Intel の CPU だとその手のキャッシュのことは気にしなくていいんじゃなかったっけ?
いわゆるバススヌープ。ま、明示的にフラッシュしたきゃできるだろうけど。
(実は俺自身は x86 以外用のドライバしか書いたことがないので聞きかじりだが...)

あと、キャッシュが効いているなら1周目でも駄目な場合がありそうだがどうなん?
単にリングバッファのアリゴリズムでしくじってたりして。

って、よく見るとえらい昔の書き込みだった。もう解決したのかな。

756 名前:login:Penguin mailto:sage [2008/01/02(水) 12:58:56 ID:jVjgkvN4]
チップの購入先の営業から入手とか
チップベンダのwebサイトからダウンロードだろ
常考

757 名前:login:Penguin [2008/01/14(月) 11:44:33 ID:MLu8ArWP]
今馬本の第 3 版読んでんだけど scull のソースコードって
Web でダウンロードできるの?

758 名前:login:Penguin mailto:sage [2008/01/14(月) 11:59:56 ID:hAs2atpA]
あるよ

759 名前:login:Penguin mailto:sage [2008/01/14(月) 13:03:13 ID:MLu8ArWP]
>>758
早速ありがとう.
本を斜め読みしてるんだけど URL が見当たらないです.
検索しても見付からないし,もしよろしければ教えていただけますと
うれしいです

760 名前:login:Penguin mailto:sage [2008/01/14(月) 13:36:46 ID:Q2m15cvj]
>>759
>>80



761 名前:login:Penguin mailto:sage [2008/01/14(月) 14:10:16 ID:MLu8ArWP]
>>759
ありがとう! 3版のは FTP で以下からダウンロードできました.

ar.linux.it/pub/ldd3/ldd3-samples-1.0.0.tar.gz

かなり感謝です ありがとう

762 名前:login:Penguin mailto:sage [2008/01/14(月) 14:13:07 ID:MLu8ArWP]
自分にお礼ちまった

>>761の「>>759」は >>760 の間違いです
>>760さんありがとう

763 名前:login:Penguin mailto:sage [2008/01/17(木) 11:56:40 ID:1+AIbUNm]
>>761
あれ?お馬さんの第3版それなの?
日付が気になるので、第3版翻訳本に載ってたのをこぴぺ

ftp://example.oreilly.com/pub/examples/linuxdrive3
examples.tar.gz 70 KB 2005/05/12 0:00:00

ちょいとだけ新しいかも。同じくLinuxデバドラはじめる所なので
よろしく〜。Win系でWDM書いてました〜。

764 名前:!omikuji !dama [2008/01/25(金) 07:11:44 ID:dVpHcdky]
kaso

765 名前:login:Penguin mailto:sage [2008/01/25(金) 21:56:39 ID:OZPnpJ0W]
ドライバでのロックの掛け方とか
その変のデザインパターンみたいなもの
ないのですか?

馬本読んでも、DualSocket 4コアとか
その辺の場合どうすればいいとかまったく
書いてなくて困ってる。

CPU毎にあるモノを意識しなければならないのか
全リソースを意識した作りなのかの判断も
ケースバイケースとかだし。WDMの方がいいよね

766 名前:login:Penguin mailto:sage [2008/01/26(土) 23:10:19 ID:jNmSnKBM]
>>765
スピンロック様

767 名前:login:Penguin mailto:sage [2008/01/27(日) 14:19:40 ID:/9d4A9Tg]
WDMってよく知らないが、割り禁、スピン、寝る&起こす以外に
排他の方法があるの?

768 名前:login:Penguin mailto:sage [2008/01/27(日) 17:28:29 ID:Q2ylOq7r]
そもそも排他なんじゃねーの?
昔はLinuxも明示的にスケジュールよぶまで
カーネル空間は排他だったじゃん
SMPが出てきて全部直す羽目になったけど

769 名前:login:Penguin mailto:sage [2008/01/27(日) 19:45:28 ID:/9d4A9Tg]
割込みハンドラ

770 名前:login:Penguin [2008/02/03(日) 19:45:35 ID:coODkdMv]
過疎



771 名前:login:Penguin mailto:sage [2008/02/07(木) 03:30:55 ID:9BnmgFGp]
「新着1件ってことは、いつもの良スレ上げ厨かなぁ」と思ったらそう来たか。

772 名前:login:Penguin [2008/02/19(火) 16:29:32 ID:vNMS2dUr]
基本的に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を叩く方法が悪いのか…
アドバイス等お願い出来ますでしょうか。

773 名前:login:Penguin mailto:sage [2008/02/19(火) 19:10:24 ID:5BDGV8A6]
デバイスドライバでunistd.hなんかincludeしちゃダメだろ
fcntl.hも同様

774 名前:login:Penguin mailto:sage [2008/02/19(火) 21:35:29 ID:ec7S8nn5]
何言ってるのかわからないなw
PCIデバイスとして、I2Cバスへのブリッジが載っているのか?
それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか?

775 名前:772 mailto:sage [2008/02/19(火) 22:00:59 ID:vQR2/dLm]
>>773
やっぱりダメですか。

というか、無理やり環境変数使ってコンパイラのエラーを抜けてる(unistd.h以降3ヘッダ、加えてfcntl.h)のは全部includeしちゃダメですかね。

>>774
>PCIデバイスとして、I2Cバスへのブリッジが載っているのか?
>それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか?

PCIデバイスにI2Cバスへのブリッジが載っている、のはずです。


776 名前:login:Penguin mailto:sage [2008/02/19(火) 22:53:37 ID:5BDGV8A6]
つーかさ
カーネルモードで動いてるデバイスドライバの中から
open()とかclose()とかioctl()みたいなシステムコールを
発行できるわけないだろ?

>>772が作りたいと思ってるのは root権限で直接I/O叩くだけの
ユーザランドで動くアプリなんじゃないのか?

777 名前:login:Penguin mailto:sage [2008/02/19(火) 23:10:27 ID:ec7S8nn5]
>>775
じゃあ、そのPCI-I2Cブリッジのデバイスドライバを書いているんだとして、
>I2Cのオープンのために
なんで、こうなるのよw 
とりあえずDocumentation/i2c/summaryでも読んでくれ。

778 名前:login:Penguin mailto:sage [2008/02/20(水) 08:43:00 ID:zgvkT7V3]
>>776
呼んじゃダメなんですね。了解しました。
先週までアプリしかやったことがなく、ついそっち寄りな考えに、と、蛇足でした。失礼しました。

>>777
あー、確かに。
教えていただいたものを読んでみます。
ありがとうございました。

779 名前:login:Penguin mailto:sage [2008/02/20(水) 09:40:57 ID:zxxPBExl]
>>773
そういえば、しちゃダメだ ってどこにも書いてないな
わからない奴はわからないんじゃないか?

780 名前:login:Penguin mailto:sage [2008/02/21(木) 00:46:11 ID:VUV3LHo/]
ちょっと相談なんだが、いいかな

writeの中で長時間割り込み待ちをするような処理と、その場で終わる処理を持ったデバドラがあって、
(処理の切り替えはioctl)
まずアプリAが長時間かかる処理のためにwriteわ呼び出す。

当然割り込み待ちになるが、そのままアプリBがioctlやwriteを呼び出すとどうなる?
普通に処理出来る?



781 名前:login:Penguin mailto:sage [2008/02/21(木) 00:55:15 ID:A2lpGb2W]
一つのデバイスを二つのアプリで同時に使うっつー事ですか?

782 名前:login:Penguin mailto:sage [2008/02/21(木) 01:18:43 ID:VUV3LHo/]
>>781
その通りで。
ただ、1つのアプリがマルチスレッドになってるという場合もありでお願いしたい

783 名前:login:Penguin mailto:sage [2008/02/21(木) 01:55:12 ID:6LvlPNy5]
できるかどうかは作り方次第だろうな

資源の排他処理が必要なら、ロック使わなきゃならん
その場合は、すぐ終わるはずの処理ももちろん待たされる

待たせたくなけりゃ、長時間かかるというwriteにバッファを設けて
write処理と割り込み処理とを分離するみたいな工夫したらどうだ

的外れならスマソ

784 名前:login:Penguin mailto:sage [2008/02/21(木) 02:11:45 ID:VUV3LHo/]
>>783
資源は共有しないからロックはいらなさそうだ
writeにバッファを設けて処理を分離ってのがイマイチわからんのだけど、説明頼んでもいいかい?
デバドラの中でもスレッドとかで並列にするの?

785 名前:login:Penguin mailto:sage [2008/02/21(木) 06:04:45 ID:Xs+RkuJQ]
シリアルポートを想像してみたらどうだろう
Write、Read、割り込みがそれぞれ並列に動くはずだ

Writeで割り込み使ってるかどうかは知らないけど

786 名前:login:Penguin mailto:sage [2008/02/21(木) 07:26:26 ID:Kf6eqU14]
ブロック と ノンブロック という用語を使ってほしいところだな

んで複数プロセスから同時に使えるかどうかはデバイスドライバの作り方次第
手抜きにつくると open()されるときに競合問題を判断して
同時にひとつとかopenできないようにするよな

複数同時にopenして、ひとつがブロックしてる時に
また別のがノンブロックの処理要求してきたなんて場合は
そういう風にうまく動くようにドライバの中で考慮する必要がある

787 名前:login:Penguin mailto:sage [2008/02/21(木) 07:32:20 ID:Kf6eqU14]
追記

呼び出し側がマルチスレッド使ってるかどうかはあまり関係ない
ふたつのプロセスがメモリを共有してようがしてまいが
ドライバにとっては関係ない話だ

それよりCPUが複数ある(いわゆるSMP)かどうかの方が重要
smp対応させるなら必要なところできっちりspinlockしないとダメ

788 名前:login:Penguin mailto:sage [2008/02/21(木) 08:59:36 ID:VUV3LHo/]
>>787-788
ブロック=長時間処理
ノンブロック=即時処理
でおk?

複数からopenされるのはアリにしないといけないっぽいんで、考えてみる。

ブロック中にアプリBからもwrite自体は呼び出せる?
その時点で破綻してるなら、今のwriteをそのままスレッド化して、write自体はスレッド起動だけにするなりで対応とか…ダメかな

あとCPUは1つ前提でおkっす。
余裕があったら後学のためにもsmp対応も抑えておきたいがw

789 名前:login:Penguin mailto:sage [2008/02/21(木) 09:10:48 ID:Kf6eqU14]
> ブロック中にアプリBからもwrite自体は呼び出せる?
もちろん呼べる

ブロック処理とは、簡単にいうと処理開始をデバイス(ハードウェア)に
通知したあとスリープ状態に入り、処理完了割込が入ったら
割込ハンドラがスリープ(ブロッキング)しているプロセスを
たたき起こすって流れ。

アプリAがスリープ(ブロッキング)している間に
アプリBからreadなりwriteなりが発行されるのは当然ありうる話。
ちゃんとドライバを書いておけば問題なく動く。

linuxカーネルのソースコードそのものがいいサンプルコードだから
いろいろ読んでみるとよい。

それから、procfs(/procの下に仮想ファイルをつくる)に
状態監視・デバッグ操作用のI/Fを用意しておくと後々楽になるよ。

790 名前:login:Penguin mailto:sage [2008/02/21(木) 09:27:27 ID:VUV3LHo/]
>>789
凄く参考になった!
ありがとう

>答えてくれた人達
いろいろありがとう



791 名前:login:Penguin [2008/03/03(月) 00:13:39 ID:JgGlbVL6]
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

792 名前:login:Penguin mailto:sage [2008/03/03(月) 01:17:37 ID:dOT+ttrq]
>>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/

793 名前:login:Penguin mailto:sage [2008/03/03(月) 04:02:04 ID:JCTvrwL7]
>>791
sys_call_table[NR_uname] = hook_uname;
の様な気がするわけですが。

>>792
それはユーザー空間で乗っ取る方法ですがな。


794 名前:791 [2008/03/03(月) 07:25:41 ID:zrYDUX8A]
>>792-793
試してみます。
情報ありがとうございます。

795 名前:login:Penguin mailto:sage [2008/03/04(火) 09:36:17 ID:NdRlprld]
>>791
乗り遅れたか!?

Linux 2.6からシステムコールのフックはできません。
パッチ当てなきゃできないようなことが
ttp://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
8章にそのようなことが書いてあったはず。

記憶が確かなら、792の示したサイトの
unsigned long **sys_call_table = find_sys_call_table();を
加えればできたと思う。

796 名前:795 mailto:sage [2008/03/04(火) 09:39:35 ID:NdRlprld]
>>791
パッチを当てるのが嫌ならLSMを使ったらいい。
決まった関数で始めるとか、とかsecurity_operations構造体に登録するあたりとか
デバドラに似ているからsecurity以下を読めば使えると思う。

797 名前:791 [2008/03/04(火) 19:10:21 ID:iX0t2env]
>>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

798 名前:login:Penguin mailto:sage [2008/03/04(火) 20:25:09 ID:neWtFAJV]
>>791
調べもせずに書いてるけどLinux版のウィルス対策ソフトのお試し版に
運がよければカーネルモジュールのソースが含まれていて、なおかつ、
それがシステムコールのフックしていたりしないか?

799 名前:791 [2008/03/05(水) 00:39:02 ID:QPFLTsD+]
>>798
そのようなことはございません

800 名前:login:Penguin [2008/03/17(月) 18:46:02 ID:c0UdNwV3]
あげ



801 名前:login:Penguin mailto:sage [2008/03/18(火) 18:12:00 ID:z8581E+A]
init中にalloc_chrdev_regionでデバイス番号を動的確保した後で、
そのまま(関数内で)スペシャルファイルを作成する事は可能?

mknodコマンドでなく、あくまでインスコだけで済ませるように出来ないかと…

802 名前:login:Penguin mailto:sage [2008/03/18(火) 18:22:19 ID:qC/Waqz9]
udevじゃダメなの?

803 名前:login:Penguin mailto:sage [2008/03/18(火) 20:50:35 ID:Hq9+Lc7G]
>>801
オレならprocなりsysなりのみで済ます

804 名前:801 mailto:sage [2008/03/18(火) 21:37:57 ID:z8581E+A]
>>802>>803
それだとinsmod以外にも必要になるんじゃないんですか?
関数で無いですかね
(init_moduleから呼び出す)

insmod hoge
だけ実行すればアプリから叩けるような形にしたいんですが…

805 名前:login:Penguin mailto:sage [2008/03/18(火) 21:49:17 ID:irgQA2zj]
shell スクリプト作ってその中で insmod、mknod すれば?
rmmod も出来るようにすれば、なお良いでしょ?

806 名前:login:Penguin mailto:sage [2008/03/18(火) 23:47:40 ID:z8581E+A]
>>805
それが良さげですね。
ありがとうございました。

807 名前:login:Penguin mailto:sage [2008/03/18(火) 23:49:33 ID:owXiyD5i]
>>801
mknodしたくないってだけなら、device_create(9)か、手を抜きたいなら
misc_register(9)に全部にまかせれば、>>802が言ってるように、udevが勝手に
スペシャルファイルを作ってくれるんじゃないか?

808 名前:login:Penguin mailto:sage [2008/03/19(水) 10:35:22 ID:J+fEVrF8]
ブロックデバイスのブロックサイズってどこで決まってるの?
ユーザアプリから見る方法ある?

809 名前:login:Penguin mailto:sage [2008/03/19(水) 14:37:31 ID:ZMxkS/nc]
>>808
mkfsする時に決まると思うが。
ext2/ext3 なら tune2fs -l で見るか、ファイルがあれば stat構造体の st_blksize を見る。

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



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

812 名前:login:Penguin mailto:sage [2008/03/20(木) 02:10:32 ID:wMmGSYfl]
>>809
フォーマットする前に最適値を知っときたい乙女心です

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

813 名前:login:Penguin mailto:sage [2008/03/28(金) 15:40:00 ID:BcQjSrEl]
>>807見て、misc_register調べてちょっと使ってみたんだけど、
これで作ったもんどうやって消すんだ?

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

814 名前:login:Penguin mailto:sage [2008/03/28(金) 15:47:49 ID:BcQjSrEl]
書いた直後に自己解決しちまったorz

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

815 名前:791 [2008/04/06(日) 15:36:55 ID:n9AD6VHb]
ほ?

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

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


817 名前:816 [2008/04/10(木) 22:19:28 ID: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 [2008/04/10(木) 22:20:55 ID: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 [2008/04/10(木) 22:21:43 ID: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 mailto:sage [2008/04/10(木) 23:10:16 ID:hws3UYgb]
Linux 2.6.11 使ってないしためしてないけど、
/sys/devices/pci*/*/resource? を mmap(2) って出来ないんだっけ?



821 名前:login:Penguin mailto:sage [2008/04/11(金) 00:58:30 ID:pzz5pihD]
とりあえず、落ち着けw
man mmap2

822 名前:816 [2008/04/11(金) 23:01:18 ID:1s5/4DVK]
>>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も見れるのに・・・

823 名前:login:Penguin mailto:sage [2008/04/12(土) 04:09:25 ID:CJCvWk/v]
MTD使えばいいんじゃない?
phram.koとか
slram.koとか

824 名前:login:Penguin mailto:sage [2008/05/26(月) 23:35:38 ID:ZMUO6bXW]
タスクレットの中でsleep_on_timeoutって呼べないんですか?
なぜかカーネルパニックになってしまいます…

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

826 名前:login:Penguin [2008/06/13(金) 19:47:44 ID:ngpRzev4]
フリーオのデバイスドライバー書ける人が居たら神!

827 名前:login:Penguin mailto:sage [2008/06/13(金) 22:56:58 ID:yAy4CW2H]
玄箱用のは、あるだろ

828 名前:login:Penguin [2008/07/05(土) 05:09:39 ID:+CtKxXwh]
あげあげ

829 名前:login:Penguin mailto:sage [2008/07/05(土) 08:11:05 ID:d6Puhgue]

ttp://pc11.2ch.net/test/read.cgi/linux/1213378360/

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

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



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


832 名前:login:Penguin [2008/07/27(日) 08:01:26 ID:Nq54nVAZ]
>>831
その程度、自分で確認しろ。

833 名前:login:Penguin [2008/08/21(木) 06:11:30 ID:5vh0FBcx]
あげ

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

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

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

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













835 名前:login:Penguin mailto:sage [2008/09/17(水) 23:58:51 ID:3YmhTjsY]
>>834
drivers/

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


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

837 名前:834 mailto:sage [2008/09/18(木) 00:34:38 ID:csSd+QEz]
カーネルソース内にあるんですね!
知りませんでした;

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

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

838 名前:login:Penguin mailto:sage [2008/09/18(木) 10:25:28 ID:tEXQNL4k]
>>834
ふつー開発者の持ってるCPUでしかテストしないよ。

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

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


840 名前:login:Penguin [2008/11/09(日) 10:59:58 ID:QBZrgAJi]
age



841 名前:login:Penguin mailto:sage [2008/11/13(木) 05:29:37 ID:dS9nrsy0]
USBデバイスでも無線LANとかは

842 名前:login:Penguin [2008/12/07(日) 17:23:17 ID:Ht7uJKzk]
age

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



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

@→A→Bの流れは分かるよね
それなら質問の答えも分かるよねw


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

満腹になった>>843Bが最初にすべきは、@の処理かAの処理か

845 名前:login:Penguin mailto:sage [2008/12/21(日) 18:36:36 ID:6RSqLOEI]
>>844
「ご馳走様でした」と言いながら金を払わないで蓋も開けっ放しで逃げる。



846 名前:login:Penguin mailto:sage [2008/12/21(日) 19:17:37 ID:otIiAnj0]
ダブルフォルト乙

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

848 名前:login:Penguin [2009/01/24(土) 00:42:09 ID:UJ+xFTUa]
a

849 名前:login:Penguin mailto:sage [2009/02/17(火) 22:55:17 ID: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 [2009/02/17(火) 22:55:48 ID:m2mCukTw]
すみません、sageてしまいました。



851 名前:login:Penguin mailto:sage [2009/02/18(水) 00:04:19 ID:lQ8CDN9P]
根本的に間違っているような気がするので、
もう少し具体的にやりたいことを書いた方がいいと思う。

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


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


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


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

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


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

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

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

856 名前:login:Penguin mailto:sage [2009/05/29(金) 14:40:20 ID:D/EXOrYt]
Kernel 内で IN/OUT アセンブラ命令に相当するのは
何かマクロがあるんじゃなかったっけ?

READ_PORT とかそんなの。


857 名前:login:Penguin mailto:sage [2009/05/29(金) 23:00:18 ID:A6oE+oT8]
in[bwl]
out[bwl]
とか。
include/asm/io.hに入ってたはず。


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

859 名前:858 mailto:sage [2009/07/04(土) 16:35:43 ID:D5yvn6Kc]
補足です。
上記の情報をアプリケーションから取得できますか?

860 名前:login:Penguin mailto:sage [2009/07/05(日) 02:17:52 ID:vnzKXmwE]
>>859
ioctlでTIOCINQとかTIOCOUTQみれば出来そう。
つーかマニュアル嫁よ。せっかくあるんだからよ。



861 名前:login:Penguin mailto:sage [2009/07/05(日) 14:39:25 ID:jkHVDhT6]
ヌルイぞ。そこは

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

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

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

862 名前:login:Penguin mailto:sage [2009/07/05(日) 23:11:19 ID:vnzKXmwE]
>>861
その偉い人は馬鹿だよ

863 名前:login:Penguin mailto:sage [2009/07/05(日) 23:20:49 ID:xNWd+cLB]
どこでも、えらい人は馬鹿なもんさ。

864 名前:login:Penguin [2009/09/19(土) 20:24:56 ID:I29pddJ7]
保守上げ

865 名前:login:Penguin mailto:sage [2009/10/12(月) 16:24:20 ID:cJbteqq9]
>>861

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

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

866 名前:login:Penguin mailto:sage [2009/12/03(木) 22:11:10 ID:s69LcKJk]
i386BSDカーネルの386BSDカーネルソースコードの秘密
ソース以上の資料なんかないんだから、に対して何か書いてあったな。

867 名前:login:Penguin mailto:sage [2009/12/03(木) 23:11:02 ID:LYVup2we]
>>866
ソースそのものと、ソースにこめられた趣旨は別じゃないかな?

868 名前:login:Penguin mailto:sage [2009/12/10(木) 00:21:58 ID:XvjOUXRH]
UTSL だな。


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

870 名前:login:Penguin mailto:sage [2010/02/18(木) 19:21:20 ID:tk+7V5La]
>>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/








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

前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