ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
ディバイスドライバをハックしよう!
■ このスレッドは過去ログ倉庫に格納されています
1login:Penguin
02/01/31 01:14ID:t3s191ys2login:Penguin
02/01/31 01:15ID:t3s191ys とりあえず、オライリーのお馬さん本2杯目へのリンク。
http://www.xml.com/ldd/chapter/book/bookindexpdf.html
http://www.xml.com/ldd/chapter/book/bookindexpdf.html
3login:Penguin
02/01/31 01:30ID:o+EauUH6 イーサネットドライバの仕組みが知りたいですわ。
02/01/31 01:32ID:WoiBhbQB
51
02/01/31 01:44ID:R8TIzJku あー、スマソ。ぼけてたです。
ついでに最新カーネル表示スレ
http://pc.2ch.net/test/read.cgi/linux/999618082/l50
USB総合スレ
http://pc.2ch.net/test/read.cgi/linux/1002630729/l50
最適NICスレ
http://pc.2ch.net/test/read.cgi/linux/986761860/l50
ついでに最新カーネル表示スレ
http://pc.2ch.net/test/read.cgi/linux/999618082/l50
USB総合スレ
http://pc.2ch.net/test/read.cgi/linux/1002630729/l50
最適NICスレ
http://pc.2ch.net/test/read.cgi/linux/986761860/l50
02/01/31 01:47ID:WoiBhbQB
是非とも、このスレを優スレにしたいなぁ・・・
公開されているいい関係資料を漁ってみよう。
公開されているいい関係資料を漁ってみよう。
71
02/01/31 01:47ID:R8TIzJku JFドライバ関係
http://www.linux.or.jp/JF/JFdocs/INDEX-hardware.html
おなじくカーネル関係
http://www.linux.or.jp/JF/JFdocs/INDEX-kernel.html
ちょっとネタスレだけどLinuxプログラミングスレ
http://www.linux.or.jp/JF/JFdocs/INDEX-kernel.html
http://www.linux.or.jp/JF/JFdocs/INDEX-hardware.html
おなじくカーネル関係
http://www.linux.or.jp/JF/JFdocs/INDEX-kernel.html
ちょっとネタスレだけどLinuxプログラミングスレ
http://www.linux.or.jp/JF/JFdocs/INDEX-kernel.html
8login:Penguin
02/01/31 02:02ID:igUBIfwm YAMAHA AC-XGをハクってください。
9login:Penguin
02/01/31 02:32ID:+4ZZMVcM02/01/31 10:02ID:+yS2cLhP
_IO マクロってみんな使ってる?
11login:Penguin
02/01/31 15:08ID:o+EauUH6 イーサネットドライバって、使われているチップに対してバスのメモリを解して
read/writeすればいいのかな?
read/writeすればいいのかな?
12login:Penguin
02/01/31 18:55ID:igUBIfwm13login:Penguin
02/01/31 23:21ID:o+EauUH6 やっぱ人気ねぇかなぁ。このスレ。
それともレヴェルが低いかなぁ。(アオリ
それともレヴェルが低いかなぁ。(アオリ
02/01/31 23:21ID:ZFCCqGEW
正直、こういう技術的なネタはここでは盛り上がらない。
02/02/01 00:30ID:Hb4Obm1B
じふぃーず ってどこまで短くしたことある?
みんなの体験談キボーン
とりあえずCPUクロックと併記よろしこ
みんなの体験談キボーン
とりあえずCPUクロックと併記よろしこ
02/02/01 00:45ID:0DxQaaOu
んじゃ、適当なソースでも引っ張って解説つけていくとか・・・
おもしろくないねぇ・・2chデストリ用に何かつくるとか・・・
おもしろくないねぇ・・2chデストリ用に何かつくるとか・・・
17login:Penguin
02/02/01 04:33ID:Dg5fN5Aj どうやってドライバを書くのかという英文をひらったぞ(゚Д゚)ゴルァ
一番単純なモジュール抜粋じゃー
#define MODULE
#include <linux/module.h>
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \n");
return 0;
}
void cleanup_module(void) /* Removes module from kernel */
{
printk("GoodBye Kernel\n");
}
モジュールコンパイルしろや
# gcc -c hello.c
モジュールロードだ
# insmod hello.o
出力は
Hello kernel
モジュールアンロード
# rmmod hello.o
一番単純なモジュール抜粋じゃー
#define MODULE
#include <linux/module.h>
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \n");
return 0;
}
void cleanup_module(void) /* Removes module from kernel */
{
printk("GoodBye Kernel\n");
}
モジュールコンパイルしろや
# gcc -c hello.c
モジュールロードだ
# insmod hello.o
出力は
Hello kernel
モジュールアンロード
# rmmod hello.o
02/02/01 04:56ID:Dg5fN5Aj
モジュールに引数わたしたけりゃ
static int baka;
MODULE_PARM(baka,'i');
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \nMODULE_PARM=%d\n",baka);
return 0;
}
insmod hello.o 1
とかしろ、
この{マ,チ}ンカスどもめ
static int baka;
MODULE_PARM(baka,'i');
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \nMODULE_PARM=%d\n",baka);
return 0;
}
insmod hello.o 1
とかしろ、
この{マ,チ}ンカスどもめ
02/02/01 05:17ID:Dg5fN5Aj
デバイスドライバには2種類ある
ブロックドライバとキャラクタドライバ
ブロックデバイスは塊単位としてしかアクセスできんデバイス
普通は1kごととかで
お前らの使ってるディスク装置とかがこれだ
キャラクタデバイスはファイルみたいにアクセスできてそういう世話
をするのが実装されとる。オープン・クローズ・リード・ライトシステム
コールが実装されていてコンソールとかパラレルポートとかが
これらしい。
ほんとかよ。お前ら間違ってたら教えろよ。
ブロックドライバとキャラクタドライバ
ブロックデバイスは塊単位としてしかアクセスできんデバイス
普通は1kごととかで
お前らの使ってるディスク装置とかがこれだ
キャラクタデバイスはファイルみたいにアクセスできてそういう世話
をするのが実装されとる。オープン・クローズ・リード・ライトシステム
コールが実装されていてコンソールとかパラレルポートとかが
これらしい。
ほんとかよ。お前ら間違ってたら教えろよ。
02/02/01 05:38ID:Dg5fN5Aj
順番むちゃくちゃに訳してたら、何で最初にシンプルなモジュール
の書き方が書いてあるのか説明してなかった。
linuxではデバイスドライバはinsmodをつかって
動的にカーネルに読みこんだりできるモジュールなんだそうな
>>17のinit_moduleは何をするんかつーとリロケートされたモジュールイメージ
がカーネルスペースにロードしてモジュールの初期化ファンクション
を走らすらしい
ところで、なあ、リロケート再配置ってなんじゃこりゃ
init_module loads the relocated module image into kernel space and runs
the module's init function.
英語だけでなく日本語も不自由なんじゃ(゚Д゚)ゴルァ
の書き方が書いてあるのか説明してなかった。
linuxではデバイスドライバはinsmodをつかって
動的にカーネルに読みこんだりできるモジュールなんだそうな
>>17のinit_moduleは何をするんかつーとリロケートされたモジュールイメージ
がカーネルスペースにロードしてモジュールの初期化ファンクション
を走らすらしい
ところで、なあ、リロケート再配置ってなんじゃこりゃ
init_module loads the relocated module image into kernel space and runs
the module's init function.
英語だけでなく日本語も不自由なんじゃ(゚Д゚)ゴルァ
02/02/01 06:29ID:Dg5fN5Aj
20 のモジュールイメージっつうのは具体的に何かっつーと
モジュール構造体で始まって、適切にコードとデータが連なった
もんらしい。
モジュール構造体は
struct module
{
unsigned long size_of_struct;
struct module *next;
const char *name;
unsigned long size;
long usecount;
unsigned long flags;
unsigned int nsyms;
unsigned int ndeps;
struct module_symbol *syms;
struct module_ref *deps;
struct module_ref *refs;
int (*init)(void);
void (*cleanup)(void);
const struct exception_table_entry *ex_table_start;
const struct exception_table_entry *ex_table_end;
#ifdef __alpha__
unsigned long gp;
#endif
};
nextとrefsを除く全部のポインタはモジュールのボディを指すように
期待されていてカーネルスペースのために適切に初期化される
例えば残りのモジュールなんかを再配置したりとかなあ。
日本語だけでなくコンピュータも不自由なんじゃ(゚Д゚)ゴルァ
意味わかんねえし
init_moduleと
cleanup_moduleの戻値は0が成功-1は失敗
-1のときはerrnoがセットされる。
...ズラズラとエラーコードの説明
一般的なドライバのコンパイルオプションは
-D__KERNEL__ _DMODULE -O -Wall -I$(INCLUDEDIR)
らしい
読み終わりました。
この文書だけでドライバが書ける奴は
居ないと思いました。終始モジュールの説明でした。
真面目にKHGを読もうかと思います。
http://www.linuxdoc.org/LDP/khg/HyperNews/get/khg.html
モジュール構造体で始まって、適切にコードとデータが連なった
もんらしい。
モジュール構造体は
struct module
{
unsigned long size_of_struct;
struct module *next;
const char *name;
unsigned long size;
long usecount;
unsigned long flags;
unsigned int nsyms;
unsigned int ndeps;
struct module_symbol *syms;
struct module_ref *deps;
struct module_ref *refs;
int (*init)(void);
void (*cleanup)(void);
const struct exception_table_entry *ex_table_start;
const struct exception_table_entry *ex_table_end;
#ifdef __alpha__
unsigned long gp;
#endif
};
nextとrefsを除く全部のポインタはモジュールのボディを指すように
期待されていてカーネルスペースのために適切に初期化される
例えば残りのモジュールなんかを再配置したりとかなあ。
日本語だけでなくコンピュータも不自由なんじゃ(゚Д゚)ゴルァ
意味わかんねえし
init_moduleと
cleanup_moduleの戻値は0が成功-1は失敗
-1のときはerrnoがセットされる。
...ズラズラとエラーコードの説明
一般的なドライバのコンパイルオプションは
-D__KERNEL__ _DMODULE -O -Wall -I$(INCLUDEDIR)
らしい
読み終わりました。
この文書だけでドライバが書ける奴は
居ないと思いました。終始モジュールの説明でした。
真面目にKHGを読もうかと思います。
http://www.linuxdoc.org/LDP/khg/HyperNews/get/khg.html
23login:Penguin
02/02/01 08:36ID:hfC7cfcj >>20
リロケートってのは、一般的にいって、コンパイル/アセンブル
したときとりあえず付けておいたてきとーなアドレスを、
実行時の環境にあわせて番号付け直すこと。
たとえば、オレサマ言語で
function hoge
print "逝ってヨシ"
end
function fuge
print "オマエモナー"
end
function 2ch
call hoge
call fuge
ってプログラムがあるとする。コンパイルすると、たとえば
0x000 jump 0x300
jump 0x400
return
0x100 "逝ってヨシ"
0x200 "オマエモナー"
0x300 print 0x100
return
0x400 print 0x200
retun
みたいな感じになる。0x000から始まるのは、とりあえず
そうしているだけであって、これをリンク(か、動的ロードか)
しようとすると他の部分と競合してしまって、まずい。
で、ロードすると、linkerがいまのメモリ状態に合わせて、
たとえば空きメモリが0x400000から始まってたとすると
0x400000 jump 0x400300
jump 0x400400
return
0x400100 "逝ってヨシ"
0x400200 "オマエモナー"
0x400300 print 0x400100
return
0x400400 print 0x400200
retun
って内容に書き換えてから、メモリ上に置く。
で、0x400000にジャンプすることで、始めて
関数2chが使えるようになる、ってこった。
基本的には、動的にロードする場合でも、静的に
リンクする場合でも、どこかしらで似たようなことを
やってくれてる。
(で、そういうリロケートとかの方式の一つがELFバイナリで
あったり、a.out形式バイナリであったりするわけだ。)
ここいらの話は、Loader Linker とかいう本にかいてあるよ。
(ちょっと書名自信なし)
リロケートってのは、一般的にいって、コンパイル/アセンブル
したときとりあえず付けておいたてきとーなアドレスを、
実行時の環境にあわせて番号付け直すこと。
たとえば、オレサマ言語で
function hoge
print "逝ってヨシ"
end
function fuge
print "オマエモナー"
end
function 2ch
call hoge
call fuge
ってプログラムがあるとする。コンパイルすると、たとえば
0x000 jump 0x300
jump 0x400
return
0x100 "逝ってヨシ"
0x200 "オマエモナー"
0x300 print 0x100
return
0x400 print 0x200
retun
みたいな感じになる。0x000から始まるのは、とりあえず
そうしているだけであって、これをリンク(か、動的ロードか)
しようとすると他の部分と競合してしまって、まずい。
で、ロードすると、linkerがいまのメモリ状態に合わせて、
たとえば空きメモリが0x400000から始まってたとすると
0x400000 jump 0x400300
jump 0x400400
return
0x400100 "逝ってヨシ"
0x400200 "オマエモナー"
0x400300 print 0x400100
return
0x400400 print 0x400200
retun
って内容に書き換えてから、メモリ上に置く。
で、0x400000にジャンプすることで、始めて
関数2chが使えるようになる、ってこった。
基本的には、動的にロードする場合でも、静的に
リンクする場合でも、どこかしらで似たようなことを
やってくれてる。
(で、そういうリロケートとかの方式の一つがELFバイナリで
あったり、a.out形式バイナリであったりするわけだ。)
ここいらの話は、Loader Linker とかいう本にかいてあるよ。
(ちょっと書名自信なし)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【日中】中国の王毅外相が関係正常化の「条件」を提示 岩屋前外相との会談で [煮卵★]
- タイムズカー、個人情報最大660万件流出 氏名、住所、生年月日、電話番号、メアド、運転免許情報、学生証などの画像 ★2 [おっさん友の会★]
- 【バレーボール】男子・日本代表 髙橋藍の兄、高橋塁…同性愛者であると公表「初めて自分自身を認めることができました」 [阿弥陀ヶ峰★]
- 物価高に7割超”年収追い付かず” 必要な年収増加額は平均約38万円 住友生命 [首都圏の虎★]
- 【日中】中国の王毅外相が関係正常化の「条件」を提示 岩屋前外相との会談で ★2 [煮卵★]
- 【🇯🇵】日の丸を傷つけたら処罰「国旗損壊罪」に日弁連が即時廃止求める「表現の自由そのものが失われかねない」 ★2 [少考さん★]
- 【実況】博衣こよりのえちえちホロドリ水着ガチャ🧪★2
- 【悲報】亜月ねね先生宅、大量の監視カメラが設置されて終わる [398059782]
- 小泉防衛大臣「核兵器保有の議論したい」 [834922174]
- 赤ちゃんヘルメット、急増… 0歳児からルッキズムに晒される絶望日本人… [667744927]
- 男だけど膣と子宮欲しい
- 米中が関税引き下げ「最恵国レベル」に あれ日本は? [366267353]