ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
ディバイスドライバをハックしよう!
■ このスレッドは過去ログ倉庫に格納されています
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 とかいう本にかいてあるよ。
(ちょっと書名自信なし)
02/02/01 08:51ID:Oxc8LS21
つーか、その辺はお馬さんの本を見れば全部丁寧に解説してるし。
02/02/01 09:12ID:Dg5fN5Aj
まさか2ちゃんねるでこんなにわかりやすい答えがもらえるとは
思ってなかった。わかったような気がします
考えてみればメモリ上に読みこまれる実行バイナリ
が常に同じ場所に置かれるわけじゃないから、そういう仕組みが無いと
毎回呼び出すたびに大変なことになりそうな
コンピュータの本ってなんかむやみに高く無いですか?
自分のレベルに合ってない本を買ってしまったときのむなしさ
と言ったらエロ本どころの騒ぎじゃないような
思ってなかった。わかったような気がします
考えてみればメモリ上に読みこまれる実行バイナリ
が常に同じ場所に置かれるわけじゃないから、そういう仕組みが無いと
毎回呼び出すたびに大変なことになりそうな
コンピュータの本ってなんかむやみに高く無いですか?
自分のレベルに合ってない本を買ってしまったときのむなしさ
と言ったらエロ本どころの騒ぎじゃないような
26login:Penguin
02/02/01 09:22ID:CW11eql0 稀に見る良スレ age
02/02/01 09:24ID:Y0QPm9tf
>>25
レベルが違う分には、ざっと目を通しておくとあとで理解できたり、
「あ、あのときあの本に書いてあったな」って読み返したりできる。
方向性が違う時には、虚しいこともある。
レベル低すぎな本は、そもそも買うときに弾くことができる。
レベルが違う分には、ざっと目を通しておくとあとで理解できたり、
「あ、あのときあの本に書いてあったな」って読み返したりできる。
方向性が違う時には、虚しいこともある。
レベル低すぎな本は、そもそも買うときに弾くことができる。
02/02/01 09:28ID:K+86rTMk
2923
02/02/01 09:34ID:zfB82tu1 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 先輩、LinkerLoader読まなくても
| お馬さんにかいてあるそうですよ。
| 先輩って確か第1版もってましたよね?
\
 ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・) ∧ ∧ < いや、読んだ覚えはねぇぞゴルァ
( ) (゚Д゚ ) \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\|Amity VP|\
 ̄ ======= \
トウジハ リカイデキナクテ ミナカッタコトニシタラシィ
| 先輩、LinkerLoader読まなくても
| お馬さんにかいてあるそうですよ。
| 先輩って確か第1版もってましたよね?
\
 ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・) ∧ ∧ < いや、読んだ覚えはねぇぞゴルァ
( ) (゚Д゚ ) \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\|Amity VP|\
 ̄ ======= \
トウジハ リカイデキナクテ ミナカッタコトニシタラシィ
02/02/01 09:37ID:Dg5fN5Aj
3123
02/02/01 09:38ID:zfB82tu1 >>28
ん?基本を説明するのに解りやすかったり解りにくかったりする
ことになんの不思議が?
おまえは分数の計算を生まれたときからできたのか問い詰めたいよ。
いくら算数が数学の基本だっつったって、解りやすい先生がついた
ときと、そうでないときとで、生徒の苦労はケタ違い。
ん?基本を説明するのに解りやすかったり解りにくかったりする
ことになんの不思議が?
おまえは分数の計算を生まれたときからできたのか問い詰めたいよ。
いくら算数が数学の基本だっつったって、解りやすい先生がついた
ときと、そうでないときとで、生徒の苦労はケタ違い。
32login:Penguin
02/02/01 09:53ID:VTxWGKIN http://www.iecc.com/linker/
linker&loadersの草稿が英語で読めるYO!
http://www.linux.or.jp/JF/JFdocs/INDEX-programming.html
Library HOWTO はわかりやすいス
linker&loadersの草稿が英語で読めるYO!
http://www.linux.or.jp/JF/JFdocs/INDEX-programming.html
Library HOWTO はわかりやすいス
02/02/01 10:02ID:wGSa/qxe
ディバイディングドライバァァァァーッ!!
02/02/01 10:21ID:RSGobFLl
02/02/01 10:35ID:a6zdq5Rc
36login:Penguin
02/02/01 10:51ID:Oxc8LS21 喧嘩は〜やめて〜争わ〜ないで〜
>>33
承認
モジュールをつくる
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/drivers/module.html
デバイスドライバ開発入門
http://www.net-newbie.com/linux/driver/
Linux 拡張ボードデバイスドライバの作り方
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/research/library/drivers/make_dd.html
>>10へ
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/ioctl-number.txt.html
>>33
承認
モジュールをつくる
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/drivers/module.html
デバイスドライバ開発入門
http://www.net-newbie.com/linux/driver/
Linux 拡張ボードデバイスドライバの作り方
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/research/library/drivers/make_dd.html
>>10へ
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/ioctl-number.txt.html
37login:Penguin
02/02/01 10:53ID:Oxc8LS21 お馬さん 2ndEdition タダで読めますよ
http://www.xml.com/ldd/chapter/book/index.html
http://www.xml.com/ldd/chapter/book/index.html
02/02/01 11:02ID:0zxTeFbY
>>37 サンクスコ
ちなみに23の説明は楽しかった。
ちなみに23の説明は楽しかった。
02/02/01 11:35ID:0DxQaaOu
>3ガバス
ガバスって、ファミ通だっけ?デバイスと関係なのでsage
ガバスって、ファミ通だっけ?デバイスと関係なのでsage
02/02/01 13:40ID:fvbQ/5zX
02/02/01 14:38ID:HC9Yhxcp
デバイスドライバーだけじゃないけどさ
ソフトバンクからでてるLinuxのプログラム本と
詳細なKernel(2.2系)の本はあった方がいいかなぁ・・・
ソフトバンクからでてるLinuxのプログラム本と
詳細なKernel(2.2系)の本はあった方がいいかなぁ・・・
43login:Penguin
02/02/01 15:00ID:OYnwkLox とりあえず、ここまでのレスは全部読んで
なんとなく概要は理解できた気がするのですが、、。
お仕事でドライバの事少し勉強しなければいけませんので、
ソースから学ぼうと思ってるんですが。
Linux2.4系のKernelソースの中で
全く、ドライバをやった事の無い初心者にも
わかりやすいソースってどれでしょうか?
どなたか有識者で知ってらっしゃる方はいらっしゃいませんか?
「お馬さん」は2.2系の日本語を読んでますけど、
非常に難解です、、。
Kernelが2.4系なので、
文献も英語しかなく、
読解力のないわたしは苦しんでいます。(^^;)
ここを良スレと見込んでよろしくお願いしますm(_ _)m
なんとなく概要は理解できた気がするのですが、、。
お仕事でドライバの事少し勉強しなければいけませんので、
ソースから学ぼうと思ってるんですが。
Linux2.4系のKernelソースの中で
全く、ドライバをやった事の無い初心者にも
わかりやすいソースってどれでしょうか?
どなたか有識者で知ってらっしゃる方はいらっしゃいませんか?
「お馬さん」は2.2系の日本語を読んでますけど、
非常に難解です、、。
Kernelが2.4系なので、
文献も英語しかなく、
読解力のないわたしは苦しんでいます。(^^;)
ここを良スレと見込んでよろしくお願いしますm(_ _)m
44login:Penguin
02/02/01 15:14ID:4diOANaQ02/02/01 17:42ID:Oxc8LS21
02/02/01 22:46ID:Pc1hsWFQ
/*
* $Id: joydev.c,v 1.19 2001/01/10 19:49:40 voj
tech Exp $
*
* Copyright (c) 1999-2000 Vojtech Pavlik 
;
* Copyright (c) 1999 Colin Van Dyke 
;
*
* Joystick device driver for the input&n
bsp;driver suite.
*
* Sponsored by SuSE and Intel
*/
// さぁ、いよいよはじまりました、Linuxドライバーコメント2002、
// 実況はわたくしモモナイ、解説はおなじみサキサカさんです。
// サキサカさん、今日はよろくお願いします。
// はいはい、よろしく。
// サキサカさん、本日のカードはkernel 2.4.16のdriver/input/joydev.cです
が、
// しょっぱなから、このファイルというのはどうなんでしょうか?
// 単に作者の23が、>>45の言葉どおりキャラクタデバイスから読もうとして、
// 一番手頃なのがこれだったようですよ。
// 23ということは、いつものコメンテーターと作者が違うようですね。
// そうそう。http://pc.2ch.net/test/read.cgi/prog/1011188426/215-281とは
// 作者がちがうんで、私も心配しちょる。
// また煽られて逆上しませんか?
// 本人も、O<^Z=6:\Y2と思ったようだから大丈夫でしょう。
// むしろ、途中で飽きるんじゃないかな?
// そのあたり、読者の応援の声が欲しいところ。
// ところで作者は、joydev.cのGPLの表記を消してしまったようですが、
// 大丈夫でしょうか?
// まぁCopyright (c)は残したから、いいんじゃないかね。
// ともあれ、Linuxドライバーコメント2002 Round1 joydev.c
// いよいよスタートです。
// この放送は等幅フォント対応で、2chよりお伝えします!
* $Id: joydev.c,v 1.19 2001/01/10 19:49:40 voj
tech Exp $
*
* Copyright (c) 1999-2000 Vojtech Pavlik 
;
* Copyright (c) 1999 Colin Van Dyke 
;
*
* Joystick device driver for the input&n
bsp;driver suite.
*
* Sponsored by SuSE and Intel
*/
// さぁ、いよいよはじまりました、Linuxドライバーコメント2002、
// 実況はわたくしモモナイ、解説はおなじみサキサカさんです。
// サキサカさん、今日はよろくお願いします。
// はいはい、よろしく。
// サキサカさん、本日のカードはkernel 2.4.16のdriver/input/joydev.cです
が、
// しょっぱなから、このファイルというのはどうなんでしょうか?
// 単に作者の23が、>>45の言葉どおりキャラクタデバイスから読もうとして、
// 一番手頃なのがこれだったようですよ。
// 23ということは、いつものコメンテーターと作者が違うようですね。
// そうそう。http://pc.2ch.net/test/read.cgi/prog/1011188426/215-281とは
// 作者がちがうんで、私も心配しちょる。
// また煽られて逆上しませんか?
// 本人も、O<^Z=6:\Y2と思ったようだから大丈夫でしょう。
// むしろ、途中で飽きるんじゃないかな?
// そのあたり、読者の応援の声が欲しいところ。
// ところで作者は、joydev.cのGPLの表記を消してしまったようですが、
// 大丈夫でしょうか?
// まぁCopyright (c)は残したから、いいんじゃないかね。
// ともあれ、Linuxドライバーコメント2002 Round1 joydev.c
// いよいよスタートです。
// この放送は等幅フォント対応で、2chよりお伝えします!
02/02/01 22:52ID:c8Ppl2p2
#include <asm/io.h>  
; // さぁ、ソースのほうは順調に
#include <asm/system.h> // イン
クルードが進んでおります。
#include <asm/segment.h> // 本日は、/u
sr/src/linux/includeには、
#include <linux/delay.h> // grepと共
にレポーターのヤブナカさんが
#include <linux/errno.h> // 逝っており
ます。ヤブナカさ〜ん?
#include <linux/joystick.h> //*はい!ヤブナカです!今日はヘッ
ダが
#include <linux/input.h> //*いっぱいなので
、findも一緒に待機して
#include <linux/kernel.h> //*万全の体制です!
#include <linux/major.h> // 後程、なに
か不明なマクロなどありましたら
#include <linux/slab.h> // お願
いしま〜す
#include <linux/mm.h> //*
はい!了解です!
#include <linux/miscdevice.h> // さてサキサカさん、インクルードも後
半に
#include <linux/module.h> // 来ましたが、std
io.hが無いようですね?
#include <linux/poll.h> // そ
ういうボケはどうでもいいけど、
#include <linux/init.h> // 「
カーネル」って雰囲気は満点だね。
#include <linux/smp_lock.h> // どうやらインクルードも無
事終了しました。
02/02/01 22:53ID:c8Ppl2p2
// さて、始めは定義の類が続きます
#define JOYDEV_MINOR_BASE 0&nbs
p; // サキサカさん、この_BASEって何でしょうか?
#define JOYDEV_MINORS &nb
sp; 32 // 他のinputデバイスとメジャ
ー番号を共有
#define JOYDEV_BUFFER_SIZE 64&n
bsp;// するための工夫だね
 
; &nbs
p; // でも、input.hで宣言しなくてい
いのかなぁ
struct joydev { // さぁ、ここで構造体の
定義です。
int exist; // サキサカさん、ここで定義というのはど
うでしょう?
int open; // あたりまえだけど、joydev.c内
部向けってことだね。
int minor; // あまり他のドライバに応用が効く部分
じゃないでしょ。
struct input_handle handle; // でも、
wait_queue_head_t wait; //
devfs_handle_t devfs;
struct joydev *next;  
; // あ、リンクの様相です。
struct joydev_list *list; //&nbs
p; 複数デバイスが考えられる時の定番ですね
struct js_corr corr[ABS_MAX]; // このあたりの構造体
は、使い方がはっきり
struct JS_DATA_SAVE_TYPE glue;// した時点で、ヘッダを参
照したいと思います
int nabs;
int nkey;
__u16 keymap[KEY_MAX - BTN_MISC]; // さて、こ
のあたりの定数ですが...
__u16 keypam[KEY_MAX - BTN_MISC]; // キーと
ボタンがごっちゃだね。
__u8 absmap[ABS_MAX]; // ここらのABSってなんでしょ?
__u8 abspam[ABS_MAX]; // うーん、よくわからないなぁ
__s16 abs[ABS_MAX]; // それでは聞いてみましょう。ヤブナ
カさーん?
};
#define JOYDEV_MINOR_BASE 0&nbs
p; // サキサカさん、この_BASEって何でしょうか?
#define JOYDEV_MINORS &nb
sp; 32 // 他のinputデバイスとメジャ
ー番号を共有
#define JOYDEV_BUFFER_SIZE 64&n
bsp;// するための工夫だね
 
; &nbs
p; // でも、input.hで宣言しなくてい
いのかなぁ
struct joydev { // さぁ、ここで構造体の
定義です。
int exist; // サキサカさん、ここで定義というのはど
うでしょう?
int open; // あたりまえだけど、joydev.c内
部向けってことだね。
int minor; // あまり他のドライバに応用が効く部分
じゃないでしょ。
struct input_handle handle; // でも、
wait_queue_head_t wait; //
devfs_handle_t devfs;
struct joydev *next;  
; // あ、リンクの様相です。
struct joydev_list *list; //&nbs
p; 複数デバイスが考えられる時の定番ですね
struct js_corr corr[ABS_MAX]; // このあたりの構造体
は、使い方がはっきり
struct JS_DATA_SAVE_TYPE glue;// した時点で、ヘッダを参
照したいと思います
int nabs;
int nkey;
__u16 keymap[KEY_MAX - BTN_MISC]; // さて、こ
のあたりの定数ですが...
__u16 keypam[KEY_MAX - BTN_MISC]; // キーと
ボタンがごっちゃだね。
__u8 absmap[ABS_MAX]; // ここらのABSってなんでしょ?
__u8 abspam[ABS_MAX]; // うーん、よくわからないなぁ
__s16 abs[ABS_MAX]; // それでは聞いてみましょう。ヤブナ
カさーん?
};
02/02/01 22:56ID:c8Ppl2p2
/************************input.h*************************************/
#define KEY_PROG4 203
#define KEY_SUSPEND 205 //*はい!ヤブナカです!
#define KEY_CLOSE 206 //*ただいまinput.hの300行付
近にいます!
#define KEY_UNKNOWN 220 //*ここまでがキーボードの番号で
#define BTN_MISC 0x100 //*ここからマウスや他
のコードが
#define BTN_0 0x100 //*ふ
られているいる様子です!
#define BTN_1 0x101 //*こ
こからですね...
#define BTN_2 0x102 //*さ
、カメラさんこっち来て!
// (略)
#define BTN_JOYSTICK 0x120 //*この付近、330行あたりで
#define BTN_TRIGGER 0x120 //*ジョイスティック向けの番号があっ
て、
#define BTN_THUMB 0x121 //*さ、こっちこっち
// (略)
#define BTN_TOUCH 0x14a //*はい、このあたり!
#define BTN_STYLUS 0x14b //*タッチパネルらしき
#define BTN_STYLUS2 0x14c //*定義を最後に
#define KEY_MAX 0x1ff //*全てのキーが
出そろうようです!
//*また、このすぐ後に Relative acesとAbsolute axesというコメントが
//*続くようです!
// input.hからは以上です!
// joydev.cにお返しします!
/********************************************************************/
// はい、ありがとうございました。
// キーボードとその他のボタンで統一的に管理してるけど
// ここではジョイスティックで使うかもしれない分だけにしてるんだね
// ABSはRELと対になって絶対値と相対値。アナログコントローラの話かな。
// とりあえず、CMです。
#define KEY_PROG4 203
#define KEY_SUSPEND 205 //*はい!ヤブナカです!
#define KEY_CLOSE 206 //*ただいまinput.hの300行付
近にいます!
#define KEY_UNKNOWN 220 //*ここまでがキーボードの番号で
#define BTN_MISC 0x100 //*ここからマウスや他
のコードが
#define BTN_0 0x100 //*ふ
られているいる様子です!
#define BTN_1 0x101 //*こ
こからですね...
#define BTN_2 0x102 //*さ
、カメラさんこっち来て!
// (略)
#define BTN_JOYSTICK 0x120 //*この付近、330行あたりで
#define BTN_TRIGGER 0x120 //*ジョイスティック向けの番号があっ
て、
#define BTN_THUMB 0x121 //*さ、こっちこっち
// (略)
#define BTN_TOUCH 0x14a //*はい、このあたり!
#define BTN_STYLUS 0x14b //*タッチパネルらしき
#define BTN_STYLUS2 0x14c //*定義を最後に
#define KEY_MAX 0x1ff //*全てのキーが
出そろうようです!
//*また、このすぐ後に Relative acesとAbsolute axesというコメントが
//*続くようです!
// input.hからは以上です!
// joydev.cにお返しします!
/********************************************************************/
// はい、ありがとうございました。
// キーボードとその他のボタンで統一的に管理してるけど
// ここではジョイスティックで使うかもしれない分だけにしてるんだね
// ABSはRELと対になって絶対値と相対値。アナログコントローラの話かな。
// とりあえず、CMです。
02/02/01 22:57ID:c8Ppl2p2
げ、ぶち切れてる。鬱死....
02/02/01 23:02ID:Oxc8LS21
改行が挟まらなければ 相当おもしろい企画になる・・・
マジ良スレの予感
マジ良スレの予感
52CMまで前半
02/02/01 23:46ID:bMJKgu48 begin 644 2ch_joydev1.txt.bz2
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
M*$UHT7`(&DP8!4,QM;<7EZX0(P%7B[8@3T`)H21SX0.IL&>`DE08L*`8A
AW#!TY]Z\9@*S`]*GHI*TF5"K@6UJ/_XNY(IPH2`0BE\:
`
end
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
M*$UHT7`(&DP8!4,QM;<7EZX0(P%7B[8@3T`)H21SX0.IL&>`DE08L*`8A
AW#!TY]Z\9@*S`]*GHI*TF5"K@6UJ/_XNY(IPH2`0BE\:
`
end
53CMまで後半
02/02/01 23:47ID:bMJKgu48 begin 644 2ch_joydev2.txt.bz2
M0EIH.3%!6293649+3QL``@#_G_40!`!H<_](?O_?ZK___^H_?O____OWQ;_^
MG!-@!$.*+,U@:WVR[<-"F*:8*GFA&D::,:GJ/*'I&U`]/5-&U`T/4`]0T])Z
MFF(#$`T#!```]0`!HD-)II/TAI,RFU,"9I1M$VIZ$T-``&@``9`````#1HT-
M`/U31Y(@9,$9,"-,0TPC$-,`$8$8"#)ID-&0T!B8"8A@)B--,3`F`2)$F33*
MI^TE/R:C4>IZ3`@]0/4;4?J0-/4-H0&]4]0```````R`,$T&@@9,$9,"-,0T
MPC$-,`$8$8"#)ID-&0T!B8"8A@)B--,3`F`:FDD])H,U``--&@```&0R,U&C
M(`````````R8$#1D8@3N:?BL#MGS.7=3&L7Y(,I:K2FCSU8[D>8$R++4E275
MXCRD!AW.?$9;QOZJV(B`HWT^E`+-+=ZZA18(GD$2*OZD)`"6,2P^&PX1&\^1
MNW_`IK&'6X6"X0K$-P#(2#(4E$'J@4,1BSN9Y)30R&4C"2&\DP1N,J2F;DD*
M??N%,@`9JA1ONIE?*U&;M+X"L&`-&O@4-QFD0]1DQI#:;[WH]0;W!UC(57`5
M)F&<"FJ^ZO)$>/Y!%&K>O6CKIHBM!V;O6$L&3PZ$`QM.6+.2N"G"\K@2-Y3M
MN(1<?/2L"[email protected],THXW9O3WZ6?/*OML15<L&&AF0:Z"6T:]Y+0:GM3G
M=8"LVHKVL&.ROZJ<F&TO:"QRKFL&R+;2MD"@@=.S%Q.]0TK5&%+RO,W>^E+9
MV[&]%8K(A0$*+((:KC&@Y//61-0M<Y`.'1;`7CB2*I2AC,;K%":&ZK9@JH58
M(BID&`X"`ERY`:!JED15I6ZUC+!$VWF%E9#Q$3@2[,080$D13N4QGF"=#DX7
MJY6S$DPJ42LC+YT<49[31KES2(HRR`03GG(I*+]=X+.FDV7"EGRNN(5JM
M6RRXMPW[80PC355&1RD\4A4!<+1K\_4"4D7V6FPD5R6-#)W9.$TA@#1]V;96
MS]=UJ-G*5\,F=5ZE@SZJ1_,KL0$3$M/MP&,HP+CURG%\7[$S^;2EIML32;?O
M-"8[BJ:UIZ5OB?FQ?IF\\7'#MX^>;Z-#LOQ.@F8Z`5Z!?AQ<4Z`2^NB6]15\
M':-'1VR%2'HJM&[6^J?CG29$ZZG2H5`A(V@OYX18]2SJ2JK,&$KB^A6&:D'_
ML\_W5OTJGU'X"9.TI98C,C,L(PC.;;_*[0E3""*\9N=HMT@/P+5\'CD?3,M1
ML:O<6#4O$,+6;,+TQD\#N5&5HJZ+FE#8?=JH^QJRE'3ML,ZEW'Z](5)C%:5*
MPM0P)HV7`;PAH2,>F9C5JO0*"HBIQ8J,AR!JFWAQJ&**2V,DU[[+4BX8PW4J
MMK-/PQ3VB!OS&LF,&S_=1,.*)M`-I*A%!)NKA1)$N]J7P.7,P+4`H;X/R61S
ME7>$+U<6.>U2Y%!8QJ\"3"-V(XFBY2KC)DB`I*,D3=N:L&G="[0ACT+H:_
M5'97^OP=K%F[RFM59TF,%Q&MZA?ZXDFDV8QJL:4@"(Q`B(D4SF#'^B45`3(P
M,#@A+HG,9`*P#V((`!80::S4MI(A)-DR,S#,IGB"J$Z0@9<@GXL$T$&BA%Y.
M*[+H4,6@GEW4+3:GOX-9-RZN6+%V)/J,&E27I3W,T%\-<T:MM7!F[>=214/8
M8D1GA+>C<MB00UAK(4D=Y+/OJZ:1@F2A1,L6EB(M5@&S`'E3;.(T"K`R%T&"
M`:-DZ3"@8<2:^&1Q/NV`PQ""P",ZX0()QA`=74[4.A1!8PLB`;38L34?\B)1
=!)C:,L0V)L&C5"05)*J-`)!.&+N2*<*$@C):>-@`
`
end
M0EIH.3%!6293649+3QL``@#_G_40!`!H<_](?O_?ZK___^H_?O____OWQ;_^
MG!-@!$.*+,U@:WVR[<-"F*:8*GFA&D::,:GJ/*'I&U`]/5-&U`T/4`]0T])Z
MFF(#$`T#!```]0`!HD-)II/TAI,RFU,"9I1M$VIZ$T-``&@``9`````#1HT-
M`/U31Y(@9,$9,"-,0TPC$-,`$8$8"#)ID-&0T!B8"8A@)B--,3`F`2)$F33*
MI^TE/R:C4>IZ3`@]0/4;4?J0-/4-H0&]4]0```````R`,$T&@@9,$9,"-,0T
MPC$-,`$8$8"#)ID-&0T!B8"8A@)B--,3`F`:FDD])H,U``--&@```&0R,U&C
M(`````````R8$#1D8@3N:?BL#MGS.7=3&L7Y(,I:K2FCSU8[D>8$R++4E275
MXCRD!AW.?$9;QOZJV(B`HWT^E`+-+=ZZA18(GD$2*OZD)`"6,2P^&PX1&\^1
MNW_`IK&'6X6"X0K$-P#(2#(4E$'J@4,1BSN9Y)30R&4C"2&\DP1N,J2F;DD*
M??N%,@`9JA1ONIE?*U&;M+X"L&`-&O@4-QFD0]1DQI#:;[WH]0;W!UC(57`5
M)F&<"FJ^ZO)$>/Y!%&K>O6CKIHBM!V;O6$L&3PZ$`QM.6+.2N"G"\K@2-Y3M
MN(1<?/2L"[email protected],THXW9O3WZ6?/*OML15<L&&AF0:Z"6T:]Y+0:GM3G
M=8"LVHKVL&.ROZJ<F&TO:"QRKFL&R+;2MD"@@=.S%Q.]0TK5&%+RO,W>^E+9
MV[&]%8K(A0$*+((:KC&@Y//61-0M<Y`.'1;`7CB2*I2AC,;K%":&ZK9@JH58
M(BID&`X"`ERY`:!JED15I6ZUC+!$VWF%E9#Q$3@2[,080$D13N4QGF"=#DX7
MJY6S$DPJ42LC+YT<49[31KES2(HRR`03GG(I*+]=X+.FDV7"EGRNN(5JM
M6RRXMPW[80PC355&1RD\4A4!<+1K\_4"4D7V6FPD5R6-#)W9.$TA@#1]V;96
MS]=UJ-G*5\,F=5ZE@SZJ1_,KL0$3$M/MP&,HP+CURG%\7[$S^;2EIML32;?O
M-"8[BJ:UIZ5OB?FQ?IF\\7'#MX^>;Z-#LOQ.@F8Z`5Z!?AQ<4Z`2^NB6]15\
M':-'1VR%2'HJM&[6^J?CG29$ZZG2H5`A(V@OYX18]2SJ2JK,&$KB^A6&:D'_
ML\_W5OTJGU'X"9.TI98C,C,L(PC.;;_*[0E3""*\9N=HMT@/P+5\'CD?3,M1
ML:O<6#4O$,+6;,+TQD\#N5&5HJZ+FE#8?=JH^QJRE'3ML,ZEW'Z](5)C%:5*
MPM0P)HV7`;PAH2,>F9C5JO0*"HBIQ8J,AR!JFWAQJ&**2V,DU[[+4BX8PW4J
MMK-/PQ3VB!OS&LF,&S_=1,.*)M`-I*A%!)NKA1)$N]J7P.7,P+4`H;X/R61S
ME7>$+U<6.>U2Y%!8QJ\"3"-V(XFBY2KC)DB`I*,D3=N:L&G="[0ACT+H:_
M5'97^OP=K%F[RFM59TF,%Q&MZA?ZXDFDV8QJL:4@"(Q`B(D4SF#'^B45`3(P
M,#@A+HG,9`*P#V((`!80::S4MI(A)-DR,S#,IGB"J$Z0@9<@GXL$T$&BA%Y.
M*[+H4,6@GEW4+3:GOX-9-RZN6+%V)/J,&E27I3W,T%\-<T:MM7!F[>=214/8
M8D1GA+>C<MB00UAK(4D=Y+/OJZ:1@F2A1,L6EB(M5@&S`'E3;.(T"K`R%T&"
M`:-DZ3"@8<2:^&1Q/NV`PQ""P",ZX0()QA`=74[4.A1!8PLB`;38L34?\B)1
=!)C:,L0V)L&C5"05)*J-`)!.&+N2*<*$@C):>-@`
`
end
02/02/01 23:49ID:bMJKgu48
只今、続き作成中です。それまで>>52-53の美しい映像(?)でお楽しみ下さい。
m(__)m
m(__)m
02/02/02 00:16ID:81i4zM55
struct joydev_list { // 先程、一部の地域で画像が乱れ、
struct js_event buffer[JOYDEV_BUFFER_SIZE]; // お見苦しい
int head; // 点があったようです。お詫びいたします。
int tail; // まぁ、字下げを1にしたし、文字も減らして
int startup;// どうにかなるかな?
struct fasync_struct *fasync; // お、なにやらsyncできるみたいだ。
struct joydev *joydev; // こちらは、先程の構造体ですね。
struct joydev_list *next; // やはり、ここもリストだね。
};
static struct joydev *joydev_table[JOYDEV_MINORS];
// さぁ、ここで変数定義!
// 一応、外部からはアクセスできないね。
// マイナー分だけ確保してるけど、
// joydev_list.joydevとの関係が気がかりだねぇ
// 配列の値はポインタのようですが?
// 領域を動的に確保することで
// 不必要に肥大化するのを防いでるんだね
MODULE_AUTHOR("Vojtech Pavlik <[email protected]>"); // おっと!?
MODULE_DESCRIPTION("Joystick device driver");
MODULE_LICENSE("GPL"); // ここでマクロの登場だ。意味は大体わかりますね。
MODULE_SUPPORTED_DEVICE("input/js"); // suseもちゃんと貢献してるねぇ
// この後いよいよ関数の登場です。
// たのしみだね、モモナイさん
// 私は、23がどこまで理解できるか心配ですが...お願いしますよ
// サキサカさん!
// そう言われても、結局書くのは23ですからねぇ...
struct js_event buffer[JOYDEV_BUFFER_SIZE]; // お見苦しい
int head; // 点があったようです。お詫びいたします。
int tail; // まぁ、字下げを1にしたし、文字も減らして
int startup;// どうにかなるかな?
struct fasync_struct *fasync; // お、なにやらsyncできるみたいだ。
struct joydev *joydev; // こちらは、先程の構造体ですね。
struct joydev_list *next; // やはり、ここもリストだね。
};
static struct joydev *joydev_table[JOYDEV_MINORS];
// さぁ、ここで変数定義!
// 一応、外部からはアクセスできないね。
// マイナー分だけ確保してるけど、
// joydev_list.joydevとの関係が気がかりだねぇ
// 配列の値はポインタのようですが?
// 領域を動的に確保することで
// 不必要に肥大化するのを防いでるんだね
MODULE_AUTHOR("Vojtech Pavlik <[email protected]>"); // おっと!?
MODULE_DESCRIPTION("Joystick device driver");
MODULE_LICENSE("GPL"); // ここでマクロの登場だ。意味は大体わかりますね。
MODULE_SUPPORTED_DEVICE("input/js"); // suseもちゃんと貢献してるねぇ
// この後いよいよ関数の登場です。
// たのしみだね、モモナイさん
// 私は、23がどこまで理解できるか心配ですが...お願いしますよ
// サキサカさん!
// そう言われても、結局書くのは23ですからねぇ...
02/02/02 01:11ID:O2jPWcD7
// ついに関数が来ました!
// 名前からすると、データ補正かな?
static int joydev_correct(int value, struct js_corr *corr)
{
// あれ、見慣れない構造体が...
//*モモナイさん!モモナイさん!
// なにやら「値」が来てるなぁ
//*モモナイさん!
// はいはい、ヤブナカさん?
//*今joystick.hに来ているんですが、sturct js_corrについての
//*情報が得られました!
// はい、カメラお渡しします。
/************************joystick.h**********************************/
//*只今、include/linux/jyostick.hの75行目付近に来ています!
/*
* Types and constants for get/set correction
*/
//*どうやら、この付近で補正の為の定数等を定義してるようです!
#define JS_CORR_NONE 0x00 /* returns raw values */
#define JS_CORR_BROKEN 0x01 /* broken line */
//*データがナマの場合と壊れた場合を分けているようです
struct js_corr {
__s32 coef[8]; //*このあたり、coefや
__s16 prec; //*precが何の略なのか
__u16 type; //*全くナゾです。
}; //*こちらからは以上です!
/********************************************************************/
// はい、ありがとうございました。
// なんだかわかったようなわからないような...
// 作者がそもそもjoydev.cがどういう物か理解してないからねぇ
// 名前からすると、データ補正かな?
static int joydev_correct(int value, struct js_corr *corr)
{
// あれ、見慣れない構造体が...
//*モモナイさん!モモナイさん!
// なにやら「値」が来てるなぁ
//*モモナイさん!
// はいはい、ヤブナカさん?
//*今joystick.hに来ているんですが、sturct js_corrについての
//*情報が得られました!
// はい、カメラお渡しします。
/************************joystick.h**********************************/
//*只今、include/linux/jyostick.hの75行目付近に来ています!
/*
* Types and constants for get/set correction
*/
//*どうやら、この付近で補正の為の定数等を定義してるようです!
#define JS_CORR_NONE 0x00 /* returns raw values */
#define JS_CORR_BROKEN 0x01 /* broken line */
//*データがナマの場合と壊れた場合を分けているようです
struct js_corr {
__s32 coef[8]; //*このあたり、coefや
__s16 prec; //*precが何の略なのか
__u16 type; //*全くナゾです。
}; //*こちらからは以上です!
/********************************************************************/
// はい、ありがとうございました。
// なんだかわかったようなわからないような...
// 作者がそもそもjoydev.cがどういう物か理解してないからねぇ
02/02/02 01:14ID:O2jPWcD7
switch (corr->type) {//さぁ、分岐した!
case JS_CORR_NONE: // rawなときだね。
break; // そのまま逝くようです。
case JS_CORR_BROKEN: // こちらは壊れた時のようですが?
value = value > corr->coef[0] ? (value < corr->coef[1] ? 0 :
((corr->coef[3] * (value - corr->coef[1])) >> 14)) :
((corr->coef[2] * (value - corr->coef[0])) >> 14);
// ははぁ、coef[0]-coef[1]の範囲から値がでてるとき、coef[2,3]で
// 適当にあわせつつ値を直しているんだな。
break; // 直してから先に進むようです。
default: // さて、その他。
return 0; // やることが解らんときは、何もしないで帰る、と。
}
if (value < -32767) return -32767; // おーっと、±32767の挟み打ち!
if (value > 32767) return 32767; // signed 16 bitかな。
// この関数も終りにきたぞ!
return value; // BROLENの補正のみやってるね
}
// 関数第一ラウンド、なんとか終了となりました。
// Linuxドライバーコメント2002、/usr/src/linux/driver/input/joydev.cより
// 2chでお送りいたしております。
// まだ続ける気かねぇ
case JS_CORR_NONE: // rawなときだね。
break; // そのまま逝くようです。
case JS_CORR_BROKEN: // こちらは壊れた時のようですが?
value = value > corr->coef[0] ? (value < corr->coef[1] ? 0 :
((corr->coef[3] * (value - corr->coef[1])) >> 14)) :
((corr->coef[2] * (value - corr->coef[0])) >> 14);
// ははぁ、coef[0]-coef[1]の範囲から値がでてるとき、coef[2,3]で
// 適当にあわせつつ値を直しているんだな。
break; // 直してから先に進むようです。
default: // さて、その他。
return 0; // やることが解らんときは、何もしないで帰る、と。
}
if (value < -32767) return -32767; // おーっと、±32767の挟み打ち!
if (value > 32767) return 32767; // signed 16 bitかな。
// この関数も終りにきたぞ!
return value; // BROLENの補正のみやってるね
}
// 関数第一ラウンド、なんとか終了となりました。
// Linuxドライバーコメント2002、/usr/src/linux/driver/input/joydev.cより
// 2chでお送りいたしております。
// まだ続ける気かねぇ
02/02/02 09:46ID:whMMNTAJ
おもしろい!(w
59login:Penguin
02/02/02 23:09ID:OVfU0W3z うえ
60login:Penguin
02/02/03 00:07ID:zajX165D ちなみに、元祖モモナイさん達は
http://pc.2ch.net/test/read.cgi/prog/1011188426/201-300
このあたりにいらっしゃいます。
キャラ貸してくれたコメンテータさん、ありがとう!
# つーか事後承諾だったけど...
http://pc.2ch.net/test/read.cgi/prog/1011188426/201-300
このあたりにいらっしゃいます。
キャラ貸してくれたコメンテータさん、ありがとう!
# つーか事後承諾だったけど...
61login:Penguin
02/02/03 00:09ID:BzrcOmdf もういいよ。
sunは倒産。
SGIも倒産。
HPもWSから撤退。
IBMもWSから撤退。
NECもWSから撤退。
世界にはPCしかなくなりました。
OSもLinuxしかなくなりました。
犬厨の望む世界になりました。
終了。
sunは倒産。
SGIも倒産。
HPもWSから撤退。
IBMもWSから撤退。
NECもWSから撤退。
世界にはPCしかなくなりました。
OSもLinuxしかなくなりました。
犬厨の望む世界になりました。
終了。
6223
02/02/03 02:51ID:KGnsKyPB そうか、もういいのか....(鬱
63login:Penguin
02/02/03 14:14ID:P0SAPnI+64login:Penguin
02/02/04 18:52ID:NNgCZ8vd65login:Penguin
02/02/04 23:07ID:2sAhIg4J >57
いいぞ!続きを!
いいぞ!続きを!
66login:Penguin
02/02/05 15:21ID:iaI23jTt >65 同感。
でも、もう少し読みやすい(見やすい)とうれしんだけどな。
でも、もう少し読みやすい(見やすい)とうれしんだけどな。
67login:Penguin
02/02/05 18:54ID:F3yqU4bD 「予想される近未来」
・Linuxに市場を荒らされ全ての商用UNIXが撤退。
・Windowsは順調に売れて市場を拡大。
・エンタープライズ用途でのLinuxの駄目さ加減が発覚してみんな困る。
・みんなしょうがなくWindowsに移行する。
・Linuxはカーネルの分裂により大混乱。商用用途で使い物にならなくなる。
・Windowsしかなくなる。
・Linuxに市場を荒らされ全ての商用UNIXが撤退。
・Windowsは順調に売れて市場を拡大。
・エンタープライズ用途でのLinuxの駄目さ加減が発覚してみんな困る。
・みんなしょうがなくWindowsに移行する。
・Linuxはカーネルの分裂により大混乱。商用用途で使い物にならなくなる。
・Windowsしかなくなる。
02/02/05 19:58ID:EBSnoi/G
02/02/05 20:26ID:YUE4G5dx
サーバはどうか知らんが
結局ごちゃごちゃでも便利なものから離れられない。windowsは無くならんのは当然だが
linuxもWindowsがGPLにでもならん限り無くならんと思うなあ。
そのうち良くなるだろ。
もしBeOSみたいなのがでてきても、よっぽど革新的でFreeでないと、また往っちゃうよ
結局ごちゃごちゃでも便利なものから離れられない。windowsは無くならんのは当然だが
linuxもWindowsがGPLにでもならん限り無くならんと思うなあ。
そのうち良くなるだろ。
もしBeOSみたいなのがでてきても、よっぽど革新的でFreeでないと、また往っちゃうよ
02/02/05 20:59ID:UUxecaUS
コピペにマジレスカコワルイ
71login:Penguin
02/02/05 21:21ID:JQSzVmkT 5年程度のスパンで見ると、Linuxは産業用の組み込み系のOSと
して活躍するでしょう。
また、IBM系のリナックスも順調にシェアを伸ばしていくでしょう。
PCではWindowsが制覇するでしょう。
して活躍するでしょう。
また、IBM系のリナックスも順調にシェアを伸ばしていくでしょう。
PCではWindowsが制覇するでしょう。
72login:Penguin
02/02/13 10:11ID:Ocy9V5oG モジュールを組み込むとき、変数が渡せるものもいくつかあるけど
そのときに どの変数が渡されているかあとで知る手段ってない?
例えば sb.o とかなら irqとかいろいろ渡せるよね。
insmodしたその後で irqいくつだったか忘れたときとか
知る手段無いよね。
あと、ついでに どの変数が渡せるかを事前に知りたい。
ソースみりゃわかるけど面倒くさいじゃん。
そのときに どの変数が渡されているかあとで知る手段ってない?
例えば sb.o とかなら irqとかいろいろ渡せるよね。
insmodしたその後で irqいくつだったか忘れたときとか
知る手段無いよね。
あと、ついでに どの変数が渡せるかを事前に知りたい。
ソースみりゃわかるけど面倒くさいじゃん。
73login:Penguin
02/02/13 11:37ID:QvFCkM3Q /proc以下のファイルで確認すればいんじゃないの?
02/02/14 02:48ID:z04c7JYX
ディバイスドライバをファックしよう!
75BERO
02/04/02 18:12ID:zlzOuE7v デバイスドライバの解説って
「デバイスにはchar型とblock型があって・・charデバイスの実装サンプル」
で終わってるのが多いんだけど、
実際はソレを生で使ってることは少なくて、サウンドデバイス、CD-ROMデバイス、FlashROMデバイス、ビデオデバイスとか
デバイスごとのフレームワークがあって、実際のハードウェアドライバはその下にくるようになってる。
実験機器や自作ハードで生のI/Oポートをたたけるだけでいい、ていうのならともかく、
(フレームワークが存在するような)一般的なハードウェアでは、このテのデバドラ解説ってのは参考にならない。
ファイルシステムドライバとかもこの範疇に入らないし。
みたところ各フレームワークの解説ってのはみあたんなくて、結局ソースにあたるしかない。
ところが既存のソースも、古いコードが残ってたり、そこからのコピペと思しき不要なコードが紛れ込んでたりして、
どれをリファレンス実装として参考にしたらいいのやら、って感じでアタマいたくなる。
「デバイスにはchar型とblock型があって・・charデバイスの実装サンプル」
で終わってるのが多いんだけど、
実際はソレを生で使ってることは少なくて、サウンドデバイス、CD-ROMデバイス、FlashROMデバイス、ビデオデバイスとか
デバイスごとのフレームワークがあって、実際のハードウェアドライバはその下にくるようになってる。
実験機器や自作ハードで生のI/Oポートをたたけるだけでいい、ていうのならともかく、
(フレームワークが存在するような)一般的なハードウェアでは、このテのデバドラ解説ってのは参考にならない。
ファイルシステムドライバとかもこの範疇に入らないし。
みたところ各フレームワークの解説ってのはみあたんなくて、結局ソースにあたるしかない。
ところが既存のソースも、古いコードが残ってたり、そこからのコピペと思しき不要なコードが紛れ込んでたりして、
どれをリファレンス実装として参考にしたらいいのやら、って感じでアタマいたくなる。
76login:Penguin
02/04/05 22:06ID:swoFdSIN >>75
本物?
本物?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「習氏より先に言うとは…」 トランプ氏同盟国発言、日本政府内に困惑 [蚤の市★]
- 第2次大戦に触れトランプ氏「米中は同盟国」、当時は中華民国…「抗日」巡る中国の言説補強する恐れ ★7 [蚤の市★]
- 【野球】広島東洋カープの矢野雅哉・前川誠太選手を書類送検 ゾンビたばこを巡る容疑 広島県警 [Ailuropoda melanoleuca★]
- 高市総理「日米は非常に強い絆で結ばれた同盟国」 トランプ大統領の“中国は同盟国だった”発言受け [首都圏の虎★]
- 若い農家の意欲奪わないで ジャガイモ輸入解禁「反対」、首相官邸前で訴え (JA新聞) [少考さん★]
- 「暗い未来に子供を産みたくない…」それでも左派よりも右派の方が「たくさん子供を産む」のはなぜか【米研究】 [首都圏の虎★]
- 【高市日本】おやびん🇺🇸「第二次世界大戦では米中は共にファシストと戦った。共通利益が相違を超えて我々を結びつけた」 [165981677]
- 【同時視聴】博衣こよりのえちえち初配信
- 【悲報】現役の内閣参与、高市にブチギレ [404143271]
- ガールズ&パンツァー第9話「絶対絶命です!」実況スレ🏡21時スタート
- 【実況】えちえちアソビ★まわり隊!初コラボ配信 ★2
- 女性「たのしいピクニック女を擁護するってことは、常に俺の前ではニコニコしてろ、俺はコストを払わないって言ってるんだが?」 [592058334]