ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
ディバイスドライバをハックしよう!
レス数が900を超えています。1000を超えると表示できなくなるよ。
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
M0EIH.3%!629360A%+XT``+9_G[JP``#,=_]U/[?;,+__WV`_?O_____OS___
MF?=@!.[NS<^WM;=[S4>SGN[5R&IH1H"GHIY-JC:30VB>FI^I/U3-0/4&FGIJ
M!Z@VC:4]3:@``!H'J``!M0,FTC0`-$28@P*>"9"GAHH&AZ(>IHT`]0,C0T:'
MJ``````#0```-#0:()II3QJ4_4VIZH\H9#TT31H-I`&U!H8AB#0#(:,0!IH:
M``#0#0T`TT#$A0:4]I--3T31H/4]0TR:-/U1ZFFF30T-``8@````:&F@9```
M`:`08!#1B:`R:83)ID`&$:-,`F`)A!H9`Q,@#``"8F3`3`30))$1IE,4\2/4
M_4T@T-&GJ>HR&@S2&@:``:#0```````````8'",1C"&^9*JG'[T9$HI(&-7K
M<R2UW8LHB7RW@PNGZ,5R,@F?`X:]]6?*@\AA1!+]AMG$$R$%Z#6BI@;I8)E$
M#0V\R67$M!!1MI'``(8.#?;]9*3"CC/04GY[9,")-38J#5@$!*1`,$)",DF"
M,!#ER=#/F.P!LPJ^\UD.DIML@*/A="L4E\"0*:`6CDL4ZLB'(N0K)R`2<S""
M26E3JSLO9#`O-\18TZ]PLT!16$^#A*9UI<SJM15`%.>PJ4F#PGPK,H%5JO)J
MGV@WNIA6V-^.(2KFCM43JQCZ4/(%H`86<FJ4'``3``&WJ0K&6-L(C'Q:Q4Z9
MDH1%=5`FDN8.BJZ,<9(R#9"JHQ#Q9-@FDA]<QPHS;$?AF/=[C;PK,Q&D+UTS
MHC$U/L;$)=$`1@MA("$:&1U24`PU>ZD,5?PWSR6A'J+P`<HKN*J_%O#>*5+`
ME%%>\*`3EL814Y2G.F*-2D%,``VX*\2%)C"PT3HA``;O`'/-HX%017@EU]Z*
M@4D\+3S@$%\4>-,B)N-T_&1W!-9(=EI$!-ISE-E9.I41`UHX*9;.<R+2/'O`
M`?,.,+.6+U<&5+>N6D`7YW:]"`6S<(/$\1@YX43%3*P)X3Y$5SXH$=900NO@
M*P53)YAM,.::9X6ECZ!6M;)1(`AI5)U)$@!B40HIBG1GB5AC802!GY%0>8A.
M88%M9MGB96$2;)_KVD6EEK!VONC\W"$J0AQG0MI<Y7-MD?H$I&@CJ+'RWB>?
MT<E-8XTLT4I8C'B&+2]CZZ)!?'W5T0$$`1.7=3!$`D!!,JJA+AC858TE3(R0
MW<XHBH"D.=,[GGGIM-U0R"#AA)D$`#[2`R2B80==-3WHHVE,EFS"LU*_"4LZ
M,ZL>3+V%DI'57CLV@]G8OK\_EF0MQY$P/R]6($`$#9S,X9A"]P6,R7>>XO3;
MOK\!N2S:AE#E<PN#!@!Q%%`G2`?C!>)-)=?"^4-19*JGMNJ4<`E#7OW"$'<+
M_0/AJ_(^I+V?B;R90$LIN#HX6GE:A5F%$_=X:K6!."L^0*`Q-5:N=8'-)@?+
M->J+1X5"YC%MKS2^ARBZ'&/[18EM_'1PY/750@QJ3K:;K>B"-O+N>S>E\WY/
M[<V088<WQW#YI((A`6>%Z$-&I*/IJ?(/^S@$L)#14I1&%H0>R=JTJU(SHD!,
MV[94*SBH*IX$B&@W;5ER`]M$:B"V$X:%-R&16KN)6E_4V<`9F\@A96NE1RIN
MC%-\@UC&,?/3;`7Q*CZ0[BY_*=L\E`6,P.>+DA)9%L0Y>=+,RO57L'-DS;7&
M9Q8]%(-E9G34[^*]A'`U3MV``_*!2N"=CP,\XO`2"5^S`/!")2),:$C@6`1$
M^PPLI,^5M+P;G*R76:WE`F8#!LWEP84Q?JNX"(1+!9H76'0B!9!D*NP1FCM;
M^M"D0F#,&8,*J15U;H75]L_`<K[QZ2DT@3C_I6ING0@9RX=;%-G]7K1-$XC+
M^&"1$C-:Q"F!_4UC%$03&(Y5UHHT(Q1(UAJ,05-<WLY`*D7]L02X[?7=S<P3
M%&PI\#K<LC@1",MHX<AF2C0]84!)%^8!P;+"Q!EK$0JFN`:ZZ"%8Q$Y'COU+
M6A7(,,:;)38Y@KYDBW+#D4F$LBRX3(D"%Q=5D/S6!,*]5RRXA.>P?%9-:E.)
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
M0EIH.3%!629360A%+XT``+9_G[JP``#,=_]U/[?;,+__WV`_?O_____OS___
MF?=@!.[NS<^WM;=[S4>SGN[5R&IH1H"GHIY-JC:30VB>FI^I/U3-0/4&FGIJ
M!Z@VC:4]3:@``!H'J``!M0,FTC0`-$28@P*>"9"GAHH&AZ(>IHT`]0,C0T:'
MJ``````#0```-#0:()II3QJ4_4VIZH\H9#TT31H-I`&U!H8AB#0#(:,0!IH:
M``#0#0T`TT#$A0:4]I--3T31H/4]0TR:-/U1ZFFF30T-``8@````:&F@9```
M`:`08!#1B:`R:83)ID`&$:-,`F`)A!H9`Q,@#``"8F3`3`30))$1IE,4\2/4
M_4T@T-&GJ>HR&@S2&@:``:#0```````````8'",1C"&^9*JG'[T9$HI(&-7K
M<R2UW8LHB7RW@PNGZ,5R,@F?`X:]]6?*@\AA1!+]AMG$$R$%Z#6BI@;I8)E$
M#0V\R67$M!!1MI'``(8.#?;]9*3"CC/04GY[9,")-38J#5@$!*1`,$)",DF"
M,!#ER=#/F.P!LPJ^\UD.DIML@*/A="L4E\"0*:`6CDL4ZLB'(N0K)R`2<S""
M26E3JSLO9#`O-\18TZ]PLT!16$^#A*9UI<SJM15`%.>PJ4F#PGPK,H%5JO)J
MGV@WNIA6V-^.(2KFCM43JQCZ4/(%H`86<FJ4'``3``&WJ0K&6-L(C'Q:Q4Z9
MDH1%=5`FDN8.BJZ,<9(R#9"JHQ#Q9-@FDA]<QPHS;$?AF/=[C;PK,Q&D+UTS
MHC$U/L;$)=$`1@MA("$:&1U24`PU>ZD,5?PWSR6A'J+P`<HKN*J_%O#>*5+`
ME%%>\*`3EL814Y2G.F*-2D%,``VX*\2%)C"PT3HA``;O`'/-HX%017@EU]Z*
M@4D\+3S@$%\4>-,B)N-T_&1W!-9(=EI$!-ISE-E9.I41`UHX*9;.<R+2/'O`
M`?,.,+.6+U<&5+>N6D`7YW:]"`6S<(/$\1@YX43%3*P)X3Y$5SXH$=900NO@
M*P53)YAM,.::9X6ECZ!6M;)1(`AI5)U)$@!B40HIBG1GB5AC802!GY%0>8A.
M88%M9MGB96$2;)_KVD6EEK!VONC\W"$J0AQG0MI<Y7-MD?H$I&@CJ+'RWB>?
MT<E-8XTLT4I8C'B&+2]CZZ)!?'W5T0$$`1.7=3!$`D!!,JJA+AC858TE3(R0
MW<XHBH"D.=,[GGGIM-U0R"#AA)D$`#[2`R2B80==-3WHHVE,EFS"LU*_"4LZ
M,ZL>3+V%DI'57CLV@]G8OK\_EF0MQY$P/R]6($`$#9S,X9A"]P6,R7>>XO3;
MOK\!N2S:AE#E<PN#!@!Q%%`G2`?C!>)-)=?"^4-19*JGMNJ4<`E#7OW"$'<+
M_0/AJ_(^I+V?B;R90$LIN#HX6GE:A5F%$_=X:K6!."L^0*`Q-5:N=8'-)@?+
M->J+1X5"YC%MKS2^ARBZ'&/[18EM_'1PY/750@QJ3K:;K>B"-O+N>S>E\WY/
M[<V088<WQW#YI((A`6>%Z$-&I*/IJ?(/^S@$L)#14I1&%H0>R=JTJU(SHD!,
MV[94*SBH*IX$B&@W;5ER`]M$:B"V$X:%-R&16KN)6E_4V<`9F\@A96NE1RIN
MC%-\@UC&,?/3;`7Q*CZ0[BY_*=L\E`6,P.>+DA)9%L0Y>=+,RO57L'-DS;7&
M9Q8]%(-E9G34[^*]A'`U3MV``_*!2N"=CP,\XO`2"5^S`/!")2),:$C@6`1$
M^PPLI,^5M+P;G*R76:WE`F8#!LWEP84Q?JNX"(1+!9H76'0B!9!D*NP1FCM;
M^M"D0F#,&8,*J15U;H75]L_`<K[QZ2DT@3C_I6ING0@9RX=;%-G]7K1-$XC+
M^&"1$C-:Q"F!_4UC%$03&(Y5UHHT(Q1(UAJ,05-<WLY`*D7]L02X[?7=S<P3
M%&PI\#K<LC@1",MHX<AF2C0]84!)%^8!P;+"Q!EK$0JFN`:ZZ"%8Q$Y'COU+
M6A7(,,:;)38Y@KYDBW+#D4F$LBRX3(D"%Q=5D/S6!,*]5RRXA.>P?%9-:E.)
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
本物?
本物?
02/04/05 22:15ID:CU/0IjiI
まぁ、アゲられついでに75さんにLinux界に伝わる格言を一つ。
「動けば正義」
「動けば正義」
02/05/08 17:01ID:kXDZWtdP
>77
VBプログラマに通ずるものがある(w
VBプログラマに通ずるものがある(w
02/05/12 06:02ID:i/O/fiuU
>>77
イイ言葉だ....
イイ言葉だ....
02/06/25 11:32ID:h8q+RUm7
お馬さん本買ってきて、サンプルコードをftp.ora.comからダウンロード
しようと思ったのに、ftp.ora.comがつながんねーYO!
どなたかftp.ora.com/pub/examples/linux/drivers/の中身を
ミラーしていただけないでしょうか?
しようと思ったのに、ftp.ora.comがつながんねーYO!
どなたかftp.ora.com/pub/examples/linux/drivers/の中身を
ミラーしていただけないでしょうか?
02/06/26 10:26ID:MG8jc7TY
すみません。ftp.ora.comにつながりましたので、>>80はなしにしてください。
これだけではなんなので、同じ壁に突き当たるかもしれない人へ:
お馬さん本のサンプルソースは、筆者のサイト
ftp://ar.linux.it/pub/ldd2/ からもダウンロードできます。
これだけではなんなので、同じ壁に突き当たるかもしれない人へ:
お馬さん本のサンプルソースは、筆者のサイト
ftp://ar.linux.it/pub/ldd2/ からもダウンロードできます。
82login:Penguin
02/08/14 00:47ID:2q+/MEDi age
02/08/14 00:52ID:udiJKVSV
02/08/16 07:53ID:c0C09J9f
糞コードをハケーン!!
じっとガマンして保守に付き合うのはプロ
とっとと書き直すのはアマ
じっとガマンして保守に付き合うのはプロ
とっとと書き直すのはアマ
85login:Penguin
02/08/16 14:43ID:S24KMUAB02/08/17 02:23ID:D5BAubdc
たとえ糞コードでも動いているものであれば余計なことをしないのが当然だろ。
元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら
周囲に迷惑をかけることになるのだから、
勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。
元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら
周囲に迷惑をかけることになるのだから、
勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。
02/08/17 03:47ID:L76cjPXx
サン電子U-cableP5のドライバはいずこ?
IOのケーブルはLinux対応してまっか?DDIに聞いたら
Linuxは独自のOSですので当社では判りかねます。
つーかWinはMS独自のOSだしMacもMac独自のOSでは?
製作者及び団体の数ではWinの方が独自性が強いと思うのですが
先生方!教えてくだはい
IOのケーブルはLinux対応してまっか?DDIに聞いたら
Linuxは独自のOSですので当社では判りかねます。
つーかWinはMS独自のOSだしMacもMac独自のOSでは?
製作者及び団体の数ではWinの方が独自性が強いと思うのですが
先生方!教えてくだはい
02/08/17 16:48ID:OXP9X1ng
02/08/17 16:55ID:OXP9X1ng
仕事としてソース非公開なLinux用ドライバ開発なんぞをやってます。
>>75の言ってる事は同感。
drivers/char/serial.cなんかを見てると情けなくて泣きたくなってくる。
「動けば正義」は否定しないけど、「動いたら放置」ってのはちょっと
なぁ。
Linuxだと、なら「ならお前が書き直せ」ってことになるんだけど、正直
どこから手をつければいいのか、途方にくれるようなドライバが多すぎ
る。
>>75の言ってる事は同感。
drivers/char/serial.cなんかを見てると情けなくて泣きたくなってくる。
「動けば正義」は否定しないけど、「動いたら放置」ってのはちょっと
なぁ。
Linuxだと、なら「ならお前が書き直せ」ってことになるんだけど、正直
どこから手をつければいいのか、途方にくれるようなドライバが多すぎ
る。
02/08/17 17:21ID:MTVVTQyw
88>書ければWinでネットしません!
02/08/17 20:48ID:Zdf5lEt8
サン電子は「ドライバ書くので情報くれ」といってもくれない会社だから
どうしようもない。
どうしようもない。
02/08/17 23:46ID:IR8qSaOk
じゃIO・DATAさんでも良いよ。
H"用のUSBケーブルで32kパケット通信(つなぎ放題)対応って2つしか無いのね!
9月にサンデンシから新しい奴が出るけどWinとMacのみ対応だし・・・・
H"用のUSBケーブルで32kパケット通信(つなぎ放題)対応って2つしか無いのね!
9月にサンデンシから新しい奴が出るけどWinとMacのみ対応だし・・・・
02/08/18 19:29ID:XonFUm75
02/08/20 04:33ID:EFxDYaWg
U-cableP5ならどっかにドライバ落ちてなかったか?
02/08/21 02:27ID:++pf5YT/
94>落ちてたけどウチのPCはFDも無いしCD−Rも無いから意味無し
それ以前にturboLinux7でドライバの入れ方知らんから無意味
Turboじゃなくても知らないが・・・
完全マスターTurboLinux読んで頑張ってみます。
お騒がせしました。
それ以前にturboLinux7でドライバの入れ方知らんから無意味
Turboじゃなくても知らないが・・・
完全マスターTurboLinux読んで頑張ってみます。
お騒がせしました。
96login:Penguin
02/08/22 00:52ID:hok07Wzb 昔DOS3.1の時代に、プリンターのデバイスドライバーをひとつ一機種に
ついて書くたびに50万円もらっていた友達をしっている。
非常においしい商売だったようだ。
ついて書くたびに50万円もらっていた友達をしっている。
非常においしい商売だったようだ。
97login:Penguin
02/09/17 02:52ID:uJTVD8V1 今さらあげてしまいますが、オライリーのドライバの本に書いてある。
file構造体がなにをやっているのかよくわかりません。というかその存在自体が疑問です。file_operation構造体はinit_moduleによって登録されるってのはわかるんですが、file構造体はどんなときに使われるとかよくわかりません。
デバイスドライバで2番目に重要な構造体と書いてあったのでかなり意味があると思うのですが、
くだ質できく内容でないと判断したので、ここで聞かせて下さい。
file構造体がなにをやっているのかよくわかりません。というかその存在自体が疑問です。file_operation構造体はinit_moduleによって登録されるってのはわかるんですが、file構造体はどんなときに使われるとかよくわかりません。
デバイスドライバで2番目に重要な構造体と書いてあったのでかなり意味があると思うのですが、
くだ質できく内容でないと判断したので、ここで聞かせて下さい。
02/09/17 22:14ID:2Yzp0rLg
>>97
Linux のドライバは(一部除いて)ファイルで表されてるわけです。
/dev/配下にいっぱいありますよね?
そのファイルをopen すればfile_operations 構造体のopen メソッドが呼ばれる。
そのファイルをread すればfile_operations 構造体のread メソッドが以下略。
多分システムコールかデバイスファイルについて知識不足なんだと思われ。
なぜ存在自体が疑問なのか書いてる途中でわけわかんなくなってきたよヽ(`Д´)ノウワァァン
ちなみにここでつまずいてたらその本絶対読めないから教えてくれる人探した方がいい。。。
Linux のドライバは(一部除いて)ファイルで表されてるわけです。
/dev/配下にいっぱいありますよね?
そのファイルをopen すればfile_operations 構造体のopen メソッドが呼ばれる。
そのファイルをread すればfile_operations 構造体のread メソッドが以下略。
多分システムコールかデバイスファイルについて知識不足なんだと思われ。
なぜ存在自体が疑問なのか書いてる途中でわけわかんなくなってきたよヽ(`Д´)ノウワァァン
ちなみにここでつまずいてたらその本絶対読めないから教えてくれる人探した方がいい。。。
99login:Penguin
02/09/18 03:24ID:AWtWYegc ありがとうございました。
どうやらfile_operations構造体の次にでてきたので、
デバイスドライバ特有の構造体かと勘違いしてしまったようですが、
低水準システムコールのときのfile構造体と同じだったんですね。
わかったみたいです。
一応半分位まで読みました。なんとなくですがわかったきがするので、
音なるやつでも書いてみることにします。
どうやらfile_operations構造体の次にでてきたので、
デバイスドライバ特有の構造体かと勘違いしてしまったようですが、
低水準システムコールのときのfile構造体と同じだったんですね。
わかったみたいです。
一応半分位まで読みました。なんとなくですがわかったきがするので、
音なるやつでも書いてみることにします。
02/09/19 00:16ID:YeCer3VV
02/09/19 01:00ID:Zca/tfIP
デバイスドライバで、file構造体って見ることあります?
漏れ、見たことないんですが。
漏れ、見たことないんですが。
02/09/24 08:38ID:jDkNy+Lt
age
02/09/24 10:47ID:oRAD0jRL
久々に上がってたりして...で亀レス
>>101
一つのドライバで複数のデバイスを制御(特に割り込み)する時に
使わない? (private_data)
static な領域にデータ置いといてベタで検索でもいいけど...
>>101
一つのドライバで複数のデバイスを制御(特に割り込み)する時に
使わない? (private_data)
static な領域にデータ置いといてベタで検索でもいいけど...
104ねここねこ
02/09/24 12:11ID:jDkNy+Lt デバイスドライバを書くときに使う各種マクロや関数などが
詳しく&解りやすく載っている資料とか無いでしょうか?
謎の関数が多くて、、、、
詳しく&解りやすく載っている資料とか無いでしょうか?
謎の関数が多くて、、、、
02/09/24 16:20ID:oRAD0jRL
>>104
>37 にある Linux DeviceDriver 2nd Edition
これを wget で落して(いいのか?) grep で検索しる。
あとはお決まりのソース drivers/char 以下を検索かな?
>37 にある Linux DeviceDriver 2nd Edition
これを wget で落して(いいのか?) grep で検索しる。
あとはお決まりのソース drivers/char 以下を検索かな?
107ねここねこ
02/09/26 16:00ID:3O4ltuCq >105
やっぱり、それしかないですか、、、
馬の本見てがんばります
さらに質問
ハードを直接叩く(?)デバイスドライバを作っているのですが
良いサンプルとか無いでしょうか?
とりあえずは、
linux/drivers/char/qpmouse.c
あたりを参考にしてるのですが、、、
やっぱり、それしかないですか、、、
馬の本見てがんばります
さらに質問
ハードを直接叩く(?)デバイスドライバを作っているのですが
良いサンプルとか無いでしょうか?
とりあえずは、
linux/drivers/char/qpmouse.c
あたりを参考にしてるのですが、、、
02/09/26 17:52ID:l3dRzYLM
>>107
お馬さんで充分かと...
> ハードを直接叩く(?)デバイスドライバを作っているのですが
これだけでサンプルないかって言われてもなぁ。
誰もレス出来ないんじゃぁ?
マウスドライバでも作ってんの?
レス出来ないかも知んないけど。
お馬さんで充分かと...
> ハードを直接叩く(?)デバイスドライバを作っているのですが
これだけでサンプルないかって言われてもなぁ。
誰もレス出来ないんじゃぁ?
マウスドライバでも作ってんの?
レス出来ないかも知んないけど。
02/09/26 18:12ID:7zzSbQve
>>107
ターゲットと同じ種類のドライバ
or
似たような構造のハードを制御するドライバ
が一番いいサンプルなんだが。
目的のハードがどんな物かわからんので誰も答えられんと思う。
物によって微妙に作りが違うし。
ターゲットと同じ種類のドライバ
or
似たような構造のハードを制御するドライバ
が一番いいサンプルなんだが。
目的のハードがどんな物かわからんので誰も答えられんと思う。
物によって微妙に作りが違うし。
110ねここねこ
02/09/27 09:39ID:2CKrLbeR >108&109
確かに、物が不明だとわからないですね
物はFPGAというチップ経由で
データがやってくるハードのようです
外部のチップからFPGAにある程度データが貯まると
IRQをキックして(?)まとめてデータをCPUに対して送ってくるとか
言ってたな、、、
実はハードがまだ出来ていなかったり〜
確かに、物が不明だとわからないですね
物はFPGAというチップ経由で
データがやってくるハードのようです
外部のチップからFPGAにある程度データが貯まると
IRQをキックして(?)まとめてデータをCPUに対して送ってくるとか
言ってたな、、、
実はハードがまだ出来ていなかったり〜
02/09/27 12:01ID:Bk3J3OAM
>>110
> 実はハードがまだ出来ていなかったり〜
よくある話。
まだ漠然としているが、画像処理か計測系だね?
割り込み関係と poll、 DMA or mmap? 、PCI?。
まず、このあたりをお馬さんで理解すればよろしいかと。
> 実はハードがまだ出来ていなかったり〜
よくある話。
まだ漠然としているが、画像処理か計測系だね?
割り込み関係と poll、 DMA or mmap? 、PCI?。
まず、このあたりをお馬さんで理解すればよろしいかと。
112ねここねこ
02/09/30 09:38ID:ILjZfqgw >111
>まだ漠然としているが、画像処理か計測系だね?
だいたいそんな感じです
お馬さん本見てがんばります
>まだ漠然としているが、画像処理か計測系だね?
だいたいそんな感じです
お馬さん本見てがんばります
02/10/03 20:49ID:XOS3kDwu
FPGAというチップってあーた
114ねここねこ
02/10/04 10:18ID:reYTaTWA >113
なんか呼び方が変なのでしょうか?
FPGAというICが有ると効いたのですが、、、
なんか呼び方が変なのでしょうか?
FPGAというICが有ると効いたのですが、、、
115ねここねこ
02/10/04 10:18ID:reYTaTWA あと、デバイスドライバ製作の資料になるようなページ
Linux PCI デバイスドライバ
http://www.hemamu.com/dev/linux/pci/index.html
Programmed I/O (PIO)を用いた簡単なPCIデバイスドライバ
http://www-online.kek.jp/~yasu/Kenshu/pci-device-driver.html
Linux Module-HOWTO
http://www.linux.or.jp/JF/JFdocs/Module-HOWTO.html
Linuxデバイスドライバ開発ノート
http://www2s.biglobe.ne.jp/~nunokawa/Linux/DD/
Linuxによるロボット制御・デバイスドライバ開発
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/
Linux用デバイスドライバの作成
http://ap.fukushima-iri.go.jp/LinuxDeviceDriver/LinuxDeviceDriveMAIN.htm
LinuxデバイスドライバFAQ
http://www-online.kek.jp/~yasu/Kenshu/faq.html
エンジニアリングLinux応用技法
カーネル/デバイスドライバ/ポーティング/リアルタイム
http://www.cqpub.co.jp/hanbai/books/522070.htm
色々調べると
ロボット系の人が多いような気がします
SFに出てくるガレージでオリジナル2足歩行ロボットを作る
時代が来たのかな?
Linux PCI デバイスドライバ
http://www.hemamu.com/dev/linux/pci/index.html
Programmed I/O (PIO)を用いた簡単なPCIデバイスドライバ
http://www-online.kek.jp/~yasu/Kenshu/pci-device-driver.html
Linux Module-HOWTO
http://www.linux.or.jp/JF/JFdocs/Module-HOWTO.html
Linuxデバイスドライバ開発ノート
http://www2s.biglobe.ne.jp/~nunokawa/Linux/DD/
Linuxによるロボット制御・デバイスドライバ開発
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/
Linux用デバイスドライバの作成
http://ap.fukushima-iri.go.jp/LinuxDeviceDriver/LinuxDeviceDriveMAIN.htm
LinuxデバイスドライバFAQ
http://www-online.kek.jp/~yasu/Kenshu/faq.html
エンジニアリングLinux応用技法
カーネル/デバイスドライバ/ポーティング/リアルタイム
http://www.cqpub.co.jp/hanbai/books/522070.htm
色々調べると
ロボット系の人が多いような気がします
SFに出てくるガレージでオリジナル2足歩行ロボットを作る
時代が来たのかな?
116login:Penguin
02/10/06 18:35ID:URuHDkGy hack! age
117login:Penguin
02/10/17 21:17ID:RGYfSOtJ age
118login:Penguin
02/12/13 10:20ID:NJ02XiJx うおータコがドライバ書くのってやっぱ無理があるなー
でも仕事だしがんばるぞーちくしょー
でも仕事だしがんばるぞーちくしょー
119IP記録実験
03/01/08 22:12ID:KwFqEkll IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
http://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
03/01/09 01:09ID:kgNvzzS1
なんとか頑張って下さい>ひろゆき
お金は持ってないけど応援します。
お金は持ってないけど応援します。
03/01/09 01:23ID:kgNvzzS1
ひろゆきは早起きのし過ぎでちょっと壊れてるな。
03/01/09 01:33ID:kgNvzzS1
>>532
プ
プ
123IP記録実験
03/01/09 01:55ID:AmicprCv IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
http://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
03/01/09 02:06ID:0uJfVOg+
名スレの予感
03/01/09 02:50ID:yayiRGlu
福島もキタ━━━━━━(゚∀゚)━━━━━━ !!!!
03/01/09 03:34ID:TPkK0Va9
>>81
まぁそういうところでよしゆきはすごいわな。
まぁそういうところでよしゆきはすごいわな。
127山崎渉
03/01/15 11:31ID:m6zO97qQ (^^)
128ドライバー
03/01/15 13:09ID:I5ofFU+k いまLynxEMのドライバいじってるんだけど、
マルチディスプレイに成功した人います?
もう何年も放置されてる問題だから無理なのかな…?
マルチディスプレイに成功した人います?
もう何年も放置されてる問題だから無理なのかな…?
03/01/15 18:11ID:nk4F1IDO
130login:Penguin
03/02/05 19:41ID:YQeAwX++ 保守age
131login:Penguin
03/02/07 19:54ID:jVRQXDIx 1ms以下のタイミングでポーリングを監視する方法って何かないですか?
やっぱ割り込み使わんと無理?
やっぱ割り込み使わんと無理?
03/02/07 20:36ID:0UoE11AV
133
03/02/07 21:50ID:VKdRg4g703/02/07 22:07ID:nu9G29ZI
135133
03/02/11 02:29ID:/akGZqt4136login:Penguin
03/02/11 03:04ID:bsSBCYyf137login:Penguin
03/02/14 03:21ID:vgGnuLAo お馬さんの本にspinlockにぎったままsleepしちゃいかん、
って書いてあるんですがどんな困ったことが起こるのか教えて欲しい
今日この頃…
って書いてあるんですがどんな困ったことが起こるのか教えて欲しい
今日この頃…
03/02/16 03:44ID:tbT/WrCe
03/02/16 23:53ID:7J4Y8mCH
140login:Penguin
03/02/20 22:11ID:+wCEK+nh141137
03/02/21 03:18ID:qmT4Thn5 >> 140
どうもです。
自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を
同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを
コールしようとたくらんでました。
DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば
問題ないかなと思ったのですが、間違いですか?
その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで
ブロックするべきでしょうか。
どうもです。
自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を
同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを
コールしようとたくらんでました。
DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば
問題ないかなと思ったのですが、間違いですか?
その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで
ブロックするべきでしょうか。
03/02/21 05:38ID:wCxVa5I1
>>141
だめ。
プロセスAのカーネル内: 獲得 -> sleep
プロセスBのカーネル内: 獲得に失敗してビジーウェイト
なのだけど、カーネル内では、ページフォルトとか明示的にschedule()呼ぶと
かしないとスイッチはおこらないので、単一プロセッサシステムだと絶対死亡。
SMPだとか、2.5のプリエンプションカーネルだと、大丈夫かもね。
終了割込みで起こされる処理なら、sleep と wakeupを使うのが普通じゃない?
だめ。
プロセスAのカーネル内: 獲得 -> sleep
プロセスBのカーネル内: 獲得に失敗してビジーウェイト
なのだけど、カーネル内では、ページフォルトとか明示的にschedule()呼ぶと
かしないとスイッチはおこらないので、単一プロセッサシステムだと絶対死亡。
SMPだとか、2.5のプリエンプションカーネルだと、大丈夫かもね。
終了割込みで起こされる処理なら、sleep と wakeupを使うのが普通じゃない?
143bluehat
03/02/27 02:47ID:2xZ0HU3V デバドラをアクセス(介する?)することで、ファイルを暗号化して保存&
ファイルを複号化して取得、ってな事ってできんのか?
おめーだったらどうやって実現するよ?教えろ!ゴルァ!
ファイルを複号化して取得、ってな事ってできんのか?
おめーだったらどうやって実現するよ?教えろ!ゴルァ!
03/02/27 03:04ID:1e6KPqQp
普通loopだろう。
145bluehat
03/02/28 03:17ID:5YDI7es3 >>144
却下。普通じゃだめぽ。デバドラで実現しる!
却下。普通じゃだめぽ。デバドラで実現しる!
03/02/28 07:13ID:0bshxi8O
03/02/28 12:21ID:oFO1qwF8
>>145
んと、loopは広義のデバドラですよ。メジャー番号7のブロックデバイスです。
んと、loopは広義のデバドラですよ。メジャー番号7のブロックデバイスです。
03/03/06 14:51ID:NOJmB8ay
kernel-2.5 でデバドラのインターフェースが大幅に変わるという話を
きいたがおまえら知っているか?
きいたがおまえら知っているか?
03/03/06 22:23ID:33Ph63nv
03/03/06 23:24ID:gj2ir03d
151148
03/03/07 00:48ID:2S2Wvrkx struct file_operations つくって register_chrdrv()するだろ。
そのやりかたが変わるとか聞いたんだが。
そのやりかたが変わるとか聞いたんだが。
03/03/07 04:37ID:2ohbwA9F
>>151
(゚∀゚)んなこたーない
(゚∀゚)んなこたーない
03/03/08 00:05ID:l6jbsomd
2.5のソース読んでからまた来い
03/03/08 00:53ID:dd9ui0La
156login:Penguin
03/03/17 00:55ID:POpqK4+0 デバイスドライバを書いてる人って 日本に何人いるんだろう
hello.o くらいだったら1万人くらいいるのかな?
hello.o くらいだったら1万人くらいいるのかな?
157login:Penguin
03/03/21 01:19ID:4f4NMJji 3000人くらい
158LINUX初心者
03/03/22 00:33ID:c2EgVY2O ご質問があります。
IDEのDVD-ROMから、暗号無しのDVDデータを取り出すソフトが必要になり
まして、MT.FUJIの仕様書とcdrom.cを読んでいます。どうやら、DVDの
情報はIOCTLを通して取り出せるみたいなのですが、データ(2Kバイト)の
データの取り出しは、IOCTL経由では出来ないように見えます。その割には
CD-ROMのモード1と2、CDオーディオのデータはIOCTLで読み出せます。
フリーのソフトを見るとpf_readで実行しているようですが、どうやれば
良いのでしょうか? 出来たらIOCTLを使いたいのですが・・・・
よろしくお願いします。
IDEのDVD-ROMから、暗号無しのDVDデータを取り出すソフトが必要になり
まして、MT.FUJIの仕様書とcdrom.cを読んでいます。どうやら、DVDの
情報はIOCTLを通して取り出せるみたいなのですが、データ(2Kバイト)の
データの取り出しは、IOCTL経由では出来ないように見えます。その割には
CD-ROMのモード1と2、CDオーディオのデータはIOCTLで読み出せます。
フリーのソフトを見るとpf_readで実行しているようですが、どうやれば
良いのでしょうか? 出来たらIOCTLを使いたいのですが・・・・
よろしくお願いします。
159名無しさん@Emacs
03/03/22 11:15ID:j2wJcuTQ >158
http://www.linuxvideo.org/docs/Linux-DVD-HOWTO/ja/DVD-Playing-HOWTO-Nihongo.html
ここを読んだだけだけど、、、
DVDでioctlを使うには、カーネルで、それようの設定をして
コンパイルが必要みたい?
http://www.linuxvideo.org/docs/Linux-DVD-HOWTO/ja/DVD-Playing-HOWTO-Nihongo.html
ここを読んだだけだけど、、、
DVDでioctlを使うには、カーネルで、それようの設定をして
コンパイルが必要みたい?
160login:Penguin
03/04/13 20:50ID:Z3+MYXr2 USBドライバの開発の参考って何かないですか?
161あぼーん
03/04/13 20:51ID:fhD9Fsc5 ______________
/:\.____\
|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
ttp://saitama.gasuki.com/wara/
/:\.____\
|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
ttp://saitama.gasuki.com/wara/
162login:Penguin
03/04/13 22:03ID:Z3+MYXr2 kill -9 161
03/04/13 22:08ID:ecu8jjet
164login:Penguin
03/04/13 22:16ID:Z3+MYXr2 >>163
ありがとうございます。
ところで、カーネルに組み込まれているデバイスドライバのソースをモジュール化するのに定番の手法とかって
ないでしょうか?
カーネルがROM化されているので、モジュールにする必要があるもので。
ありがとうございます。
ところで、カーネルに組み込まれているデバイスドライバのソースをモジュール化するのに定番の手法とかって
ないでしょうか?
カーネルがROM化されているので、モジュールにする必要があるもので。
03/04/13 22:25ID:ecu8jjet
>>164
手法って、なにも特別なことはないとおもうんだけど...
make modules 以外でコンパイルするっていみ? それなら -DMODULE がみそ。
カーネル関連のソース内部でも、ドライバでも、これを ifdef とかで見る。
それともmodule対応じゃないドライバを対応に書き直す方法? こっちなら、
適当な初期化/後かたづけ処理を module_init()とmodule_exit()で登録すればいい。
手法って、なにも特別なことはないとおもうんだけど...
make modules 以外でコンパイルするっていみ? それなら -DMODULE がみそ。
カーネル関連のソース内部でも、ドライバでも、これを ifdef とかで見る。
それともmodule対応じゃないドライバを対応に書き直す方法? こっちなら、
適当な初期化/後かたづけ処理を module_init()とmodule_exit()で登録すればいい。
166login:Penguin
03/04/13 22:33ID:Z3+MYXr2 >>165
>module対応じゃないドライバを対応に書き直す方法
こちらの方です。ありがとうございます。意外と簡単なんですね。
早速、明日試してみます。
デスクトップで動いているドライバを組み込みLinuxに移植しようとしてるんですが、
ドライバを作るのははじめてなので、馬本で勉強してます。まだ2章目ですが
>module対応じゃないドライバを対応に書き直す方法
こちらの方です。ありがとうございます。意外と簡単なんですね。
早速、明日試してみます。
デスクトップで動いているドライバを組み込みLinuxに移植しようとしてるんですが、
ドライバを作るのははじめてなので、馬本で勉強してます。まだ2章目ですが
167開発メモ
03/04/14 14:29ID:Y6l/xCVk Warning: loading module.o will taint the kernel: no license
がでたときは、
#include <linux/module.h>
MODULE_LICENSE("GPL");
printk の出力はdmesgで見ることができる。
がでたときは、
#include <linux/module.h>
MODULE_LICENSE("GPL");
printk の出力はdmesgで見ることができる。
03/04/14 22:12ID:ktmIntrh
>>160
こんなんが参考になるかも・・・
http://www-online.kek.jp/~yasu/Kenshu/usb-driver.html
>>167
> printk の出力はdmesgで見ることができる。
cat /proc/kmsg
としても見れます。
カーネルバッファにメッセージが追加される度にコンソールに表示されます。
でも表示内容の文頭に <4> というようなログレベルが付いてまうけど・・・
こんなんが参考になるかも・・・
http://www-online.kek.jp/~yasu/Kenshu/usb-driver.html
>>167
> printk の出力はdmesgで見ることができる。
cat /proc/kmsg
としても見れます。
カーネルバッファにメッセージが追加される度にコンソールに表示されます。
でも表示内容の文頭に <4> というようなログレベルが付いてまうけど・・・
03/04/16 10:03ID:Rj9RiWI4
#define MODULE
#include <linux/module.h>
int init_module(void){ printk("<1>こんにちは\n"); return 0;}
void cleanup_module(void){ printk("さやうなら\n");}
を gcc -c hello.c でコンパイル
insmod ./hello.o で組みこもうとすると
./hello.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols
というメッセージがでます。
カーネルのバージョン管理だと小間生のですが、カーネルの再構築をせずにすり抜ける
ことは不可能でしょうか?
#include <linux/module.h>
int init_module(void){ printk("<1>こんにちは\n"); return 0;}
void cleanup_module(void){ printk("さやうなら\n");}
を gcc -c hello.c でコンパイル
insmod ./hello.o で組みこもうとすると
./hello.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols
というメッセージがでます。
カーネルのバージョン管理だと小間生のですが、カーネルの再構築をせずにすり抜ける
ことは不可能でしょうか?
170山崎渉
03/04/17 11:54ID:KRn99/cy (^^)
03/04/18 01:19ID:HcWYqirI
172山崎渉
03/04/20 06:14ID:xFRXxEWb ∧_∧
( ^^ )< ぬるぽ(^^)
( ^^ )< ぬるぽ(^^)
173login:Penguin
03/04/21 11:26ID:dxqbEfvS insmod test.o をするとこんなエラーがでます。
どんなライブラリをリンクすればいいのでしょうか?
./test.o: unresolved symbol remap_page_range
./test.o: unresolved symbol __wake_up
./test.o: unresolved symbol schedule
./test.o: unresolved symbol kmalloc
./test.o: unresolved symbol vfree
./test.o: unresolved symbol usb_deregister
./test.o: unresolved symbol video_register_device
./test.o: unresolved symbol remove_wait_queue
./test.o: unresolved symbol video_unregister_device
./test.o: unresolved symbol usb_free_urb
./test.o: unresolved symbol usb_alloc_urb
./test.o: unresolved symbol usb_register
./test.o: unresolved symbol __pollwait
./test.o: unresolved symbol kfree
./test.o: unresolved symbol usb_string
./test.o: unresolved symbol add_wait_queue
./test.o: unresolved symbol usb_submit_urb
./test.o: unresolved symbol usb_control_msg
./test.o: unresolved symbol __vmalloc
./test.o: unresolved symbol printk
./test.o: unresolved symbol usb_set_interface
./test.o: unresolved symbol vmalloc_to_page
./test.o: unresolved symbol __generic_copy_to_user
./test.o: unresolved symbol usb_unlink_urb
どんなライブラリをリンクすればいいのでしょうか?
./test.o: unresolved symbol remap_page_range
./test.o: unresolved symbol __wake_up
./test.o: unresolved symbol schedule
./test.o: unresolved symbol kmalloc
./test.o: unresolved symbol vfree
./test.o: unresolved symbol usb_deregister
./test.o: unresolved symbol video_register_device
./test.o: unresolved symbol remove_wait_queue
./test.o: unresolved symbol video_unregister_device
./test.o: unresolved symbol usb_free_urb
./test.o: unresolved symbol usb_alloc_urb
./test.o: unresolved symbol usb_register
./test.o: unresolved symbol __pollwait
./test.o: unresolved symbol kfree
./test.o: unresolved symbol usb_string
./test.o: unresolved symbol add_wait_queue
./test.o: unresolved symbol usb_submit_urb
./test.o: unresolved symbol usb_control_msg
./test.o: unresolved symbol __vmalloc
./test.o: unresolved symbol printk
./test.o: unresolved symbol usb_set_interface
./test.o: unresolved symbol vmalloc_to_page
./test.o: unresolved symbol __generic_copy_to_user
./test.o: unresolved symbol usb_unlink_urb
03/04/21 11:35ID:TzNUZhnB
03/04/21 11:37ID:65INoG+s
03/04/21 12:03ID:UyUiMYQq
177173
03/04/21 12:48ID:dxqbEfvS カーネルは、2.4.20 です。
ソースはこれです。usbカメラのドライバです。
http://www.smcc.demon.nl/webcam/pwc-8.10.tar.gz
このソースの *.c を
INCLUDEDIR = /usr/src/linux/include/
CFLAGS = -O2 -DMODULE -D__KERNEL__ -static -Wall -Wstrict-prototypes -DMODVERSIONS -I$(INCLUDEDIR) -DEXPORT_SYMTAB
でコンパイルしてできた、*.o を、
ld -o test.o -r ./*.o でリンク。insmod test.o で、173のメッセージがでます。
ROM化されたカーネルに、モジュールをいれてusbカメラを使えるようにしようと思ったのですが・・・
ちなみに、同じソースをカーネルに組みこめば動作するのは確認しました。
ソースはこれです。usbカメラのドライバです。
http://www.smcc.demon.nl/webcam/pwc-8.10.tar.gz
このソースの *.c を
INCLUDEDIR = /usr/src/linux/include/
CFLAGS = -O2 -DMODULE -D__KERNEL__ -static -Wall -Wstrict-prototypes -DMODVERSIONS -I$(INCLUDEDIR) -DEXPORT_SYMTAB
でコンパイルしてできた、*.o を、
ld -o test.o -r ./*.o でリンク。insmod test.o で、173のメッセージがでます。
ROM化されたカーネルに、モジュールをいれてusbカメラを使えるようにしようと思ったのですが・・・
ちなみに、同じソースをカーネルに組みこめば動作するのは確認しました。
03/04/21 19:06ID:UyUiMYQq
179うまうま
03/04/22 01:26ID:0SpJ1zOH >>177
お馬さん本2巻目の
「11.3.1 モジュールでバージョンサポートを使う」
「11.3.2 バージョン付きシンボルのエクスポート」
あたりをみたらどうよ? サンプルコードもあったよ
健闘を祈る!
お馬さん本2巻目の
「11.3.1 モジュールでバージョンサポートを使う」
「11.3.2 バージョン付きシンボルのエクスポート」
あたりをみたらどうよ? サンプルコードもあったよ
健闘を祈る!
180177
03/04/23 19:22ID:TY1i8cop みなさん、ありがとうございます。
--static を外したら、うまく出来ました。
>>178
組込みのLinuxなんですが、開発元がソースをよこしてくれないので不明です。
GPL的にいいのだろうか・・・
--static を外したら、うまく出来ました。
>>178
組込みのLinuxなんですが、開発元がソースをよこしてくれないので不明です。
GPL的にいいのだろうか・・・
181login:Penguin
03/04/23 21:19ID:DUkd9IIg linkあげ
・カーネル2.6のドライバ・モデル
ttp://japan.linux.com/kernel/03/04/14/0833230.shtml
・カーネル2.6のドライバ・モデル
ttp://japan.linux.com/kernel/03/04/14/0833230.shtml
182login:Penguin
03/04/24 12:36ID:LW5TaSjX Linux で USB制御とかを学ぶのに便利な電子工作キットのおすすめってありません?
できるだけ安いの。
できるだけ安いの。
183うまうま
03/04/25 12:03ID:HCQr+NWK184bloom
03/04/25 12:26ID:1KQi+Ees185login:Penguin
03/05/02 11:48ID:LZsBxbHZ USB デバイスを/dev 以下のデバイスノードに割りあてるにはどうすればいいのでしょうか?
馬本を見ながら、
devfs = devfs_mk_dir(NULL, "matsu", NULL);
if(!devfs)
return -EBUSY;
devfs_register(devfs, "nt401", DEVFS_FL_AUTO_DEVNUM, 0, 0,
S_IFCHR | S_IRUGO | S_IWUGO,
&scull_fops,
sampleDevice
);
とやっているのですが、indmod すると
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
IOやIRQはどこからとってくればいいのでしょうか?
馬本を見ながら、
devfs = devfs_mk_dir(NULL, "matsu", NULL);
if(!devfs)
return -EBUSY;
devfs_register(devfs, "nt401", DEVFS_FL_AUTO_DEVNUM, 0, 0,
S_IFCHR | S_IRUGO | S_IWUGO,
&scull_fops,
sampleDevice
);
とやっているのですが、indmod すると
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
IOやIRQはどこからとってくればいいのでしょうか?
03/05/02 12:21ID:5kcklCyp
03/05/02 13:17ID:8SKdq5Sf
03/05/02 14:02ID:fxkN+fN8
>>185
それは、init_moduleがretun 0;以外で終了した場合のメッセージですよ。
普通、デバイスが見付からないときは -ENODEVとかでかえすでしょ?
返り値を確認汁。
ISAのデバイスでは、IOとかIRQの設定が違うと見付からないことが多いので、
insmodが、ヒントのために、IOとかIRQはどうよ? って書くことになってるだけ。
それは、init_moduleがretun 0;以外で終了した場合のメッセージですよ。
普通、デバイスが見付からないときは -ENODEVとかでかえすでしょ?
返り値を確認汁。
ISAのデバイスでは、IOとかIRQの設定が違うと見付からないことが多いので、
insmodが、ヒントのために、IOとかIRQはどうよ? って書くことになってるだけ。
189185
03/05/02 14:12ID:LZsBxbHZ03/05/02 14:25ID:fxkN+fN8
あぁ、すまん。よく読まずに答えた。USBなのね。
USBの場合は、usb_driver.probe() が NULL で帰った時がそのエラーですね。
で、probeのところでdevfs関係やるので正解です。
USBの場合は、usb_driver.probe() が NULL で帰った時がそのエラーですね。
で、probeのところでdevfs関係やるので正解です。
191login:Penguin
03/05/02 15:56ID:gUkzFRNW モニタのドライバディスクっていうのはあるんでしょうか?
当方モニタを認識できないのですが・・・。
当方モニタを認識できないのですが・・・。
03/05/02 17:25ID:MBGKHtnA
>>191
周波数や解像度を設定すれば済むだろ。
周波数や解像度を設定すれば済むだろ。
193185
03/05/02 18:18ID:LZsBxbHZ03/05/02 18:33ID:ntJpWIhT
>>193
カーネルがまずい
カーネルがまずい
195185
03/05/02 19:13ID:LZsBxbHZ >>194
了解っす。さっそく、カーネルを再コンパイルします。
了解っす。さっそく、カーネルを再コンパイルします。
196ドライバ初心者
03/05/07 14:44ID:8SxzL6UK ううう、USB器機との通信方法がよくわからん。
0x07 を送ると 0x1f を返すというUSB器機との通信でどうやるの?
キャラクタデバイス作って、それをread, write するでいいの?
0x07 を送ると 0x1f を返すというUSB器機との通信でどうやるの?
キャラクタデバイス作って、それをread, write するでいいの?
197bloom
03/05/07 15:13ID:dAUH81mE03/05/07 18:18ID:xHs+a1Ja
>>196
??? どのレベルでわからないんだろう。ユーザアプリから機器を操作するのは、
すべからくデバイスドライバを通してopen/close/read/write/ioctl 等です。
でも、0x07 を送ると 0x1fを返すとうUSB機器なら、デバドラいらないじゃん。っ
ていうか、機器もいらないじゃん。「0x07を送ると0x1fを返す」ダミーの関数
かませればいいじゃん。たぶん、その質問はなにか省略しすぎで返事がしにくい。
??? どのレベルでわからないんだろう。ユーザアプリから機器を操作するのは、
すべからくデバイスドライバを通してopen/close/read/write/ioctl 等です。
でも、0x07 を送ると 0x1fを返すとうUSB機器なら、デバドラいらないじゃん。っ
ていうか、機器もいらないじゃん。「0x07を送ると0x1fを返す」ダミーの関数
かませればいいじゃん。たぶん、その質問はなにか省略しすぎで返事がしにくい。
199ドライバ初心者
03/05/07 23:02ID:Sh0BeBWS >>198
分かりにくくてすいません。
USB機器に、データ確認コマンド(0x07のバイト列)を送る。
USB機器にデータがあるなら、(0x01)が返ってくる。
(0x01)が返ってきたのを確認したら、データ取得コマンド(0x0a)を送る。
USB機器からデータ(20バイト)が返ってくる。
上記の仕様で、USB機器にバイト列を送ったり、USB機器が返すバイト列を受け取るにはどうすればいいのかが分からないのです。
urb構造体を使うのでしょうか?
分かりにくくてすいません。
USB機器に、データ確認コマンド(0x07のバイト列)を送る。
USB機器にデータがあるなら、(0x01)が返ってくる。
(0x01)が返ってきたのを確認したら、データ取得コマンド(0x0a)を送る。
USB機器からデータ(20バイト)が返ってくる。
上記の仕様で、USB機器にバイト列を送ったり、USB機器が返すバイト列を受け取るにはどうすればいいのかが分からないのです。
urb構造体を使うのでしょうか?
03/05/07 23:47ID:ppjtoJvG
>>199
USBのドライバは書いた事ないのでアドバイス出来んが、
ttp://www.narimatsu.net/nari_page/musbio.html
にあるドライバが多分近いので、読んで見ると参考になるかも。
USBのドライバは書いた事ないのでアドバイス出来んが、
ttp://www.narimatsu.net/nari_page/musbio.html
にあるドライバが多分近いので、読んで見ると参考になるかも。
03/05/08 02:33ID:XzMiCqqd
>>199
なんか、道が遠いな。がんばれー。
> urb構造体を使うのでしょうか?
まぁ、正解なんだけど。なにしろ最終的には全部usb_submit_urb()だから...
実際には usb_bulk_msg()とか、その類を使うの。
その前に基本設計。ハンドシェイクのようなものがあるのよね。それをどうする?
ドライバを一番簡単にするなら、ドライバは、ただデータの横流しをするだけにして、
ハンドシェイクをアプリにさせたらいい。
アプリが /dev/それ をopenして
アプリが 0x07をwriteして
アプリが readでまって、0x01がかえったら
アプリが 0x0aをwriteして
アプリが readする
これが一番簡単だろ。ドライバのデバッグより、アプリのデバッグのほうが簡
単だから、ドライバを簡単にするのは意味がある。
もし、これにするなら、カーネルに標準でついてるdrivers/usb/scanner.c を
参考にしたらいい。はっきりいって、本当に横流ししかしないドライバなので、
参考にして書き直す必要スラなくて、idさえ指定すればスキャナじゃなくても
ナンデモ操作できます。おすすめ。
あ、でもclose/unloadあたりでのリソースの解放順序にバグがあるので、気を
つけてね。
なんか、道が遠いな。がんばれー。
> urb構造体を使うのでしょうか?
まぁ、正解なんだけど。なにしろ最終的には全部usb_submit_urb()だから...
実際には usb_bulk_msg()とか、その類を使うの。
その前に基本設計。ハンドシェイクのようなものがあるのよね。それをどうする?
ドライバを一番簡単にするなら、ドライバは、ただデータの横流しをするだけにして、
ハンドシェイクをアプリにさせたらいい。
アプリが /dev/それ をopenして
アプリが 0x07をwriteして
アプリが readでまって、0x01がかえったら
アプリが 0x0aをwriteして
アプリが readする
これが一番簡単だろ。ドライバのデバッグより、アプリのデバッグのほうが簡
単だから、ドライバを簡単にするのは意味がある。
もし、これにするなら、カーネルに標準でついてるdrivers/usb/scanner.c を
参考にしたらいい。はっきりいって、本当に横流ししかしないドライバなので、
参考にして書き直す必要スラなくて、idさえ指定すればスキャナじゃなくても
ナンデモ操作できます。おすすめ。
あ、でもclose/unloadあたりでのリソースの解放順序にバグがあるので、気を
つけてね。
202ドライバ初心者
03/05/08 18:46ID:01Q6DwzH203ドライバ初心者
03/05/09 19:55ID:ye3nMZo+ open,close,probe,disconnect はうまく動くようになりました。
read の実装に入ったのですが、 usb_bulk_msg で
#define RD_NAK_TIMEOUT (10*HZ)
usb_bulk_msg(dev, usb_rcvbulkpipe(dev, endpoint), buffer, 20, &partial, RD_NAK_TIMEOUT);
usb_rcvbulkpipe へ渡すパラメータの endpoint にはどんな値を渡せばいいのでしょうか?
lsusb で以下のように表示されている 2 とかでいいのでしょうか?
bEndpointAddress 0x02 EP 2 OUT
scanner.c のソースを読むと、1,2,3, のどれかの値が入るようなのですが・・・
read の実装に入ったのですが、 usb_bulk_msg で
#define RD_NAK_TIMEOUT (10*HZ)
usb_bulk_msg(dev, usb_rcvbulkpipe(dev, endpoint), buffer, 20, &partial, RD_NAK_TIMEOUT);
usb_rcvbulkpipe へ渡すパラメータの endpoint にはどんな値を渡せばいいのでしょうか?
lsusb で以下のように表示されている 2 とかでいいのでしょうか?
bEndpointAddress 0x02 EP 2 OUT
scanner.c のソースを読むと、1,2,3, のどれかの値が入るようなのですが・・・
03/05/09 23:43ID:ZjYTJvxM
03/05/10 18:30ID:+67eyGUg
207うまうま
03/05/11 02:10ID:sP9foAmw >>203
ひょっとして未公開プロトコルをハックしてlinux用にドライバ
作ってんの?
lsusbの表示について
デバイスからデータを読むためのエンドポイントは IN になって
いるはずだよ。そのようなエンドポイントがひとつしかないなら
その番号でOKだと思う。
逆に、デバイスへデータを書き込むためのエンドポイントは OUT
そのターゲットデバイスにはエンドポイントが複数あるっぽいけど、
それだったらコマンドやりとり時、どのエンドポイントが使われて
いるのか調べる必要がある。
ひょっとして未公開プロトコルをハックしてlinux用にドライバ
作ってんの?
lsusbの表示について
デバイスからデータを読むためのエンドポイントは IN になって
いるはずだよ。そのようなエンドポイントがひとつしかないなら
その番号でOKだと思う。
逆に、デバイスへデータを書き込むためのエンドポイントは OUT
そのターゲットデバイスにはエンドポイントが複数あるっぽいけど、
それだったらコマンドやりとり時、どのエンドポイントが使われて
いるのか調べる必要がある。
209ドライバ初心者
03/05/12 22:03ID:fBjjjcco >>206
組み込み用のLinuxにUSB機器をつなげてアレコレしようという計画がありまして。
ところが、社内でC言語の経験があるのは私だけ。とりあえず研究開発名目で、USBドライバを
作ってみろと白羽の矢が立ちました。
うまうまさんのアドバイスでwriteができるようになりました。ありがとうございました。
あとはreadだけです。
組み込み用のLinuxにUSB機器をつなげてアレコレしようという計画がありまして。
ところが、社内でC言語の経験があるのは私だけ。とりあえず研究開発名目で、USBドライバを
作ってみろと白羽の矢が立ちました。
うまうまさんのアドバイスでwriteができるようになりました。ありがとうございました。
あとはreadだけです。
210ドライバ初心者
03/05/15 18:21ID:QUGfuS7s read するとタイムアップになってしまう・・・。何が悪いのでしょうか。
キューのクリアとか必要ですか?
キューのクリアとか必要ですか?
03/05/16 16:21ID:yZKduc9i
初歩的な質問ですみませんが、導師のみなさま、お導きを。
write()されたデータを一時的に保持して、次のread()で保持した値を返す
ようなキャラクタデバドラがあるとします。
アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが
上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。
これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を
実現するにはどのように実装すればいいのでしょうか?
write()されたデータを一時的に保持して、次のread()で保持した値を返す
ようなキャラクタデバドラがあるとします。
アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが
上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。
これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を
実現するにはどのように実装すればいいのでしょうか?
03/05/16 16:44ID:0mzALYCZ
214212
03/05/16 19:18ID:0mzALYCZ >>213
スレッドじゃなくても、二つ以上開いたら破綻しますな。
→お手軽コース:1回だけオープンできるようにする。
→まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな?
というところで。
スレッドじゃなくても、二つ以上開いたら破綻しますな。
→お手軽コース:1回だけオープンできるようにする。
→まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな?
というところで。
215うまうま
03/05/17 03:23ID:WAKxeCTB216ドライバ初心者
03/05/18 01:04ID:2usiGwhL >>215
>readしたとき、とりあえず何バイトか読み出してる?
その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました!
今はハードが手元に無いので月曜日に試してみます。ありがとうございました。
>readしたとき、とりあえず何バイトか読み出してる?
その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました!
今はハードが手元に無いので月曜日に試してみます。ありがとうございました。
217動画直リン
03/05/18 01:11ID:pMLvChGr03/05/18 21:07ID:sDNMC/v5
猿でもわかるように書かれたデバドラ作成解説ページってある?
219ドライバ初心者
03/05/19 19:00ID:r7lftq4x >>215
タイムアウトは無くなりましたが、こんどはusb-uhci.c 内でエラーになってしまいました。
/proc/kmsg の出力は
usb-uhci.c: ENXIO c0010200, flags 0, urb de96cbe0, burb de96cbe0
usb_bulk_msg の使い方がまずいのでしょうか・・・
usb_bulk_msg(scn->dev, usb_rcvbulkpipe(scn->dev, M_READ), ibuf,
count, &partial, RD_NAK_TIMEOUT);
USBデバドラ開発に役立ちそうなページ
usb.c File Reference
http://www.atomised.org/docs/linux-2.4.19-drivers/usb_8c.html
タイムアウトは無くなりましたが、こんどはusb-uhci.c 内でエラーになってしまいました。
/proc/kmsg の出力は
usb-uhci.c: ENXIO c0010200, flags 0, urb de96cbe0, burb de96cbe0
usb_bulk_msg の使い方がまずいのでしょうか・・・
usb_bulk_msg(scn->dev, usb_rcvbulkpipe(scn->dev, M_READ), ibuf,
count, &partial, RD_NAK_TIMEOUT);
USBデバドラ開発に役立ちそうなページ
usb.c File Reference
http://www.atomised.org/docs/linux-2.4.19-drivers/usb_8c.html
03/05/19 19:13ID:Q6lDTR8l
>>218
デバドラの前に、まずはRFC2795から行ってみよう。
デバドラの前に、まずはRFC2795から行ってみよう。
03/05/19 22:53ID:808Vam9H
222ドライバ初心者
03/05/20 18:31ID:oatjLeiG >>219 は私のバグでした。
しかしながら。タイムアウトは解決しないままです。
Windows用のドライバではちゃんと読みこめているようなのですが・・・
lsusb で 下のようにでているのと関係があるのか・・・
unknown descriptor type: 05 24 00 10 01
unknown descriptor type: 04 24 02 06
unknown descriptor type: 05 24 06 00 01
unknown descriptor type: 05 24 01 03 01
しかしながら。タイムアウトは解決しないままです。
Windows用のドライバではちゃんと読みこめているようなのですが・・・
lsusb で 下のようにでているのと関係があるのか・・・
unknown descriptor type: 05 24 00 10 01
unknown descriptor type: 04 24 02 06
unknown descriptor type: 05 24 06 00 01
unknown descriptor type: 05 24 01 03 01
223山崎渉
03/05/22 01:55ID:p4opmoqv ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
224ドライバ初心者
03/05/22 16:32ID:7jvNN9yz >>222
仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。
http://north.hokkai.net/~nsawa/piece-lab/usb/20011231.html
ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ
りがとうございました。
仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。
http://north.hokkai.net/~nsawa/piece-lab/usb/20011231.html
ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ
りがとうございました。
225login:Penguin
03/05/27 12:06ID:VgmJadOg あまりにも便利なので上げさせてください
03/05/28 14:11ID:2En7vxAz
insmod するとこんなエラーが出てきたのですがどうすればいいでしょう?
couldn't find the kernel version the module was compiled for
couldn't find the kernel version the module was compiled for
227山崎渉
03/05/28 16:42ID:3t6i6zxR ∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
228login:Penguin
03/05/28 16:55ID:3qAfQe3K03/05/28 23:40ID:z1beycbb
>>226
なにをいれた? 「実はモジュールじゃない」ってときもそれ。
なにをいれた? 「実はモジュールじゃない」ってときもそれ。
230226
03/05/29 18:33ID:FeUqO3hy03/05/29 21:59ID:5gpS9IGq
232226
03/05/30 10:13ID:Mg17snq6 >>231
$file vmlinux
./vmlinux: ELF 32-bit LSB mips-2 executable, MIPS R3000_LE [bfd bug], version 1, statically linked, not stripped
$file test.o
./test.o: ELF 32-bit LSB mips-2 relocatable, MIPS R3000_LE [bfd bug], version 1, not stripped
$file vmlinux
./vmlinux: ELF 32-bit LSB mips-2 executable, MIPS R3000_LE [bfd bug], version 1, statically linked, not stripped
$file test.o
./test.o: ELF 32-bit LSB mips-2 relocatable, MIPS R3000_LE [bfd bug], version 1, not stripped
03/05/31 15:40ID:pCrUKetP
234226
03/06/02 11:33ID:O0kbkjww >>233
cc に渡すパラメータに -DCONFIG_MODVERSIONS を付け加えたら無くなりました。
ところが今度は、insmod するとこんなエラーが・・・
./test.o: unresolved symbol _gp_disp
./test.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols
_gp_disp はどこのライブラリにあるのでしょうか?
cc に渡すパラメータに -DCONFIG_MODVERSIONS を付け加えたら無くなりました。
ところが今度は、insmod するとこんなエラーが・・・
./test.o: unresolved symbol _gp_disp
./test.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols
_gp_disp はどこのライブラリにあるのでしょうか?
03/06/03 01:50ID:iocW6lsY
236コピペ
03/06/03 13:33ID:9FZ3sCry (゚∀゚) ?
Insmod が _gp_disp シンボルが未定義だと文句を言います
(゚∀゚) !
_gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。
このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。
この場合の問題の要点は、カーネル作成時の Makefile のオプションと、
カーネルモジュール作成時のオプションは同じにすべきだということです。
特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。
Insmod が _gp_disp シンボルが未定義だと文句を言います
(゚∀゚) !
_gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。
このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。
この場合の問題の要点は、カーネル作成時の Makefile のオプションと、
カーネルモジュール作成時のオプションは同じにすべきだということです。
特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。
03/06/03 13:34ID:9FZ3sCry
まあなんか知らんけどgoogleって便利ってのはわかった
意味まではわかんないけど
意味まではわかんないけど
03/06/03 14:40ID:iocW6lsY
239()
03/06/03 18:52ID:U5Cecnio Windowsで動いているUSBデバイスドライバを、Linux へ移植しようとしています。デバイスの認識、open, write, close はうまく出来ているようなのですがreadがうまく行きません。 -75 のエラーが usb_bulk_msg() から返って来ます。-EOVERFLOW のエラーのようです。
ところが、一度、Windowsに認識させてから、そのデバイスをLinux につなぎ直してreadするとうまく行きます。
何らかの初期化をしているようなのですが、Linux ではどのようにすればいいのでしょうか? sniffer Tool の出力には
0000027510:31:13>>>>>>> URB 4 going down...
0000027610:31:13-- URB_FUNCTION_CLASS_INTERFACE:
0000027710:31:13 TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
0000027810:31:13 TransferBufferLength = 00000008
0000027910:31:13 TransferBuffer = 81406fd0
0000028010:31:13 TransferBufferMDL = 00000000
0000028110:31:13
0000028210:31:13 0000:
0000028310:31:13 80
0000028410:31:13 25
0000028510:31:13 00
0000028610:31:13 00
0000028710:31:13 00
0000028810:31:13 02
0000028910:31:13 08
0000029010:31:13 00
0000029110:31:13
0000029210:31:13 UrbLink = 00000000
0000029310:31:13 RequestTypeReservedBits = 00
0000029410:31:13 Request = 20
0000029510:31:13 Value = 0000
0000029610:31:13 Index = 0000
とでていたので、usb_ctrl_msg()を使うのかと思ったのですが。
#define EPIPE32/* Broken pipe */
のエラーを返してしまいます。どうやればいいのでしょうか?
ちなみにチップは、日立の38K0です。
ところが、一度、Windowsに認識させてから、そのデバイスをLinux につなぎ直してreadするとうまく行きます。
何らかの初期化をしているようなのですが、Linux ではどのようにすればいいのでしょうか? sniffer Tool の出力には
0000027510:31:13>>>>>>> URB 4 going down...
0000027610:31:13-- URB_FUNCTION_CLASS_INTERFACE:
0000027710:31:13 TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
0000027810:31:13 TransferBufferLength = 00000008
0000027910:31:13 TransferBuffer = 81406fd0
0000028010:31:13 TransferBufferMDL = 00000000
0000028110:31:13
0000028210:31:13 0000:
0000028310:31:13 80
0000028410:31:13 25
0000028510:31:13 00
0000028610:31:13 00
0000028710:31:13 00
0000028810:31:13 02
0000028910:31:13 08
0000029010:31:13 00
0000029110:31:13
0000029210:31:13 UrbLink = 00000000
0000029310:31:13 RequestTypeReservedBits = 00
0000029410:31:13 Request = 20
0000029510:31:13 Value = 0000
0000029610:31:13 Index = 0000
とでていたので、usb_ctrl_msg()を使うのかと思ったのですが。
#define EPIPE32/* Broken pipe */
のエラーを返してしまいます。どうやればいいのでしょうか?
ちなみにチップは、日立の38K0です。
240login:Penguin
03/06/04 10:07ID:RzUG7kJc デバドラ開発超初心者です。
誰か教えてちょーだい!!
カーネルモジュールでぬるぽ等による例外が起きてoopsが出た後って
リブートしなくちゃいけないの?
rmmodするとリソースbusyと言われて出来ないし。
簡単にやり直せる方法はないのでしょうか?
kdbとかを使うと出来るのでしょうか?
小さなドライバなので出来ればprintkだけでデバッグ
済ませてしまいたいです。
誰か教えてちょーだい!!
カーネルモジュールでぬるぽ等による例外が起きてoopsが出た後って
リブートしなくちゃいけないの?
rmmodするとリソースbusyと言われて出来ないし。
簡単にやり直せる方法はないのでしょうか?
kdbとかを使うと出来るのでしょうか?
小さなドライバなので出来ればprintkだけでデバッグ
済ませてしまいたいです。
03/06/04 15:22ID:miGkoc0u
03/06/04 15:58ID:YRPx8Qpb
243240
03/06/04 18:14ID:RzUG7kJc244うまうま
03/06/04 23:56ID:yoK8ZXbv >>239
ドライバの移植?なかなかおもしろそうだね
read, writeのコマンドシーケンスは合ってる?
ひょっとして、readする前にデバイスに対し的確なコマンドを
writeしてあげないといけないのでは?
そのsnifferログは、OSから8バイトのデータをデバイスに送っている
点や、URB番号が若い点からして、USBデバイスからディスクリプタを
読み出そうとしているところと見た。それはWindowsでもLinuxでもデバイスを
繋いだらUSBホスト側が自動的に行う部分。いわゆる初期化処理。
今回のreadできない問題に関係あるとは思えないな。
ドライバの移植?なかなかおもしろそうだね
read, writeのコマンドシーケンスは合ってる?
ひょっとして、readする前にデバイスに対し的確なコマンドを
writeしてあげないといけないのでは?
そのsnifferログは、OSから8バイトのデータをデバイスに送っている
点や、URB番号が若い点からして、USBデバイスからディスクリプタを
読み出そうとしているところと見た。それはWindowsでもLinuxでもデバイスを
繋いだらUSBホスト側が自動的に行う部分。いわゆる初期化処理。
今回のreadできない問題に関係あるとは思えないな。
245239
03/06/09 11:05ID:FPzn7DZy >>244
write シーケンスの前にあるこの処理が妖しいとは思うのですが、Linux でどうやって実現したらいいのか・・・
0000037010:31:29>>>>>>> URB 7 going down...
0000037110:31:29-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
0000037210:31:29 PipeHandle = 814d7b1c
0000037310:31:29 TransferFlags = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
0000037410:31:29 TransferBufferLength = 00001000
0000037510:31:29 TransferBuffer = 8140c000
0000037610:31:29 TransferBufferMDL = 00000000
0000037710:31:29 UrbLink = 00000000
0000037810:31:29B133TN: m_Endpoint1IN.SubmitUrb status ==>
0000037910:31:290x00000103
0000038010:31:29
0000038110:31:29B133TN: B133TNDevice::Create Status
0000038210:31:290x00000000
0000038310:31:29
0000038410:31:29B133TN: Entering B133TNDevice::Device Control,
0000038510:31:29IRP: Major=0xe
0000038610:31:29 Minor=0x0 Flags=0x30
0000038710:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0
0000038810:31:29B133TN:
0000038910:31:29B133TN: Entering B133TNDevice::IOCTL_B133TN_COMMAND_OUT_Handler,
0000039010:31:29IRP: Major=0xe
0000039110:31:29 Minor=0x0 Flags=0x30
0000039210:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0
0000039310:31:29B133TN:
0000039410:31:29B133TN: FIFO ReservedDataSize=>
0000039510:31:290x00000000
0000039610:31:29
0000039710:31:29UsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL, IOCTL_INTERNAL_USB_SUBMIT_URB
0000039810:31:29
write シーケンスの前にあるこの処理が妖しいとは思うのですが、Linux でどうやって実現したらいいのか・・・
0000037010:31:29>>>>>>> URB 7 going down...
0000037110:31:29-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
0000037210:31:29 PipeHandle = 814d7b1c
0000037310:31:29 TransferFlags = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
0000037410:31:29 TransferBufferLength = 00001000
0000037510:31:29 TransferBuffer = 8140c000
0000037610:31:29 TransferBufferMDL = 00000000
0000037710:31:29 UrbLink = 00000000
0000037810:31:29B133TN: m_Endpoint1IN.SubmitUrb status ==>
0000037910:31:290x00000103
0000038010:31:29
0000038110:31:29B133TN: B133TNDevice::Create Status
0000038210:31:290x00000000
0000038310:31:29
0000038410:31:29B133TN: Entering B133TNDevice::Device Control,
0000038510:31:29IRP: Major=0xe
0000038610:31:29 Minor=0x0 Flags=0x30
0000038710:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0
0000038810:31:29B133TN:
0000038910:31:29B133TN: Entering B133TNDevice::IOCTL_B133TN_COMMAND_OUT_Handler,
0000039010:31:29IRP: Major=0xe
0000039110:31:29 Minor=0x0 Flags=0x30
0000039210:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0
0000039310:31:29B133TN:
0000039410:31:29B133TN: FIFO ReservedDataSize=>
0000039510:31:290x00000000
0000039610:31:29
0000039710:31:29UsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL, IOCTL_INTERNAL_USB_SUBMIT_URB
0000039810:31:29
246239
03/06/10 11:06ID:3w0EVlGb ttp://www.xlsoft.com/jp/products/windriver/windriver.html
ここにある、winDrive の体験版でハードを調査したところ、インターフェースが活性化されていないのが原因のようです。
usb_set_interface() を使えばいいのだろうけど、パラメータがよくわからない。
ここにある、winDrive の体験版でハードを調査したところ、インターフェースが活性化されていないのが原因のようです。
usb_set_interface() を使えばいいのだろうけど、パラメータがよくわからない。
03/06/13 16:03ID:pewsS0ej
cat /proc/bus/usb/devices で表示されるインターフェースの中から
C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=piece
E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl= 16ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece
のデバイスを活性化するにはどうすればいいのでしょうか?
C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=piece
E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl= 16ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece
のデバイスを活性化するにはどうすればいいのでしょうか?
248247
03/06/13 18:44ID:pewsS0ej ここを読んだら自己解決しますた。
USB通信プログラミングテクニック
ttp://www.picfun.com/usb00.html
USB通信プログラミングテクニック
ttp://www.picfun.com/usb00.html
249うまうま
03/06/13 22:20ID:EYuB3skO >>248
こりゃ使えるサイトだ。日本語でUSBの仕様をここまで説明したサイトって、
他にはないよきっと
>>247に質問!
「活性化」というのがよくわからないから教えてほしい。
cat /proc/bus/usb/devices で >>247のような表示がされたってことは、
すべてのPIPEがオープンされているものと思ったけど。
結局、このデバイスにはInterfaceが二つあって、USBバス上に
接続したときは Interface 0しか初期化されなかった。その状態で
Interface 1のEndpoint 0x81からread()しようとしたが、
まだPIPEがオープンされてないためできなかったということ?
こりゃ使えるサイトだ。日本語でUSBの仕様をここまで説明したサイトって、
他にはないよきっと
>>247に質問!
「活性化」というのがよくわからないから教えてほしい。
cat /proc/bus/usb/devices で >>247のような表示がされたってことは、
すべてのPIPEがオープンされているものと思ったけど。
結局、このデバイスにはInterfaceが二つあって、USBバス上に
接続したときは Interface 0しか初期化されなかった。その状態で
Interface 1のEndpoint 0x81からread()しようとしたが、
まだPIPEがオープンされてないためできなかったということ?
250login:Penguin
03/06/14 17:46ID:G+Mtao/F オイラGPLライセンスだよ〜
と表明するときに書くマクロって
どういうやつだっけ?
と表明するときに書くマクロって
どういうやつだっけ?
03/06/14 18:11ID:1HDS5RSe
MODULE_LICENSE("GPL"); のことかにゃ。
03/06/14 18:13ID:G+Mtao/F
>>251
(゚∀゚)サンクスコ
(゚∀゚)サンクスコ
253247
03/06/16 12:53ID:bzsTHCID254247
03/06/16 17:13ID:bzsTHCID 追記:cat /proc/bus/usb/devices の表示は >>247 なのですが、なぜかread
が出来ないのです。writeは出来るのですが
が出来ないのです。writeは出来るのですが
255
03/06/19 18:39ID:L1S32rBn 質問です。USB のpipe を reset するにはどうすればいいのでしょうか?
256中年ハード屋
03/06/20 00:46ID:GdrpjdbN DVDのCSS回路を設計するために、そのCSSの方法を理解するために、
LINUXのide-cdを利用したソフトを書いています。(ライセンス済みです)
それで、DVDのディスクキーや内部情報、そして、認証などは出来るのですが、
タイトルキーの取得が出来なくて困っています。
atapiを通したイトルキーの取得で何かしらのトリックがあるのでしょうか?
このようなソフトを書く場合に、通常のアプリソフトのように(いまの
やりかた)書けば動作するのですか、それともドライバーソフトのように
特殊な方法が必要なのでしょうか?
よろしくお願いします
LINUXのide-cdを利用したソフトを書いています。(ライセンス済みです)
それで、DVDのディスクキーや内部情報、そして、認証などは出来るのですが、
タイトルキーの取得が出来なくて困っています。
atapiを通したイトルキーの取得で何かしらのトリックがあるのでしょうか?
このようなソフトを書く場合に、通常のアプリソフトのように(いまの
やりかた)書けば動作するのですか、それともドライバーソフトのように
特殊な方法が必要なのでしょうか?
よろしくお願いします
257login:Penguin
03/06/20 12:05ID:w5824KTx258login:Penguin
03/07/02 02:02ID:VujfXoME (・∀・)renice!
259login:Penguin
03/07/06 23:29ID:lEtq+gmE (・∀・)renice!
260login:Penguin
03/07/08 15:11ID:nDf4bQ70 (・∀・)renice!
261linuxer
03/07/09 01:17ID:W4/RwfEH 僕はLinux のethernet のドライバを改造したいデス
ふつは通信用途に最適化されてると効きました
それはぺケットをみる目的につかいます
なにかアイディアはありますか??
ふつは通信用途に最適化されてると効きました
それはぺケットをみる目的につかいます
なにかアイディアはありますか??
03/07/09 01:22ID:9Ead9bym
tcpdump等の既存のものより詳細にみれなければ意味がない気がするけど大丈
夫なのかしら。
夫なのかしら。
263_
03/07/09 01:29ID:RRaEUYou03/07/09 01:48ID:FD/eKW7A
03/07/09 13:47ID:GtKhiIZ8
03/07/10 07:33ID:sMbuqqa1
>>265
現行のドライバならpromiscuousモードで動かしたときに
パフォーマンスがわるいな感じです
それでぺケットを取りこぼすことになってしまうので
キャプチャ用途に最適化できたらいいなと考えましたです
現行のドライバならpromiscuousモードで動かしたときに
パフォーマンスがわるいな感じです
それでぺケットを取りこぼすことになってしまうので
キャプチャ用途に最適化できたらいいなと考えましたです
03/07/10 07:41ID:oOmBMqv3
>>266
promiscuousモードだと全パケットをホストPCに転送するから
通常モードに比べて取りこぼす可能性は増える。対象のNICチップは何?
素直にintelなり3comを買えば済むだけの話かもよ。
ちなみにリアルテック(蟹)の性能がよくないのは特許を避けてるから。
現状でいいパフォーマンスのNICが欲しけりゃIntel(or元DEC)、3comの
ちょっと値が張るNICを買うしかないよ。
ドライバでどうこうできる話ではない
promiscuousモードだと全パケットをホストPCに転送するから
通常モードに比べて取りこぼす可能性は増える。対象のNICチップは何?
素直にintelなり3comを買えば済むだけの話かもよ。
ちなみにリアルテック(蟹)の性能がよくないのは特許を避けてるから。
現状でいいパフォーマンスのNICが欲しけりゃIntel(or元DEC)、3comの
ちょっと値が張るNICを買うしかないよ。
ドライバでどうこうできる話ではない
03/07/10 23:13ID:TravPTn9
>>267
リアルテクです。3COMも使ってますが、スイッチと相性が悪いな感じで
無反応になってしまう(壊れているのかもしれない)こともありますで
リアルテクでペルフォマンスがよくならないかなと想いました
ちなみに特許って具体的にはどんな特許ですか?
リアルテクです。3COMも使ってますが、スイッチと相性が悪いな感じで
無反応になってしまう(壊れているのかもしれない)こともありますで
リアルテクでペルフォマンスがよくならないかなと想いました
ちなみに特許って具体的にはどんな特許ですか?
03/07/10 23:46ID:bBVT4pXs
>>268
261と268で目的が変化してるぞ。
261と268で目的が変化してるぞ。
03/07/11 13:32ID:CtoBVZIQ
>>268
そもそもパケットモニタリングするのにスイッチングハブを使ってる時点でアウト
リピータハブ(ダムハプ)を使わないと他ホストの通信は傍受できないよ
結論
・RealtekのNICは捨てて、Intelか3Comを使え
・スイッチングハブではなく、リピータハブを使え
全然デバドラと関係ないや スレ違いどころか板違い?
そもそもパケットモニタリングするのにスイッチングハブを使ってる時点でアウト
リピータハブ(ダムハプ)を使わないと他ホストの通信は傍受できないよ
結論
・RealtekのNICは捨てて、Intelか3Comを使え
・スイッチングハブではなく、リピータハブを使え
全然デバドラと関係ないや スレ違いどころか板違い?
03/07/13 22:55ID:UrPfG9sV
272login:Penguin
03/07/14 02:37ID:imGWjqw6 age
273267=270
03/07/14 15:12ID:E/Ns9e+C >>271
すまん 267=270 なのだが 何か矛盾したこと言ったかな?
MAC層(データリンク層)の処理はNICチップで行われる。
ホストPCはMAC層の処理にはまったく関与しない。
MAC層の処理後、必要なデータだけPCIバスを介してホストPCにDMA転送する。
つまり、通常モードだと自ホスト宛かブロードキャストのパケットデータだけを
ホストPCに転送すればいいのに対し、promiscuousモードだとすべての
パケットデータを転送しなくてはならず、転送量が膨大になる。
そのため、バッファがあふれる(=データを取りこぼす)ことになりやすい。
すまん 267=270 なのだが 何か矛盾したこと言ったかな?
MAC層(データリンク層)の処理はNICチップで行われる。
ホストPCはMAC層の処理にはまったく関与しない。
MAC層の処理後、必要なデータだけPCIバスを介してホストPCにDMA転送する。
つまり、通常モードだと自ホスト宛かブロードキャストのパケットデータだけを
ホストPCに転送すればいいのに対し、promiscuousモードだとすべての
パケットデータを転送しなくてはならず、転送量が膨大になる。
そのため、バッファがあふれる(=データを取りこぼす)ことになりやすい。
274268
03/07/15 03:30ID:Yac3cQfq スイッチはL3スイッチでポトミラリング機能がありますよ
ただ3COMのNICでも限界があるとですがぎりぎりまでぺケットの
モニタ用に最適化したいと思いましたです
リアルテクの話は忘れてください ふつはバッファも通信用に
チュニングすれて確保してると思ったけどぺケットをモニタするときは
受け取るだけだから ドライバで受信用のバッファを多めに
できたらいいなと思ったよ でもどうやったらいいか分らないよ
ヘルプしてください
ただ3COMのNICでも限界があるとですがぎりぎりまでぺケットの
モニタ用に最適化したいと思いましたです
リアルテクの話は忘れてください ふつはバッファも通信用に
チュニングすれて確保してると思ったけどぺケットをモニタするときは
受け取るだけだから ドライバで受信用のバッファを多めに
できたらいいなと思ったよ でもどうやったらいいか分らないよ
ヘルプしてください
275山崎 渉
03/07/15 11:17ID:2JhhXBQM__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
276login:Penguin
03/07/15 12:07ID:Fo16Kpwc (・∀・)renice!
277login:Penguin
03/07/22 11:30ID:6WQ9WMDa (・∀・)renice!
278login:Penguin
03/07/25 12:52ID:NH3LXVfX (・∀・)renice!
279login:Penguin
03/07/30 12:07ID:cPdgkLk2 (・∀・)renice!
280ぼるじょあ ◆yBEncckFOU
03/08/02 05:04ID:GfRe8vK7 ∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
281login:Penguin
03/08/02 10:27ID:2rmp9gin (・∀・)renice!
282login:Penguin
03/08/08 11:54ID:mg5o8ebS (・∀・)renice!
283login:Penguin
03/08/13 12:30ID:pfCYHBFY (・∀・)renice!
03/08/14 22:31ID:EZZe4dzO
$> cd /pub
$> more beer
$> more beer
03/08/14 22:44ID:EZZe4dzO
$> man woman
$> Segmentaion fault (core dumped)
$> Segmentaion fault (core dumped)
286山崎 渉
03/08/15 22:51ID:dil3w4kp (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
287login:Penguin
03/08/15 23:47ID:GfNK1qbf (・∀・)renice!
288login:Penguin
03/08/16 15:04ID:rNtMNMvg (・∀・)renice!
289login:Penguin
03/08/25 09:46ID:+hXUD3jL (・∀・)renice!
290login:Penguin
03/09/02 21:16ID:1mo12GKS insmod xxx.oってことはドライバのソースはどんなに大きくてもxxx.cの1っこだけじゃないとだめなの?
03/09/02 21:20ID:88sqYoXe
>>1は、ママンでもファックしてろや!hahahahahahaaaaaaaaaaaaaa!
03/09/02 22:18ID:qo69XMHR
03/09/03 08:04ID:CuYcG2U3
>>290
Cファイルをインクルードすればいいだろ。
Cファイルをインクルードすればいいだろ。
03/09/03 11:30ID:4cm8kGPF
>>293
よりによって一番最悪な答えですね先生
よりによって一番最悪な答えですね先生
03/09/03 16:47ID:iWz7WMbL
04/01/07 22:36ID:ui3n7e6w
だいぶ下がってますが、
2.6 と 2.4 のドライバ記述って何か変りました?
2.6 まだインストしてないので報告キボンヌ・・・
2.2 -> 2.4 程は変ってないのかなー?
2.6 と 2.4 のドライバ記述って何か変りました?
2.6 まだインストしてないので報告キボンヌ・・・
2.2 -> 2.4 程は変ってないのかなー?
297login:Penguin
04/01/16 18:02ID:ZUOtu/O9 PCIのデバイスドライバを作成していますが、
全くできません。
less /proc/iomemで書かれているアドレスで
read、write関数を使って書いたり、読んだりしてもだめです。
何がいけないんでしょうか?
全くできません。
less /proc/iomemで書かれているアドレスで
read、write関数を使って書いたり、読んだりしてもだめです。
何がいけないんでしょうか?
04/01/16 19:15ID:JS8EwlnL
とりあえず、lspci -vvv を晒してみたらどうでしょう。
もちろんデバイス指定でね。
それを見て私が答えられるかどうかはまた別の話ですけど。
もちろんデバイス指定でね。
それを見て私が答えられるかどうかはまた別の話ですけど。
299login:Penguin
04/01/16 19:52ID:ZUOtu/O9 lspci -vvvで次のような表示になりました。
00:11.0 Class ff00: Altera Corporation: Unknown device 1998 (rev 07)
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 16
Region 0: Memory at dffe0000 (32-bit, non-prefetchable) [size=64K]
00:11.0 Class ff00: Altera Corporation: Unknown device 1998 (rev 07)
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 16
Region 0: Memory at dffe0000 (32-bit, non-prefetchable) [size=64K]
300298
04/01/16 20:57ID:JS8EwlnL FPGAですね。
私もそんなに知っているわけではないので、
あまりあてにはしないで欲しいのですけれど…
lspciの結果は特に変なところは無いと思います。
Class ff00はどのクラスにも属さないと言うことだと思うのでちょっと気にはなりますが、
読み書きぐらいはできるでしょうね、きっと。
だとすると、あとはドライバのソースでチョンボがあるか
FPGAの中で書きこみ禁止になっているとかですかね。
FPGAにどんなipが載っているのか分からないので、あくまで推測ですけど。
あんまり力になれなくてごめんね。
私もそんなに知っているわけではないので、
あまりあてにはしないで欲しいのですけれど…
lspciの結果は特に変なところは無いと思います。
Class ff00はどのクラスにも属さないと言うことだと思うのでちょっと気にはなりますが、
読み書きぐらいはできるでしょうね、きっと。
だとすると、あとはドライバのソースでチョンボがあるか
FPGAの中で書きこみ禁止になっているとかですかね。
FPGAにどんなipが載っているのか分からないので、あくまで推測ですけど。
あんまり力になれなくてごめんね。
04/01/18 02:27ID:+zT3hNOG
>>298
read/writeのかわりに
ioremap_nocache()で対象アドレスのページを取得して、
ポインタで直接参照してみたら?
よみたい物理アドレスが
(unsigned int) p_adr
だとしたら
unsigned char p_read(unsigned int p_adr){
unsigned int v_page,v_offset;
unsigned char ret;
v_offset=p_adr&0x0fff;
v_page=ioremap_nocache(p_adr&0xfffff000, 0x1000);
ret=*((unsigned char *)(v_page + v_offset));
iounmap(v_page);
return (ret);
}
適当だけどこんな感じで。ページサイズが4K決め打ちだけど。
read/writeのかわりに
ioremap_nocache()で対象アドレスのページを取得して、
ポインタで直接参照してみたら?
よみたい物理アドレスが
(unsigned int) p_adr
だとしたら
unsigned char p_read(unsigned int p_adr){
unsigned int v_page,v_offset;
unsigned char ret;
v_offset=p_adr&0x0fff;
v_page=ioremap_nocache(p_adr&0xfffff000, 0x1000);
ret=*((unsigned char *)(v_page + v_offset));
iounmap(v_page);
return (ret);
}
適当だけどこんな感じで。ページサイズが4K決め打ちだけど。
302login:Penguin
04/01/18 02:28ID:+zT3hNOG あ>>299のマチガイだ。
04/01/19 07:32ID:kPFQP2Tn
PCIバスアナライザで観測しながらアクセスしてみそ
04/01/22 14:27ID:O8v9hJ5s
305login:Penguin
04/01/28 10:42ID:N5b+GE5n マジレスすれば
ロジアナでPCIバスを観測するか、PCIバスアナライザを使うか
どっちかしないと、PCIデバイス/ドライバの開発は無理だろう
ロジアナでPCIバスを観測するか、PCIバスアナライザを使うか
どっちかしないと、PCIデバイス/ドライバの開発は無理だろう
04/01/28 12:46ID:OnT2yC/X
んなこたーない!
297 が FPGA開発を同時にやってるならまだしも・・・
あったほうが楽なのは確かだが、無理ではない。
ハード屋さんはバスレベルで確認して提出するはず。
read/write 出来ないのはドライバの不具合。
>>297 は pci_find_device 関数など、基本から勉強したほうがよさそう。
297 が FPGA開発を同時にやってるならまだしも・・・
あったほうが楽なのは確かだが、無理ではない。
ハード屋さんはバスレベルで確認して提出するはず。
read/write 出来ないのはドライバの不具合。
>>297 は pci_find_device 関数など、基本から勉強したほうがよさそう。
307305
04/01/28 15:27ID:N5b+GE5n 無理ではないって言っても、そんなマゾプレイみたいなコトしたくないよ
目隠しして半田付けしろっていうのに近いな
PCIのロジックって複雑だから、実機でバグが露呈するのはよくあること
430FXで動いたからって 875Pでは動かないとか余裕であるよ
市場に流通してるチップセットすべてで確認しないと市販は無理
名の通った枯れてるチップならまだしも、実機の動作チェックもしてない
FPGAの回路をつかったPCIカードなら、最初から疑ってかからなきゃダメだと思います
> ハード屋さんはバスレベルで確認して提出するはず。
PCIバスの全パターンをシミュレーションできる検証ツールってすごく高いよ
特にFPGAの開発のために検証環境買うのはコストにあわない
PCIバスアナライザがある環境で実機試験して、少しずつ直すほうが早くて安い
目隠しして半田付けしろっていうのに近いな
PCIのロジックって複雑だから、実機でバグが露呈するのはよくあること
430FXで動いたからって 875Pでは動かないとか余裕であるよ
市場に流通してるチップセットすべてで確認しないと市販は無理
名の通った枯れてるチップならまだしも、実機の動作チェックもしてない
FPGAの回路をつかったPCIカードなら、最初から疑ってかからなきゃダメだと思います
> ハード屋さんはバスレベルで確認して提出するはず。
PCIバスの全パターンをシミュレーションできる検証ツールってすごく高いよ
特にFPGAの開発のために検証環境買うのはコストにあわない
PCIバスアナライザがある環境で実機試験して、少しずつ直すほうが早くて安い
04/01/28 18:36ID:XM3JMqvR
04/01/28 19:09ID:ceOaOw14
> そーゆーのはハード屋さんの仕事じゃないかと。
おれもそう思う。
でも、実際はソフト組み込んだらなんかおかしくて、
実は結局、微妙にハードが悪かったなんて事は良くある話だね。
きっと >>305 は苦い思いをしたんだろうよ。
おれもそう思う。
でも、実際はソフト組み込んだらなんかおかしくて、
実は結局、微妙にハードが悪かったなんて事は良くある話だね。
きっと >>305 は苦い思いをしたんだろうよ。
04/01/29 18:47ID:ci1wDtTm
>実は結局、微妙にハードが悪かったなんて事は良くある話だね。
ハード絡みやってりゃ必ずあるね。
慣れてくればハード、ソフトどっちが悪いか何となくわかるようになるけど。
制御チップ動かす時なんかはオシロ、ロジアナの出番が増える。
さすがに PCI制御用FPGAまで計測器突っ込んだ亊はないけどね・・・
そこまで行くと スレ違いですね >> 307
ハード絡みやってりゃ必ずあるね。
慣れてくればハード、ソフトどっちが悪いか何となくわかるようになるけど。
制御チップ動かす時なんかはオシロ、ロジアナの出番が増える。
さすがに PCI制御用FPGAまで計測器突っ込んだ亊はないけどね・・・
そこまで行くと スレ違いですね >> 307
311307
04/01/30 07:19ID:tIkj6Ynv 私はPWBAからASIC/FPGA デバイスドライバ アプリ まで全部自分で開発する
ある意味何でも屋です
FPGAの検証を実機でやるときにデバイスドライバを作ってるはずだから
バスレベルで動作検証済なら、そのとき使ったドライバをハード屋さんから
もらってくればいいんだと思います
もちろんLinuxじゃない別のOSで検証してる場合もあるだろうけど
今の時代はLinuxでやってるケースがほとんどではないかなぁ
Linuxは
1. ソースが公開されてて、ドキュメントも多くドライバ書くのが楽
2. CDからブートしてRAMDISKだけで動くシステムを簡単に作れる
等の利点があって、特に2が重要
PCIバスのハードのデバッグだとしばしばフリーズするので
正しくshutdownしないままリセットすることが頻発する。
winだろうがlinuxだろうがHDDにOSが入ってるシステムだと、
リセット連発していると、次の起動時に時間がかかるし
そのうちHDDの内容が不整合を起こしてくる。
1CD ramdiskオンリー システムだと、気軽にリセットできて楽なんだ。
まぁlinuxじゃなくてFreeBSDでもいいんだけど。
私は5〜6年くらい前はFreeBSD(2.x/3.xの時代)でPCIカードのハードのデバグ
やってたけど、今世紀に入ってからLinux(2.2の頃から)でやるようになった。
時代の流れで、商品としてlinuxへの対応が必要ってことになったので
最初からlinux用のドライバ書いておけば後が楽になるからね。
スレ違いだったかな
駄文失礼
ある意味何でも屋です
FPGAの検証を実機でやるときにデバイスドライバを作ってるはずだから
バスレベルで動作検証済なら、そのとき使ったドライバをハード屋さんから
もらってくればいいんだと思います
もちろんLinuxじゃない別のOSで検証してる場合もあるだろうけど
今の時代はLinuxでやってるケースがほとんどではないかなぁ
Linuxは
1. ソースが公開されてて、ドキュメントも多くドライバ書くのが楽
2. CDからブートしてRAMDISKだけで動くシステムを簡単に作れる
等の利点があって、特に2が重要
PCIバスのハードのデバッグだとしばしばフリーズするので
正しくshutdownしないままリセットすることが頻発する。
winだろうがlinuxだろうがHDDにOSが入ってるシステムだと、
リセット連発していると、次の起動時に時間がかかるし
そのうちHDDの内容が不整合を起こしてくる。
1CD ramdiskオンリー システムだと、気軽にリセットできて楽なんだ。
まぁlinuxじゃなくてFreeBSDでもいいんだけど。
私は5〜6年くらい前はFreeBSD(2.x/3.xの時代)でPCIカードのハードのデバグ
やってたけど、今世紀に入ってからLinux(2.2の頃から)でやるようになった。
時代の流れで、商品としてlinuxへの対応が必要ってことになったので
最初からlinux用のドライバ書いておけば後が楽になるからね。
スレ違いだったかな
駄文失礼
04/02/03 23:12ID:j9rA+N1w
>駄文失礼
気にしなくていいぜ。(w
気にしなくていいぜ。(w
313login:Penguin
04/02/09 07:11ID:7h6uvjnn すいません、どうしようもない質問なんですが、
実験的にカーネルパニックを発生させるドライバを作るのには
どうすればよいでしょうか?
カーネル関数panic()を使っても
ハングするだけでパニックしないんです。。。
どうか教えてください。
実験的にカーネルパニックを発生させるドライバを作るのには
どうすればよいでしょうか?
カーネル関数panic()を使っても
ハングするだけでパニックしないんです。。。
どうか教えてください。
04/02/09 20:13ID:oe9mNV77
このスレは俺に勇気をくれた。
04/02/10 00:02ID:0xm4A1oM
04/02/10 00:52ID:4iNUE3rF
>>313->panic();
317login:Penguin
04/02/10 21:13ID:WwFCucZO >>315−316
返信ありがとうございます!
単純にパニックするよりoops画面が表示するようにしたいのです。
mmapあたりをいじくるドライバを作れば、
oops画面を表示させることは可能ですか?
返信ありがとうございます!
単純にパニックするよりoops画面が表示するようにしたいのです。
mmapあたりをいじくるドライバを作れば、
oops画面を表示させることは可能ですか?
319login:Penguin
04/02/11 00:21ID:QfDGoor4 >>318
似たようなので、
x=0;
x=x/x;
ってのをやってみたのですがダメですた。
やっぱLinuxって頑強だと思いますた。
mmapも見てみたらカーネル空間でなく補助記憶空間に
マップするだけのようですし・・・
アドレス例外でoopsできるような方法とかあるのですかね??
似たようなので、
x=0;
x=x/x;
ってのをやってみたのですがダメですた。
やっぱLinuxって頑強だと思いますた。
mmapも見てみたらカーネル空間でなく補助記憶空間に
マップするだけのようですし・・・
アドレス例外でoopsできるような方法とかあるのですかね??
04/02/11 17:17ID:ViS2X9Xm
Oopsとpanicを混同しているような気がしないでもない。
321login:Penguin
04/02/12 00:21ID:9Bh5Rhh+04/02/14 07:34ID:kX0ZpYOB
linuxはsolarisみたいにクラッシュダンプ取れますか??
04/02/16 00:01ID:dUYGf/LZ
04/02/19 02:35ID:tYIYueC9
Linuxでのデバイス・ノード管理は現在
従来の/dev以下のデバイス・ノードファイル、devfs、udevが
存在しているようですが、デバイスドライバを書くような
デバドラ開発者にはこの状態は影響するのでしょうか?
従来の/dev以下のデバイス・ノードファイル、devfs、udevが
存在しているようですが、デバイスドライバを書くような
デバドラ開発者にはこの状態は影響するのでしょうか?
325login:Penguin
04/02/19 10:34ID:iwEBqmwA 私は従来の/dev以下のデバイス・ノードファイルを使ってます
devfsに対応するのも簡単だけど優先度低いから先送り
devfsに対応するのも簡単だけど優先度低いから先送り
04/02/24 22:37ID:BGHqYIMS
modpostについて詳しく解説している文書をご存知でしたら教えて下さい。
04/03/17 23:57ID:P4QfZyWd
データシートをどうやって手に入れるか
それが問題だ
それが問題だ
04/03/18 10:56ID:WBeyRceU
何のデータシート?
329login:Penguin
04/04/08 16:25ID:E32BiKCa mmapについて質問させてください。
メモリデバイスをmmapするとき、ページサイズを4096Byteとした場合、
mmapされたデバイスの先頭からの"物理アドレス"と
mmapしたプロセスのデバイスに割り当てられた"仮想アドレス"の
下位12bit(2^12 = 4096)は一致するのでしょうか?
mmapではプロセスの仮想空間にページサイズ単位で
ファイルやデバイスを割り当てることが出来るわけですよね。
ページサイズが関係してくると言うことはMMUのようなものが
作用して、この割り当てを管理しているのですよね。
(あるいはMMUそのものなんですか?そこが分かってないのですが)
もしも、MMUの管理下にあるならば、実空間と仮想空間のアドレスの
下位12bitは一致するはずです。
MMUはページサイズ以下のアドレスを知らないはずですから。
ここまでは私の理解に間違えはないですよね。
でも、mmapが実際にどんな風に動いているか良く分からないので、
上のような疑問が沸いてしまったのです。
どなたかお分かりいになる方がいましたら教えてください。
メモリデバイスをmmapするとき、ページサイズを4096Byteとした場合、
mmapされたデバイスの先頭からの"物理アドレス"と
mmapしたプロセスのデバイスに割り当てられた"仮想アドレス"の
下位12bit(2^12 = 4096)は一致するのでしょうか?
mmapではプロセスの仮想空間にページサイズ単位で
ファイルやデバイスを割り当てることが出来るわけですよね。
ページサイズが関係してくると言うことはMMUのようなものが
作用して、この割り当てを管理しているのですよね。
(あるいはMMUそのものなんですか?そこが分かってないのですが)
もしも、MMUの管理下にあるならば、実空間と仮想空間のアドレスの
下位12bitは一致するはずです。
MMUはページサイズ以下のアドレスを知らないはずですから。
ここまでは私の理解に間違えはないですよね。
でも、mmapが実際にどんな風に動いているか良く分からないので、
上のような疑問が沸いてしまったのです。
どなたかお分かりいになる方がいましたら教えてください。
04/04/08 17:57ID:/VjqMrH1
>>329
つ[ mmap.c ]
つ[ mmap.c ]
331login:Penguin
04/04/09 00:53ID:E9wQ2At3 いいなこのスレ
04/04/09 00:58ID:ImS0ZAox
>>330
ha?
ha?
04/04/09 00:59ID:ImS0ZAox
あぁソース嫁ってことかw
04/04/09 14:52ID:8RpqlllW
04/04/09 15:39ID:dsP5+/oo
2次キャッシュを UBS mem に格納して使いたし。可能?
04/04/09 21:34ID:/keZpBhh
>>335
CPUの2次キャッシュをUSBメモリにやらせるってこと?
CPUの2次キャッシュをUSBメモリにやらせるってこと?
337login:Penguin
04/04/10 01:41ID:04yJkWho AGE
338login:Penguin
04/04/13 23:49ID:bzoEXS/o USBのデバイスドライバ作る時のTIPSを教えてください
04/04/14 15:26ID:XimV19c+
デバイスを破壊出来るデバイスドライバーの作り方教えてください
04/04/14 23:18ID:QKI6oVKA
>>339
1.どこからかゴルフのドライバーを手に入れる。
2.ドライバーのフェイスにデバイスを貼り付ける(ガムテープでも可)
しかる後にドライバーを振りかぶり、路面、ブロック塀etc.にぶつけること。
1.どこからかゴルフのドライバーを手に入れる。
2.ドライバーのフェイスにデバイスを貼り付ける(ガムテープでも可)
しかる後にドライバーを振りかぶり、路面、ブロック塀etc.にぶつけること。
04/04/15 10:49ID:D/fT1Zhi
>>340
( ´д)ヒソ(´д`)ヒソ(д` )
( ´д)ヒソ(´д`)ヒソ(д` )
04/04/19 20:10ID:TjHP8JDs
04/04/27 21:12ID:ftQXOuAJ
v2.6.x 用の module (.ko) の作り方ってどっかに落ちてませんか?
v2.4.x だと gcc -c するだけで insmod できるイメージができましたが、
v2.6.x だとなんか後工程があるんですよね?
v2.4.x だと gcc -c するだけで insmod できるイメージができましたが、
v2.6.x だとなんか後工程があるんですよね?
344login:Penguin
04/04/27 21:18ID:VEIU93yI04/04/28 09:36ID:r7A4ZD5z
04/04/29 22:03ID:ugZV/Avt
>>344
CDDのトレイを開け閉めする位ならioctlで……
CDDのトレイを開け閉めする位ならioctlで……
347login:Penguin
04/05/05 09:59ID:IcDQ6/Fz v2.4でUSBキーボードドライバにRAWレベルアクセスする方法知りませんか?
usb/usbkbd.cを単品でモジュール化してみたけど、プログラムからのアクセス
方法がわからない・・・
usb_register時にマイナーバージョンの情報を登録してないみたいだけど
デバイスファイルでアクセスしようと思うと無理なのかな〜・・・
usb/usbkbd.cを単品でモジュール化してみたけど、プログラムからのアクセス
方法がわからない・・・
usb_register時にマイナーバージョンの情報を登録してないみたいだけど
デバイスファイルでアクセスしようと思うと無理なのかな〜・・・
348login:Penguin
04/07/17 17:55ID:z93SFsgN 落ちそう・・・見込みなさそうだけど上げ
349login:Penguin
04/07/18 17:33ID:qhsm/Ia2350login:Penguin
04/07/27 03:02ID:AwmCdxXPMoz2chで見てると
レスがだんだん右にずれていくます。
351login:Penguin
04/07/27 03:08ID:AwmCdxXPUSBに2台のWebカメラをつなげてまちゅが
May 30 08:31:05 localhost kernel: usb-uhci.c: interrupt,status 3, frame# 1728
しばらく動いた後に/var/log/messageに出力されてカメラがハングしてちまいます。
USBのデバイスドライバは何を言ったのでしょうか?おちえてください。
04/07/27 03:23ID:7ve9Hskt
>>351
要はエラーが起きたのですね。それ以上あまり解析のタシにはなりません。
status 3 ってのは、割り込みが起きて、IOC と Error が立っていたんです。
# IOCの方は、割り込みを発生する機能なので、エラーじゃないですが。
要はエラーが起きたのですね。それ以上あまり解析のタシにはなりません。
status 3 ってのは、割り込みが起きて、IOC と Error が立っていたんです。
# IOCの方は、割り込みを発生する機能なので、エラーじゃないですが。
353login:Penguin
04/08/02 14:39ID:QD1yhPkc チップセットのドライバって具体的にはどんなことやってるの?
354login:Penguin
04/08/02 16:42ID:4u8OC/CN すごく恥かしいあんなことやこんなこと
355login:Penguin
04/08/02 17:48ID:Wbtl3uph >>354
激しく気になります。
激しく気になります。
04/08/03 23:29ID:HnnAhZGX
突然ですが、デバドラのioctlからpollやselectって呼べるかどなたか知ってますか?
pollやselectの引数の構造体に何を入れていいのかわかりません。
pollやselectの引数の構造体に何を入れていいのかわかりません。
04/08/03 23:47ID:0P3Qaw2+
>>356
ioctlのハンドラからsys_selectとか呼びたいって事ですか?
呼べないことはないと思うけど…
なんでそんな変な事をする必要があるのか興味がありますな。
引数は普通にselectに食わせているものを同じように渡せば良いはず。
ioctlのハンドラからsys_selectとか呼びたいって事ですか?
呼べないことはないと思うけど…
なんでそんな変な事をする必要があるのか興味がありますな。
引数は普通にselectに食わせているものを同じように渡せば良いはず。
04/08/04 09:37ID:NoJQortH
>>357
3つのCPUおよびOSがある組込み系のデバドラを考えてます。
普通はioctlやselectをモジュール側に個別に書くのでしょうが、
それだとダメみたいです。デバドラ側で一括して処理を行うようにしないといけません。
ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を
考えてます。なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。
3つのCPUおよびOSがある組込み系のデバドラを考えてます。
普通はioctlやselectをモジュール側に個別に書くのでしょうが、
それだとダメみたいです。デバドラ側で一括して処理を行うようにしないといけません。
ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を
考えてます。なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。
04/08/04 10:00ID:H7hK0Jjq
>>358
>ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を考えてます。
ちょっと待てよ、そこで言ってるモジュール側とデバイス側の区別がわからないのだが?
>ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を考えてます。
ちょっと待てよ、そこで言ってるモジュール側とデバイス側の区別がわからないのだが?
04/08/04 10:24ID:AG/Dol7k
一般に、デバドラ内部からシステムコールやライブラリ関数は呼べないよ。
書いてあることだけじゃいまいち要領を得ないが、taskletなりtask_queueなりを
自分で管理して、カーネルのスケジューラに登録するのが常套手段だ。
カーネルスケジューラはは2.2系 2.4系 2.6系で大きく異なるから
各バージョンすべてで動作する共通コードを書くのは結構大変
泣ける マジで
書いてあることだけじゃいまいち要領を得ないが、taskletなりtask_queueなりを
自分で管理して、カーネルのスケジューラに登録するのが常套手段だ。
カーネルスケジューラはは2.2系 2.4系 2.6系で大きく異なるから
各バージョンすべてで動作する共通コードを書くのは結構大変
泣ける マジで
04/08/04 14:21ID:NoJQortH
>>359
モジュール側とはライブラリのソースで、デバイス側とはデバイスドライバのソースです。
表現が下手ですね。文章もあまりうまくないのでごめんなさい。
ライブラリ側では、whileループでバッファの中身をチェックしています。
バッファが空になるまで、プロセスを眠らすことがそもそもの目的です。
モジュール側とはライブラリのソースで、デバイス側とはデバイスドライバのソースです。
表現が下手ですね。文章もあまりうまくないのでごめんなさい。
ライブラリ側では、whileループでバッファの中身をチェックしています。
バッファが空になるまで、プロセスを眠らすことがそもそもの目的です。
04/08/04 14:35ID:NoJQortH
>>360
ありがとうございます。げえ、かなり大変そうですね。。。かなり萎えてきました。
今いろいろいじくり回してて、デバドラのioctlのfile構造体のメンバf_opを、
poll(select)の関数を指すようにしてやっています。
そのために、ioctlとは別のfile_operation構造体をつくってそこでpollを宣言しました。
ありがとうございます。げえ、かなり大変そうですね。。。かなり萎えてきました。
今いろいろいじくり回してて、デバドラのioctlのfile構造体のメンバf_opを、
poll(select)の関数を指すようにしてやっています。
そのために、ioctlとは別のfile_operation構造体をつくってそこでpollを宣言しました。
04/08/04 14:40ID:+wO9AS9w
>>356 の言う「モジュール」=「ライブラリのソース」は「ユーザランドの
アプリケーションが使うライブラリ」かな?
アプリケーションが使うライブラリ」かな?
04/08/04 15:22ID:NoJQortH
はい。そうです。
わかりにくくてすいません。
わかりにくくてすいません。
04/08/05 00:11ID:UYjeE7ll
>>362
なんか、あさっての方向に走ってないか?
- poll() したいなら poll() を実装する
- イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て
やりたいことを確認したほうがいいぞ。
- なにをどう待ちたい?
- 付加的にやりたいことは何?
後者は、
> なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。
がわからんかったって話。
なんか、あさっての方向に走ってないか?
- poll() したいなら poll() を実装する
- イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て
やりたいことを確認したほうがいいぞ。
- なにをどう待ちたい?
- 付加的にやりたいことは何?
後者は、
> なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。
がわからんかったって話。
04/08/05 00:11ID:UYjeE7ll
あうあ
- - イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て
+ - イベント待ちをしたいなら、read()だろうがioctl()だろうがかまわず待て
- - イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て
+ - イベント待ちをしたいなら、read()だろうがioctl()だろうがかまわず待て
04/08/05 00:45ID:CMe3HEND
大丈夫か!? >>364よ!!
がんばれよ! 見守ってるからさ!
がんばれよ! 見守ってるからさ!
368login:Penguin
04/08/05 12:51ID:dMydmJ+4 書いてあることだけじゃいまいち要領を得ないが
アクセス待ち、アクセス完了まで時間がかかる、排他処理が必要である
ようなデバイスで
・ノンブロックでアクセス処理したい
・複数のプロセスから同時にアクセスされる状況に対応したい
・複数のデバイスを一元的に管理したい (リソース管理など)
こんな条件だと勝手に仮定すると
たしかに大きいデバイスドライバを書いて、そこですべて管理するのも
ひとつの解決法ではある。
でもユーザランドでスレッド/子プロセスを使って、ノンブロック処理を
実装することも出来るし、唯一の解でもない。
まぁ、情報が出せないというよりは、状況を理解してないので
うまく説明できないって感じなので、もうちょっと頭を使って
問題を整理してから、もう一回質問するがよかろう
アクセス待ち、アクセス完了まで時間がかかる、排他処理が必要である
ようなデバイスで
・ノンブロックでアクセス処理したい
・複数のプロセスから同時にアクセスされる状況に対応したい
・複数のデバイスを一元的に管理したい (リソース管理など)
こんな条件だと勝手に仮定すると
たしかに大きいデバイスドライバを書いて、そこですべて管理するのも
ひとつの解決法ではある。
でもユーザランドでスレッド/子プロセスを使って、ノンブロック処理を
実装することも出来るし、唯一の解でもない。
まぁ、情報が出せないというよりは、状況を理解してないので
うまく説明できないって感じなので、もうちょっと頭を使って
問題を整理してから、もう一回質問するがよかろう
369login:Penguin
04/10/29 11:01:48ID:rDkd0V/P lsusbだとデバイス名が把握できてるということは、
個々のドライバ部分に問題があって動かないという風に考えてもいいでしょうか?
linux-2.6において
usbcore
uhci_hcd
cdc_acm
という三つのドライバにより動かしたいハードウェアがあるんですが、
cdc_acmをロードしてもうんともすんとも言いません
個々のドライバ部分に問題があって動かないという風に考えてもいいでしょうか?
linux-2.6において
usbcore
uhci_hcd
cdc_acm
という三つのドライバにより動かしたいハードウェアがあるんですが、
cdc_acmをロードしてもうんともすんとも言いません
04/10/31 20:53:26ID:fFX2rhTr
.netとかjavaみたいなバイトコードなドライバーでハードウェア
を制御する環境を作るって可能ですか?
を制御する環境を作るって可能ですか?
04/10/31 21:36:34ID:uzVMAm7i
04/11/01 02:36:54ID:dfNRJQ4+
>>371
JITなりリコンパイラーなり方法はあるだろうし、全てのドライバーが
速度を必要とするわけじゃないと考えたわけで。部分的にでも・・・と
何にしてもバイナリの非互換性がどうにかならんかなぁと。
カーネル毎にコンパイルはダリ
JITなりリコンパイラーなり方法はあるだろうし、全てのドライバーが
速度を必要とするわけじゃないと考えたわけで。部分的にでも・・・と
何にしてもバイナリの非互換性がどうにかならんかなぁと。
カーネル毎にコンパイルはダリ
04/11/01 06:48:36ID:IqBdvM7D
>>370
Kernelから呼び出すような仕組みにしても、
Javaで言うnativeなのが無いと駄目じゃない?
レジスタとかメモリ領域さわれないし。
結局そこ(nativeなモジュール)で非互換性が出る気がする。
Kernelから呼び出すような仕組みにしても、
Javaで言うnativeなのが無いと駄目じゃない?
レジスタとかメモリ領域さわれないし。
結局そこ(nativeなモジュール)で非互換性が出る気がする。
04/11/01 15:55:17ID:lkrLxjNC
>>373
そのへんはバイトコードインタプリタで抽象化すればいいのではないかと。
PCIあたりならかなりの所まで出来そうな気がするなあ。
そういやOpenFirmwareなんてのがあったのう…あれはForthだっけ?
そのへんはバイトコードインタプリタで抽象化すればいいのではないかと。
PCIあたりならかなりの所まで出来そうな気がするなあ。
そういやOpenFirmwareなんてのがあったのう…あれはForthだっけ?
04/11/01 22:34:23ID:dfNRJQ4+
04/11/02 12:28:29ID:lgEgFui9
カーネルのバージョンによってカーネルが持つ構造体が微妙に違うことがよくある。
(メンパが増えてるとか)
現状のinsmodによるデバイスドライバのダイナミックリンクは
その手の構造体の違いを解決してくれないので、原則的に
カーネルバージョンに依存したドライバしかリンクできない。
強制的に違うバージョンのドライバをinsmodすることも可能だが
正常に動く保証はない。たまたま動くことはあるけれども。
(メンパが増えてるとか)
現状のinsmodによるデバイスドライバのダイナミックリンクは
その手の構造体の違いを解決してくれないので、原則的に
カーネルバージョンに依存したドライバしかリンクできない。
強制的に違うバージョンのドライバをinsmodすることも可能だが
正常に動く保証はない。たまたま動くことはあるけれども。
04/11/02 18:53:41ID:chaRCRYs
まあソース見て「あーこれなら動くな」と思ったら
迷わず-f
迷わず-f
04/11/03 13:41:27ID:1PHyje+L
ドライバのソースがあるならリビルドする方がいいような気がするのう。
いっぱいコンパイラに怒られたりすると直す気が失せるが…
いっぱいコンパイラに怒られたりすると直す気が失せるが…
04/11/06 23:30:41ID:9J0OxvoL
>>376
なるほど。JAVA云々無しにしてもやっぱカーネルとは別離すべきなのかも。
いや、マイクロ・モノリシックの話じゃなくて仕様的なものを。moduleの管理も
こんなんでいいの?って気もするし。Xもドライバー持ってるってのがよくわから
んし(嫌味とかじゃなくて本当にわからんのです。)
って偉そうな事言っててもしょうがないな・・・たまにはソースぐらい読もう・・・
なるほど。JAVA云々無しにしてもやっぱカーネルとは別離すべきなのかも。
いや、マイクロ・モノリシックの話じゃなくて仕様的なものを。moduleの管理も
こんなんでいいの?って気もするし。Xもドライバー持ってるってのがよくわから
んし(嫌味とかじゃなくて本当にわからんのです。)
って偉そうな事言っててもしょうがないな・・・たまにはソースぐらい読もう・・・
04/11/07 08:11:19ID:/P0s9FI4
04/11/08 12:46:18ID:ir5Tmuq8
Xサーバはroot権限のユーザランドプロセスで /dev/ioとか /dev/memに
直接アクセスしてビデオチップを制御する。
Xのドライバといわゆるデバイスドライバとは動作メカニズムがまったく違う。
直接アクセスしてビデオチップを制御する。
Xのドライバといわゆるデバイスドライバとは動作メカニズムがまったく違う。
04/11/09 23:51:44ID:+nDFjkMc
ユーザ空間からmmapでマッピングしてデバイスいじくるときって、
アプリがマッピング先のメモリに書き込む動作と同時に
デバイスにデータって書きこまれるんでしょうか?
バッファリングみたいのって気にしなくてもいいの?
アプリがマッピング先のメモリに書き込む動作と同時に
デバイスにデータって書きこまれるんでしょうか?
バッファリングみたいのって気にしなくてもいいの?
04/11/10 01:00:51ID:8UeNJl+2
>>382
デバイスをmmapしてアクセスするときは、単にMMUがそこを指しているだけで、
ディスク上のファイルをmmapしたときのようなバッファリングはありませんよ。
類似のがある場合はあって、それはキャッシュなのです。
/dev/fb* は通常キャッシュが抑止されています。
/dev/mem は O_SYNCでopenしてやるとキャッシュを抑止します。
デバイスをmmapしてアクセスするときは、単にMMUがそこを指しているだけで、
ディスク上のファイルをmmapしたときのようなバッファリングはありませんよ。
類似のがある場合はあって、それはキャッシュなのです。
/dev/fb* は通常キャッシュが抑止されています。
/dev/mem は O_SYNCでopenしてやるとキャッシュを抑止します。
04/11/10 07:34:29ID:WP1ExQ+t
PCIデバイスの場合 各共有メモリ空間ごとにprefetchableビットが定義されている
ほとんどのPCIカードはprefetchableがdisableになっておりキャッシュ無効になってる
ほとんどのPCIカードはprefetchableがdisableになっておりキャッシュ無効になってる
04/11/10 14:40:19ID:OHaab6bm
04/11/10 18:01:50ID:MrVsce1+
>>385
CPUキャッシュはユーザー空間から叩く手段がないので、
カーネルとハードウエア側の制御にお任せするしかないです。
最適化の方はvolatile付けておけば大丈夫でしょう。
なにもしないと最近のコンパイラは賢すぎてとんでもないことをやってくれますからな。
CPUキャッシュはユーザー空間から叩く手段がないので、
カーネルとハードウエア側の制御にお任せするしかないです。
最適化の方はvolatile付けておけば大丈夫でしょう。
なにもしないと最近のコンパイラは賢すぎてとんでもないことをやってくれますからな。
04/11/10 23:54:53ID:8UeNJl+2
>>385
キャッシュは気にしてください。キャッシュがあると
. 書き込みがキャッシュが溢れるまでなされない。
. 読みだしも同様。
. 同一ラインにのる近隣のレジスタがいっしょにアクセスされちゃう
という、デバイスの制御にとっては致命的なことがいろいろ。
キャッシュは気にしてください。キャッシュがあると
. 書き込みがキャッシュが溢れるまでなされない。
. 読みだしも同様。
. 同一ラインにのる近隣のレジスタがいっしょにアクセスされちゃう
という、デバイスの制御にとっては致命的なことがいろいろ。
388382 385
04/11/11 00:27:04ID:95L6p31P すみません。
キャッシュを気にししなくてもよいと書いたのは、
キャッシュが働かないので、気にしなくても良いという意味で
書いていました。
387さんのおっしゃるとおり、デバイスアクセスでキャッシュが
働いてしまうと、ひどい目にあいますね。
ところで、mmapのキャッシュ無効化ってmem.cの
noncached_address を修正すれば有効無効をユーザで
任意に操作可能になるんですかね?
ハードやBIOSでキャッシュ関係の細工が何かあったりしたらだめなのかもしれませんが。
キャッシュを気にししなくてもよいと書いたのは、
キャッシュが働かないので、気にしなくても良いという意味で
書いていました。
387さんのおっしゃるとおり、デバイスアクセスでキャッシュが
働いてしまうと、ひどい目にあいますね。
ところで、mmapのキャッシュ無効化ってmem.cの
noncached_address を修正すれば有効無効をユーザで
任意に操作可能になるんですかね?
ハードやBIOSでキャッシュ関係の細工が何かあったりしたらだめなのかもしれませんが。
04/11/12 00:12:24ID:nxDtrzpb
390login:Penguin
04/11/14 11:26:16ID:ZhMJfRu+ USBサブシステムを読んでいるんですが、
デバイス、バス、ドライバの三つの関係のイメージを
教えてください。なんだかソース読んでいてもよく分かりません。
またxxx_probeという関数に渡ってくるstruct usb_interfaceとは
どこで確保されいてる構造体なんでしょうか?
デバイス、バス、ドライバの三つの関係のイメージを
教えてください。なんだかソース読んでいてもよく分かりません。
またxxx_probeという関数に渡ってくるstruct usb_interfaceとは
どこで確保されいてる構造体なんでしょうか?
391login:Penguin
04/11/21 11:06:40ID:RzBM8DsM technokitのUSB-IOをFedora Core 3に接続したら、/dev/hiddev0が勝手にできたので、
これに対しCでプログラムを作って、
fd = open("/dev/hiddev0", O_WRONLY);
して、
write(fd, command, 8);
した。commandは0x01FF00000000。けど全然反応が無い。
USB-IOのエンドポイント0には、0x01FFを送ったら、ポート0が反転するはずなんだけどなあ。
hid使わずに、ちゃんと専用ドライバ使わないとだめなの?
これに対しCでプログラムを作って、
fd = open("/dev/hiddev0", O_WRONLY);
して、
write(fd, command, 8);
した。commandは0x01FF00000000。けど全然反応が無い。
USB-IOのエンドポイント0には、0x01FFを送ったら、ポート0が反転するはずなんだけどなあ。
hid使わずに、ちゃんと専用ドライバ使わないとだめなの?
04/11/21 17:22:45ID:fkgrUhvM
デバイスドライバはカーネルメモリを消費するらしいのですが、
現在のカーネルメモリーの残量を知るにはどうしたらよいですか?
現在のカーネルメモリーの残量を知るにはどうしたらよいですか?
393391
04/11/21 17:37:11ID:RzBM8DsM >390 /usr/include/usb.h
04/12/12 18:20:03ID:fch5Qtg6
Linuxデバイスドライバの勉強を始めました。
がまずは、オライリーの本で解説してる、
サンプルコードから入ろうと思ったんですが、
asm/system.hをincludeしているコードは、
/usr/src/linux/include/asm/system.h: 関数 `__set_64bit_var' 内:
/usr/src/linux/include/asm/system.h:190: 警告:
dereferencing type-punned pointer will break strict-aliasing rules
と警告を出されてしまいます。
同じ現象に遭遇した香具師いませんか?
コンパイラはgcc3.3、kernel2.4.26。
ちなみに、警告された部分は、
#define ll_low(x) *(((unsigned int*)&(x))+0)
#define ll_high(x) *(((unsigned int*)&(x))+1)
static inline void __set_64bit_var (unsigned long long *ptr,
unsigned long long value)
{
__set_64bit(ptr,ll_low(value), ll_high(value)); //190行目
}
がまずは、オライリーの本で解説してる、
サンプルコードから入ろうと思ったんですが、
asm/system.hをincludeしているコードは、
/usr/src/linux/include/asm/system.h: 関数 `__set_64bit_var' 内:
/usr/src/linux/include/asm/system.h:190: 警告:
dereferencing type-punned pointer will break strict-aliasing rules
と警告を出されてしまいます。
同じ現象に遭遇した香具師いませんか?
コンパイラはgcc3.3、kernel2.4.26。
ちなみに、警告された部分は、
#define ll_low(x) *(((unsigned int*)&(x))+0)
#define ll_high(x) *(((unsigned int*)&(x))+1)
static inline void __set_64bit_var (unsigned long long *ptr,
unsigned long long value)
{
__set_64bit(ptr,ll_low(value), ll_high(value)); //190行目
}
395394
04/12/12 18:22:17ID:fch5Qtg6 あ、マシンは i686です。
04/12/14 01:02:15ID:bnBNd/cw
たしか-fno-strict-aliasingだったかな。それつけれ。
より詳細が知りたいときはググれ。
より詳細が知りたいときはググれ。
397394
04/12/14 02:47:39ID:iNH7gUWs398login:Penguin
04/12/14 11:29:27ID:HO3MDnt+ モジュールでmallocを使うと
implicit declaration of function `malloc'
なる警告が出ました。
正直、うまくいくとも思っていなかったのですが、ためしにやってみた感じです。
何かヘッダをincludeすればいいのでしょうか。
implicit declaration of function `malloc'
なる警告が出ました。
正直、うまくいくとも思っていなかったのですが、ためしにやってみた感じです。
何かヘッダをincludeすればいいのでしょうか。
04/12/14 11:44:22ID:vlh4D4yl
>>398
kmalloc() or vmalloc()
kmalloc() or vmalloc()
04/12/14 11:54:53ID:HO3MDnt+
>>399
感謝.あとは調べます.
感謝.あとは調べます.
401login:Penguin
04/12/14 15:55:34ID:ScDxM3L+ 【序 論】
オウム事件とは、「オウム、創価、統一が共同でやっていた覚醒剤密造などの不法行為がばれそうになり、全ての罪をオウムに押付けた。」事件であると理解しています。
統一教会は、その起源から考えて、KCIA及びCIAの影響下にあると考えるべきです。
日本側のCIA専属のお爺さんたち、つまり、笹川さん、児玉さん、中曽根さんたちが、統一とつるんでいたのも、CIAの犬同士という絆があったわけです。
一方で、創価は創価で、笹川一派を通じて、統一と繋がりがありますし、それ以前に創価内部に深く入り込んでいる暴力団、
後藤組のもつ北朝鮮コネクションから、オウムの麻薬ビジネスに関わっていたわけです。
もちろん、日本社会に創価マフィアのネットワークをはりめぐらした学会を、CIAが放っておくわけがなく、マネーロンダリングなどに、しっかり利用されています。
宗教法人の財務の閉鎖性をCIAが利用しないと考える方が異常です。
そして、CIAお得意の麻薬ビジネスの日本支部が、オウムだったわけで、その収益が北朝鮮に還元されていたのも当然のことであり、
北の現体制を維持するための、CIAの有難い配慮だったわけです。
なにしろ北の体制が崩壊すると、一番困るのは、CIAのスポンサーである軍産複合体と国際金融資本であり、極東の緊張は、彼らの飯の種なわけですから。
麻薬王にして、CIAの帝王である大ブッシュさんが、統一の文と仲良しなのも、アッタリマエなわけですね。
今度の米大統領選でも、随分と統一のカネが小ブッシュ陣営に流れたようですね。
尚、本件の主たる議論は、2チャンネル、警察板の「告発します 第3部」スレッドにて、進めています。
http://mentai.2ch.net/test/read.cgi?bbs=police&key=985780338&ls=100
オウム事件とは、「オウム、創価、統一が共同でやっていた覚醒剤密造などの不法行為がばれそうになり、全ての罪をオウムに押付けた。」事件であると理解しています。
統一教会は、その起源から考えて、KCIA及びCIAの影響下にあると考えるべきです。
日本側のCIA専属のお爺さんたち、つまり、笹川さん、児玉さん、中曽根さんたちが、統一とつるんでいたのも、CIAの犬同士という絆があったわけです。
一方で、創価は創価で、笹川一派を通じて、統一と繋がりがありますし、それ以前に創価内部に深く入り込んでいる暴力団、
後藤組のもつ北朝鮮コネクションから、オウムの麻薬ビジネスに関わっていたわけです。
もちろん、日本社会に創価マフィアのネットワークをはりめぐらした学会を、CIAが放っておくわけがなく、マネーロンダリングなどに、しっかり利用されています。
宗教法人の財務の閉鎖性をCIAが利用しないと考える方が異常です。
そして、CIAお得意の麻薬ビジネスの日本支部が、オウムだったわけで、その収益が北朝鮮に還元されていたのも当然のことであり、
北の現体制を維持するための、CIAの有難い配慮だったわけです。
なにしろ北の体制が崩壊すると、一番困るのは、CIAのスポンサーである軍産複合体と国際金融資本であり、極東の緊張は、彼らの飯の種なわけですから。
麻薬王にして、CIAの帝王である大ブッシュさんが、統一の文と仲良しなのも、アッタリマエなわけですね。
今度の米大統領選でも、随分と統一のカネが小ブッシュ陣営に流れたようですね。
尚、本件の主たる議論は、2チャンネル、警察板の「告発します 第3部」スレッドにて、進めています。
http://mentai.2ch.net/test/read.cgi?bbs=police&key=985780338&ls=100
04/12/14 17:02:39ID:WBCZfumK
国際金融資本と無関係な人はいません。ここが大事なところです。
国際金融資本とダーティーな勢力になんらかの関係があるというのなら、
全ての人間がダーティーな勢力と関係があるということです。
国際金融資本とダーティーな勢力になんらかの関係があるというのなら、
全ての人間がダーティーな勢力と関係があるということです。
403login:Penguin
04/12/16 00:42:54ID:HSUTNn3s <linux/errno.h>をincludeしているのに、errnoが宣言されていないとエラーが出ます。
なぜですか?
なぜですか?
404login:Penguin
04/12/16 00:52:12ID:fnG8qWZe #include <asm/errno.h>
04/12/16 03:08:53ID:L4JhEJTY
デバイスドライバーをイジルとハードが壊れます
05/01/13 20:25:56ID:5Qhjx5GH
jiffies の質問です。jiffies がオーバーフローする時の挙動を確かめ
たく、下記のようなモジュールを作成してロードしたのですが、モジュー
ルのロードに非常に時間がかかります。
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/delay.h>
MODULE_LICENSE("GPL");
int init_module(void)
{
jiffies = 4294961296UL;
return 0;
}
void cleanup_module(void)
{
return;
}
即座に jiffies 値を変更するためには、何か工夫が必要なのでしょう
か?
たく、下記のようなモジュールを作成してロードしたのですが、モジュー
ルのロードに非常に時間がかかります。
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/delay.h>
MODULE_LICENSE("GPL");
int init_module(void)
{
jiffies = 4294961296UL;
return 0;
}
void cleanup_module(void)
{
return;
}
即座に jiffies 値を変更するためには、何か工夫が必要なのでしょう
か?
05/01/13 21:59:07ID:b26g+4JK
05/01/13 22:21:10ID:5Qhjx5GH
やっぱりそれしか方法ないでしょうかね。カーネルコンパイルが億劫で
まだ試していませんでした。
例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、
jiffies += 8640000; にすると、より多くの時間がかかるようです。仮
想マシン環境で実験しているのですが、その間、仮想マシンのプロセス
の CPU 使用率は高いままでした。
まだ試していませんでした。
例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、
jiffies += 8640000; にすると、より多くの時間がかかるようです。仮
想マシン環境で実験しているのですが、その間、仮想マシンのプロセス
の CPU 使用率は高いままでした。
05/01/14 02:03:54ID:PSu0RjKD
ん? 何書いてたんだ、俺
>408 は、正しくは以下です。
例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、
jiffies += 864000000; にすると、より多くの時間がかかるようです。
>408 は、正しくは以下です。
例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、
jiffies += 864000000; にすると、より多くの時間がかかるようです。
410login:Penguin
05/02/06 11:19:02ID:+OMlHKxZ mmapによるデバイスアクセスについてご教授ください。
16bitアクセス限定のデバイスに対して、
mmapによるアクセスを試行しているのですが、
どうも挙動が怪しくて困っています。
アプリ側からmmap(/dev/memをO_SYNCでopen)してshortアクセスをしても、
そのままshort幅でデバイスにアクセスが行くとは限らないのでしょうか?
なにか考慮が不足してるのでしょうか。
16bitアクセス限定のデバイスに対して、
mmapによるアクセスを試行しているのですが、
どうも挙動が怪しくて困っています。
アプリ側からmmap(/dev/memをO_SYNCでopen)してshortアクセスをしても、
そのままshort幅でデバイスにアクセスが行くとは限らないのでしょうか?
なにか考慮が不足してるのでしょうか。
05/02/06 14:33:57ID:JfjjYGk4
412login:Penguin
05/02/10 21:10:10ID:oT40ukFS gcc 3.3.5(gentoo) で作成したモジュールを gcc 3.4.2(FC3) のPCへ
組み込もうとするとエラーで組み込めません。
どちらも kernel-2.6.10 です。
insmod: error inserting 'hoge.ko' : -1 Invalid module format
kernel config (General setup, Loadable module) は同じにしてあります。
同じバージョンの gcc で作成したシステムでないと無理なのでしょうか。
組み込もうとするとエラーで組み込めません。
どちらも kernel-2.6.10 です。
insmod: error inserting 'hoge.ko' : -1 Invalid module format
kernel config (General setup, Loadable module) は同じにしてあります。
同じバージョンの gcc で作成したシステムでないと無理なのでしょうか。
05/02/12 01:22:07ID:QcR6E3eX
>>410
>>411の言うとおりアーキテクチャが分からないのでなんともいえないけど・・・
/dev/memをmmapでshortアクセスしたら、普通はshortで触ってくれるでしょう。
でも、触ってるデバイスが * 例えば32bit PCI * にぶら下がってたりしたら
32bit で触りに行っちゃうこともありますよ。
っていうか、PCIの向こうにいるデバイスに届くまでに余計な16bitが増えてたりする。
それでも、読みにいくときには多分shortで行っても多分大丈夫。
書き込みをshortでやったりすると、残りの16bitにゴミが乗っかっちゃうとか、
そんなんじゃないでしょうか?
そうならば、shortで書きに行くときには、最初にデバイスから32bit分持ってきて、
それに16bit分上書きして、32bit書き戻すとかするしかないのでは。
(16bitアクセス限定でも、読みに行くときは16bit×2で32bit分をうまく返してくれることを
かってに期待して書いてますけど)
それから、32bitでアクセスするときにも触りに行くアドレスに注意が必要ですよ、多分。
32bitアラインメントじゃないとダメな予感がします。
もしそうならば、アラインメントの境界をまたいじゃうような16bitの書き込みをする場合、
両側の32×2 = 64bit分を持ってきて16bit書いて戻す、とかしないとダメですよね。
もちろんこれは、PCI上でうまく振舞うように作られていないデバイスの話で、
たとえ16bitアクセス限定デバイスでもそうならないようにつくることは可能だと思います。
ところどころ言ってるかもしれませんけどね・・・
>>411の言うとおりアーキテクチャが分からないのでなんともいえないけど・・・
/dev/memをmmapでshortアクセスしたら、普通はshortで触ってくれるでしょう。
でも、触ってるデバイスが * 例えば32bit PCI * にぶら下がってたりしたら
32bit で触りに行っちゃうこともありますよ。
っていうか、PCIの向こうにいるデバイスに届くまでに余計な16bitが増えてたりする。
それでも、読みにいくときには多分shortで行っても多分大丈夫。
書き込みをshortでやったりすると、残りの16bitにゴミが乗っかっちゃうとか、
そんなんじゃないでしょうか?
そうならば、shortで書きに行くときには、最初にデバイスから32bit分持ってきて、
それに16bit分上書きして、32bit書き戻すとかするしかないのでは。
(16bitアクセス限定でも、読みに行くときは16bit×2で32bit分をうまく返してくれることを
かってに期待して書いてますけど)
それから、32bitでアクセスするときにも触りに行くアドレスに注意が必要ですよ、多分。
32bitアラインメントじゃないとダメな予感がします。
もしそうならば、アラインメントの境界をまたいじゃうような16bitの書き込みをする場合、
両側の32×2 = 64bit分を持ってきて16bit書いて戻す、とかしないとダメですよね。
もちろんこれは、PCI上でうまく振舞うように作られていないデバイスの話で、
たとえ16bitアクセス限定デバイスでもそうならないようにつくることは可能だと思います。
ところどころ言ってるかもしれませんけどね・・・
414413
05/02/12 01:24:29ID:QcR6E3eX 早速、間違えてました(w
>ところどころ言ってるかもしれませんけどね・・・
ところどころ * うそ * 言ってるかもしれませんけどね・・・
>ところどころ言ってるかもしれませんけどね・・・
ところどころ * うそ * 言ってるかもしれませんけどね・・・
415410
05/02/16 00:46:02ID:E/KjMwKc いろいろ情報ありがとうございます。
もともとドライバ経由でアクセスしていたのですが、
パフォーマンス的な問題でmmapでを使用したかったという経緯があります。
ですが、mmapだとどうもうまくいかなくて試行錯誤していた次第です。
ですので、単純にmmapでの処理の問題かと思っていました。
時間はあるので、勉強も兼ねてもうちょっと情報収集をしたいと思います。
もともとドライバ経由でアクセスしていたのですが、
パフォーマンス的な問題でmmapでを使用したかったという経緯があります。
ですが、mmapだとどうもうまくいかなくて試行錯誤していた次第です。
ですので、単純にmmapでの処理の問題かと思っていました。
時間はあるので、勉強も兼ねてもうちょっと情報収集をしたいと思います。
416login:Penguin
05/02/16 22:28:50ID:mypLuczy05/02/20 21:06:04ID:0sjUjbHi
現在、デバイスドライバ作成(とりあえずキャラクタ型)の勉強しているのですが、
2.4.30-pre1上で作成したテストドライバでモジュールのロードは成功したと思われる
のですが(lsmodで存在を確認)、実際にドライバを使用する為に作成したテストツールから
呼び出す(ioctlを使用する箇所で)と失敗しました。
$ ls -l /dev/testdev
crw-rw-rw- 1 root root 60, 0 2月 20日 20:11 /dev/testdev
$ ./testtool
ioctl: Inappropriate ioctl for device <-- perrorで表示させてみたところ
2.4.30-pre1上で作成したテストドライバでモジュールのロードは成功したと思われる
のですが(lsmodで存在を確認)、実際にドライバを使用する為に作成したテストツールから
呼び出す(ioctlを使用する箇所で)と失敗しました。
$ ls -l /dev/testdev
crw-rw-rw- 1 root root 60, 0 2月 20日 20:11 /dev/testdev
$ ./testtool
ioctl: Inappropriate ioctl for device <-- perrorで表示させてみたところ
418417
05/02/20 21:09:12ID:0sjUjbHi つづき
そこで、さらに詳細に状況を確認するためにstraceを使用してみました。
$ strace ./testtool
execve("./testtool", ["./testtool"], [/* 52 vars */]) = 0
brk(0) = 0x8049a6c
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=62075, ...}) = 0
old_mmap(NULL, 62075, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0DU\1\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1333605, ...}) = 0
old_mmap(NULL, 1145796, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40023000
mprotect(0x40134000, 27588, PROT_NONE) = 0
old_mmap(0x40134000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x110000) = 0x40134000
old_mmap(0x40139000, 7108, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40139000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4013b000
munmap(0x40013000, 62075) = 0
open("/dev/testdev", O_RDWR) = 3
ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
write(1, "errno = 25\n", 11errno = 25
) = 11
そこで、さらに詳細に状況を確認するためにstraceを使用してみました。
$ strace ./testtool
execve("./testtool", ["./testtool"], [/* 52 vars */]) = 0
brk(0) = 0x8049a6c
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=62075, ...}) = 0
old_mmap(NULL, 62075, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0DU\1\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1333605, ...}) = 0
old_mmap(NULL, 1145796, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40023000
mprotect(0x40134000, 27588, PROT_NONE) = 0
old_mmap(0x40134000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x110000) = 0x40134000
old_mmap(0x40139000, 7108, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40139000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4013b000
munmap(0x40013000, 62075) = 0
open("/dev/testdev", O_RDWR) = 3
ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
write(1, "errno = 25\n", 11errno = 25
) = 11
419417
05/02/20 21:10:12ID:0sjUjbHi つづき
dup(2) = 4
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
brk(0) = 0x8049a6c
brk(0x804aa6c) = 0x804aa6c
brk(0) = 0x804aa6c
brk(0x804b000) = 0x804b000
fstat64(4, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000
_llseek(4, 0, 0xbfffef50, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "ioctl: Inappropriate io"..., 47ioctl: Inappropriate ioctl for device
) = 38
close(4) = 0
munmap(0x40014000, 4096) = 0
close(3) = 0
munmap(0x40013000, 4096) = 0
exit_group(1) = ?
$
結果を見ていると実行したおぼえのない以下の行がありました。
ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device)
この現象はどこにエラーがある場合におこり得ますか?
知ってる方お願いします。m(_ _)m
dup(2) = 4
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
brk(0) = 0x8049a6c
brk(0x804aa6c) = 0x804aa6c
brk(0) = 0x804aa6c
brk(0x804b000) = 0x804b000
fstat64(4, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000
_llseek(4, 0, 0xbfffef50, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "ioctl: Inappropriate io"..., 47ioctl: Inappropriate ioctl for device
) = 38
close(4) = 0
munmap(0x40014000, 4096) = 0
close(3) = 0
munmap(0x40013000, 4096) = 0
exit_group(1) = ?
$
結果を見ていると実行したおぼえのない以下の行がありました。
ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device)
この現象はどこにエラーがある場合におこり得ますか?
知ってる方お願いします。m(_ _)m
05/02/20 21:38:19ID:uvzGFsyf
結果じゃなくてソースだそうよ
422417
05/02/20 22:06:08ID:0sjUjbHi #define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/string.h>
static int devmajor=60;
static char *devname="testdev";
MODULE_PARM(devmajor, "i");
MODULE_PARM(devname, "s");
#include <asm/uaccess.h>
static int devtest_open(struct inode * inode, struct file * file){
MOD_INC_USE_COUNT;
return 0;
}
static int devtest_close(struct inode * inode, struct file * file){
MOD_DEC_USE_COUNT;
return 0;
}
static int devtest_ioctl(struct inode *inode, struct file *file,unsigned int cmd, unsigned long arg){
int i;
printk("testdev: ioctl: cmd=%04X\n",cmd);
switch(cmd)
{
case 1: printk("Driver testing\n"); return 0;
}
return -EINVAL;
}
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/string.h>
static int devmajor=60;
static char *devname="testdev";
MODULE_PARM(devmajor, "i");
MODULE_PARM(devname, "s");
#include <asm/uaccess.h>
static int devtest_open(struct inode * inode, struct file * file){
MOD_INC_USE_COUNT;
return 0;
}
static int devtest_close(struct inode * inode, struct file * file){
MOD_DEC_USE_COUNT;
return 0;
}
static int devtest_ioctl(struct inode *inode, struct file *file,unsigned int cmd, unsigned long arg){
int i;
printk("testdev: ioctl: cmd=%04X\n",cmd);
switch(cmd)
{
case 1: printk("Driver testing\n"); return 0;
}
return -EINVAL;
}
423417
05/02/20 22:07:26ID:0sjUjbHi つづき
static struct file_operations devtest_fops = {
ioctl: devtest_ioctl,
open: devtest_open,
release: devtest_close,
};
int init_module(void){
printk("install '%s' into major %d\n",devname,devmajor);
if(register_chrdev(devmajor,devname,&devtest_fops)){
printk("device registration error\n");
return -EBUSY;
}
return 0;
}
void cleanup_module(void){
printk("remove '%s' from major %d\n",devname,devmajor);
if (unregister_chrdev(devmajor,devname))
{
printk ("unregister_chrdev failed\n");
}
};
static struct file_operations devtest_fops = {
ioctl: devtest_ioctl,
open: devtest_open,
release: devtest_close,
};
int init_module(void){
printk("install '%s' into major %d\n",devname,devmajor);
if(register_chrdev(devmajor,devname,&devtest_fops)){
printk("device registration error\n");
return -EBUSY;
}
return 0;
}
void cleanup_module(void){
printk("remove '%s' from major %d\n",devname,devmajor);
if (unregister_chrdev(devmajor,devname))
{
printk ("unregister_chrdev failed\n");
}
};
424417
05/02/20 22:10:07ID:0sjUjbHi デバドラ呼び出し部
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
extern int errno;
int main(void){
int fd, ret;
fd=open("/dev/testdev",O_RDWR);
if(fd<0){
fprintf(stderr,"cannot open device\n");
return 1;
}
errno = 0;
ret = ioctl(fd,1);
if(ret == -1){
printf("errno = %d\n", errno);
perror("ioctl");
}
close(fd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
extern int errno;
int main(void){
int fd, ret;
fd=open("/dev/testdev",O_RDWR);
if(fd<0){
fprintf(stderr,"cannot open device\n");
return 1;
}
errno = 0;
ret = ioctl(fd,1);
if(ret == -1){
printf("errno = %d\n", errno);
perror("ioctl");
}
close(fd);
return 0;
}
425417
05/02/20 22:11:43ID:0sjUjbHi 以上で全部です。
05/02/20 23:44:25ID:Ia/OzVXx
05/02/21 00:25:27ID:PN7I+gvx
>>427
# uname -r
2.6.10-gentoo-r6
/var/log/messages より
Feb 20 23:41:06 XXXXX testdev: ioctl: cmd=0001
Feb 20 23:41:06 XXXXX Driver testing
変更点は /dev/wrkdev にしただけ。
# uname -r
2.6.10-gentoo-r6
/var/log/messages より
Feb 20 23:41:06 XXXXX testdev: ioctl: cmd=0001
Feb 20 23:41:06 XXXXX Driver testing
変更点は /dev/wrkdev にしただけ。
429417
05/02/21 00:37:25ID:bwxnTums05/03/06 13:19:22ID:PjCVkwmZ
何気に良スレ
みんな頑張れ
お気に入りに追加しますた。
みんな頑張れ
お気に入りに追加しますた。
2005/03/29(火) 16:05:44ID:lbUCJwgD
ドライバのread、write関数でminor番号取得する方法ってないんですか?
2.6用に、LIRCの仮想ドライバで、デバイスファイル2つ作って、
片方にキーコード書き込んだらLIRCに送られるやつ書いてるんだけど。
まあ、LIRC側はIOCTLとreadだけだし、キーコード送るほうはwriteだけだから今のとこ何とかなってるんだけど、気持ち悪いし。
2.6用に、LIRCの仮想ドライバで、デバイスファイル2つ作って、
片方にキーコード書き込んだらLIRCに送られるやつ書いてるんだけど。
まあ、LIRC側はIOCTLとreadだけだし、キーコード送るほうはwriteだけだから今のとこ何とかなってるんだけど、気持ち悪いし。
2005/03/29(火) 23:34:47ID:ChOvrjsk
private_data を使う、かな?
2005/03/30(水) 11:17:39ID:tWHa73x6
>>432
サンクス!
open時に file->private_data にポインタ突っ込んでおくってことですね。
取得することばかり調べてて、あらかじめ持たせておくことを考えてませんでした。
修行が足りぬ…orz
サンクス!
open時に file->private_data にポインタ突っ込んでおくってことですね。
取得することばかり調べてて、あらかじめ持たせておくことを考えてませんでした。
修行が足りぬ…orz
2005/04/16(土) 06:28:18ID:R/hasO1P
usb-hid についての質問です.
usb 接続の joypad を,hid-input 経由ではなく,
(drivers/usb/usb-skeleton.c のような) usb のデバイスドライバで処理したいと考えています.
問題は,joypad の挿入時に hid-core の probe 関数が呼ばれてしまい,
自作 usb デバイスドライバの probe 関数が呼ばれないことです.
上記の解決策はあるのでしょうか.
自作 usb デバイスドライバ内では, joybad のベンダーID,プロダクトIDを
usb_device_id 構造体に設定しています.
kernel は 2.6.10 です.
よろしくお願いします.
usb 接続の joypad を,hid-input 経由ではなく,
(drivers/usb/usb-skeleton.c のような) usb のデバイスドライバで処理したいと考えています.
問題は,joypad の挿入時に hid-core の probe 関数が呼ばれてしまい,
自作 usb デバイスドライバの probe 関数が呼ばれないことです.
上記の解決策はあるのでしょうか.
自作 usb デバイスドライバ内では, joybad のベンダーID,プロダクトIDを
usb_device_id 構造体に設定しています.
kernel は 2.6.10 です.
よろしくお願いします.
435434
2005/04/16(土) 08:17:16ID:R/hasO1P 自己レスです.
解決法を見付けたので,書き込みます.
drivers/usb/input/hid-core.c 内の,hid_blacklist 構造体に,
joypad のベンダIDとプロダクトIDを加えることで,解決しそうです.
スレ汚し失礼しました.
解決法を見付けたので,書き込みます.
drivers/usb/input/hid-core.c 内の,hid_blacklist 構造体に,
joypad のベンダIDとプロダクトIDを加えることで,解決しそうです.
スレ汚し失礼しました.
2005/05/17(火) 18:53:06ID:CbytfkQn
2.6 kernel(2.6.11.x)上でデバドラ書く場合、
MOD_INC_USE_COUNT
MOD_DEC_USE_COUNT
を使用する事ってobsolete?
MOD_INC_USE_COUNT
MOD_DEC_USE_COUNT
を使用する事ってobsolete?
437login:Penguin
2005/05/18(水) 01:07:17ID:2baf1QgQ >>436
れがし
れがし
2005/05/19(木) 23:52:14ID:m1yq1rQI
カーネル2.6.8(turbolinux10Server)でデバイスドライバを開発しています。
ドライバAでエクスポートしたシンボルをドライバBでコールしたいのですが、
ドライバBのinsmod時に"Unknown symbol"エラーが出てしまいます。
そこで、単純なソースで確認してみたのですが、同様の状態でした。
同様のソースをカーネル2.4.18(turbolinux8Server)でコンパイルしてinsmod
したところ上手く動作したのですが、カーネル2.6では何か手続きが必要
なのでしょうか?
確認したソースは以下の通りです
==ドライバA==
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
int __init test_init_module (void)
{
printk("test : init_module\n");
s_print();
return 0;
}
void __exit test_cleanup_module (void)
{
printk("test : cleanup_module\n");
return 0;
}
void s_print(void)
{
printk("Hello, World!\n");
}
module_init(test_init_module)
module_exit(test_cleanup_module)
ドライバAでエクスポートしたシンボルをドライバBでコールしたいのですが、
ドライバBのinsmod時に"Unknown symbol"エラーが出てしまいます。
そこで、単純なソースで確認してみたのですが、同様の状態でした。
同様のソースをカーネル2.4.18(turbolinux8Server)でコンパイルしてinsmod
したところ上手く動作したのですが、カーネル2.6では何か手続きが必要
なのでしょうか?
確認したソースは以下の通りです
==ドライバA==
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
int __init test_init_module (void)
{
printk("test : init_module\n");
s_print();
return 0;
}
void __exit test_cleanup_module (void)
{
printk("test : cleanup_module\n");
return 0;
}
void s_print(void)
{
printk("Hello, World!\n");
}
module_init(test_init_module)
module_exit(test_cleanup_module)
439login:Penguin
2005/05/19(木) 23:52:48ID:m1yq1rQI ==ドライバB==
#include <linux/module.h>
#include <linux/kernel.h>
extern void s_print();
int __init test2_init_module (void)
{
printk("test2 : init_module\n");
s_print();
return 0;
}
void __exit test2_cleanup_module (void)
{
printk("test2 : cleanup_module\n");
return 0;
}
module_init(test2_init_module)
module_exit(test2_cleanup_module)
#include <linux/module.h>
#include <linux/kernel.h>
extern void s_print();
int __init test2_init_module (void)
{
printk("test2 : init_module\n");
s_print();
return 0;
}
void __exit test2_cleanup_module (void)
{
printk("test2 : cleanup_module\n");
return 0;
}
module_init(test2_init_module)
module_exit(test2_cleanup_module)
440login:Penguin
2005/05/19(木) 23:57:30ID:m1yq1rQI ==コンパイル手順==
cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__ -DMODULE -DKBUILD_MODNAME=test initial.c
/usr/src/linux/scripts/mod/modpost initial.o
cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__-DMODULE -DKBUILD_MODNAME=test -c -o initial.mod.o initial.mod.c
ld -r -o test.ko initial.o initial.mod.o
==動作確認==
# insmod test.ko
// シンボルのエクスポートを確認
# cat /proc/kallsyms | grep s_print
f8xxxxxx T s_print [test]
# insmod test2.ko
test2 : Unknown symbol in module 's_print'
となります。実機が側にないので出力メッセージは大体こんな感じということで。
よろしくお願いします。
cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__ -DMODULE -DKBUILD_MODNAME=test initial.c
/usr/src/linux/scripts/mod/modpost initial.o
cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__-DMODULE -DKBUILD_MODNAME=test -c -o initial.mod.o initial.mod.c
ld -r -o test.ko initial.o initial.mod.o
==動作確認==
# insmod test.ko
// シンボルのエクスポートを確認
# cat /proc/kallsyms | grep s_print
f8xxxxxx T s_print [test]
# insmod test2.ko
test2 : Unknown symbol in module 's_print'
となります。実機が側にないので出力メッセージは大体こんな感じということで。
よろしくお願いします。
2005/05/20(金) 03:04:35ID:Ds9MyJAI
442login:Penguin
2005/05/20(金) 08:58:08ID:zG+tsX8i >>441
烈婦ワロタ
レスありがとうございます。
s_printでgrepしてみたのですが、同名のシンボルは無いようでした。
念のため、ドライバAに
EXPORT_SYMBOL(s_print);
を追加しても'Unknown symbol'になってしまいます。
ドライバ間の依存関係をどこかで明示する必要があるのでしょうか?
烈婦ワロタ
レスありがとうございます。
s_printでgrepしてみたのですが、同名のシンボルは無いようでした。
念のため、ドライバAに
EXPORT_SYMBOL(s_print);
を追加しても'Unknown symbol'になってしまいます。
ドライバ間の依存関係をどこかで明示する必要があるのでしょうか?
2005/06/07(火) 10:17:39ID:6uaL4exB
普通はそんなことはできないんじゃない?
誰かができると言ったのかな?
デバイスファイル開いてioctlをコールが普通じゃねぇの?
誰かができると言ったのかな?
デバイスファイル開いてioctlをコールが普通じゃねぇの?
2005/06/17(金) 18:54:11ID:9kSGojSd
http://www.oreilly.com/catalog/linuxdrive3/book/index.csp
Linux Device Drivers, Third Edition
Linux Device Drivers, Third Edition
2005/06/18(土) 19:13:08ID:Uc6V46BE
2005/06/19(日) 15:13:18ID:f3bsYXGy
the role of a device driver is providing mechanism, not policy.
これが、policy-free
これが、policy-free
2005/06/19(日) 15:19:24ID:f3bsYXGy
ここでのfreeはduty freeのfreeと同じ使われ方。
policyがないdriver
policyがないdriver
448login:Penguin
2005/06/29(水) 18:33:32ID:hcN+gVRw カーネル2.4.28を使用して、EZ USB FX2のドライバを作成しています。
USBを4つさし、ここに、デバイスドライバを作成します。デバイスドライバは、
カーネルにあるusb-skelton.cを使って作成しました。3つまでさして、制御した場合、
動作したのですが、4つさし、アプリを動かずとドライバが死にます。
4つとも、ここにドライバを作成し、メジャー番号180 で、それぞれ、
マイナー番号を100 120 140 160としました。
open / closeのみを行うプログラムを作成し、何回か行いました。
何回かおこなうと、ドライバが死にます。
ドライバソースを追っていったのですが、open時に
dev = minor_table[minor]
という行でdevが0になっていました。
minor_tableは、probe関数で取得しているのですが、なぜNULLになったのか
なぞです。どなたかわかる方いらっしゃいますか?
USBを4つさし、ここに、デバイスドライバを作成します。デバイスドライバは、
カーネルにあるusb-skelton.cを使って作成しました。3つまでさして、制御した場合、
動作したのですが、4つさし、アプリを動かずとドライバが死にます。
4つとも、ここにドライバを作成し、メジャー番号180 で、それぞれ、
マイナー番号を100 120 140 160としました。
open / closeのみを行うプログラムを作成し、何回か行いました。
何回かおこなうと、ドライバが死にます。
ドライバソースを追っていったのですが、open時に
dev = minor_table[minor]
という行でdevが0になっていました。
minor_tableは、probe関数で取得しているのですが、なぜNULLになったのか
なぞです。どなたかわかる方いらっしゃいますか?
449login:Penguin
2005/06/29(水) 18:42:20ID:Cc/icRgl Linux のドライバのプログラミングの
良い入門書があったらおしえてください
良い入門書があったらおしえてください
2005/06/29(水) 22:17:33ID:OM3Tds/i
>>448
Kernel2.4.27のソースしか見てないので違ったら失礼。
>マイナー番号を100 120 140 160としました。
これがよくわからん。デフォでは192から16個を順番に割り当てるようになってるが、それをわざわざいじったってことか?
そうなると、スケルトンをあちこち変更してあるのだろうから、さすがにソース無いとなんも判らん。
Kernel2.4.27のソースしか見てないので違ったら失礼。
>マイナー番号を100 120 140 160としました。
これがよくわからん。デフォでは192から16個を順番に割り当てるようになってるが、それをわざわざいじったってことか?
そうなると、スケルトンをあちこち変更してあるのだろうから、さすがにソース無いとなんも判らん。
451login:Penguin
2005/06/29(水) 22:32:06ID:rSbPN/4/2005/06/30(木) 09:52:01ID:6k+4MtMc
12冊=たくさん
納得した
納得した
2005/06/30(木) 11:24:58ID:9CZUZn2O
なぜ12冊なのかちっとも納得いかないんだが
2005/06/30(木) 11:25:42ID:J4A9ru3W
たくさんだからだろう
455Artane. ◆o6gE1yuDGM
2005/07/04(月) 07:22:47ID:Y9u/GUb1 2.6.13で又モジュール周りのAPIが変わりそうな悪寒…
drivers/base/class_simple.cがまるごとなくなってる…そこのAPIを使ってる ttp://www.linuxant.com/ のx86_64用のHSFモデムドライバがそのままでは動かない状況に(;´Д`)
その前はACPI絡みでデッドロックがかーねるにあって動かなかったし、どうなってるんだろうヽ(`ー´)ノ
しかもライセンスがプロプラなのでどーすりゃいいのか頭が痛いです。
drivers/base/class_simple.cがまるごとなくなってる…そこのAPIを使ってる ttp://www.linuxant.com/ のx86_64用のHSFモデムドライバがそのままでは動かない状況に(;´Д`)
その前はACPI絡みでデッドロックがかーねるにあって動かなかったし、どうなってるんだろうヽ(`ー´)ノ
しかもライセンスがプロプラなのでどーすりゃいいのか頭が痛いです。
2005/07/07(木) 22:10:08ID:DftqFJii
2.4はcc -o hoge.o -c hoge.cするだけでokだったけど
2.6はmakeファイルを書かないとダメになった。
はぁ、マンドクセ
2.6はmakeファイルを書かないとダメになった。
はぁ、マンドクセ
2005/07/07(木) 22:51:04ID:Hy9t4ICF
ttp://japan.linux.com/kernel/03/10/26/1026229.shtml
ここの一番下に書いてあるのなら楽だろ。簡単に再利用できるし。
ここの一番下に書いてあるのなら楽だろ。簡単に再利用できるし。
2005/07/08(金) 11:00:44ID:9KK2lDyF
obj-m := unko.o
の1行でよくね?
の1行でよくね?
459login:Penguin
2005/07/24(日) 15:33:14ID:02p0TYUx USBのドライバ書いたことアルヤツいる?
2005/07/28(木) 21:47:52ID:3ylo+PR7
2005/07/31(日) 16:37:19ID:0Amwd3lA
カーネル2.6.xのSMPの wait_event_interruptible でしつもんです。
起こされる要因をビットであらわすようにして
起こされたあとに flag &= ~FLAG; として
起床要因をクリアしたいです。そこで、
wait_event_interruptible(wq, !(flag & FLAG) );
tmpflag = flag; // ◆1
// ★
flag &= ~FLAG; // ◆2
if( tmpflag & ・・・
としていたのですが、割込が運悪く★のところに来たときに
次回起床要因flagを割込ルーチンで設定された直後にクリアしてしまいます。
◆1と◆2をアトミックに処理するのに割禁使うのも大げさな気がします。
どうしたらよいでしょうか? (><)教えて!
起こされる要因をビットであらわすようにして
起こされたあとに flag &= ~FLAG; として
起床要因をクリアしたいです。そこで、
wait_event_interruptible(wq, !(flag & FLAG) );
tmpflag = flag; // ◆1
// ★
flag &= ~FLAG; // ◆2
if( tmpflag & ・・・
としていたのですが、割込が運悪く★のところに来たときに
次回起床要因flagを割込ルーチンで設定された直後にクリアしてしまいます。
◆1と◆2をアトミックに処理するのに割禁使うのも大げさな気がします。
どうしたらよいでしょうか? (><)教えて!
462login:Penguin
2005/08/18(木) 13:31:44ID:wsNIgIg1 ご存知の方がいたら教えて頂けないでしょうか?
printk の動作に関してなのですが、たとえば、ドライバの登録の際に
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \n");
return 0;
}
などと printk を使い、(X-Window は起動しないで)コンソールで
# insmod filename.o
を実行すると Hello kernel とコンソールに表示されるはずなのですが、
表示される場合と表示されない場合があります。実際には、
ほとんどの場合は表示されず、表示されるのは数十回に1回程度です。
そもそも 「printk はコンソールに *必ず* 出力するわけではない」
のでしょうか?どうなのでしょう?
printk の動作に関してなのですが、たとえば、ドライバの登録の際に
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \n");
return 0;
}
などと printk を使い、(X-Window は起動しないで)コンソールで
# insmod filename.o
を実行すると Hello kernel とコンソールに表示されるはずなのですが、
表示される場合と表示されない場合があります。実際には、
ほとんどの場合は表示されず、表示されるのは数十回に1回程度です。
そもそも 「printk はコンソールに *必ず* 出力するわけではない」
のでしょうか?どうなのでしょう?
2005/08/18(木) 14:45:51ID:AA5MGziJ
>>462
ほんとうに\nを入れたのか
ほんとうに\nを入れたのか
464login:Penguin
2005/08/18(木) 14:47:24ID:zqtjM++q465login:Penguin
2005/08/18(木) 14:54:07ID:zqtjM++q X-Window は起動せずにって書いてあったな。 すまそ。
printk() は中で register_console() されたドライバの ->write() を
直接呼んでるから必ず出力されるよ。
出ないとするとログレベルの設定かな。
頭に "<1>" とかつけるといいのでは?
printk() は中で register_console() されたドライバの ->write() を
直接呼んでるから必ず出力されるよ。
出ないとするとログレベルの設定かな。
頭に "<1>" とかつけるといいのでは?
466462
2005/08/18(木) 18:10:38ID:wsNIgIg12005/08/18(木) 18:35:47ID:spRqn48O
flushされていない or
同じメッセージなので纏められているのでは?(この場合、last message repeated xxx times とでる。)
同じメッセージなので纏められているのでは?(この場合、last message repeated xxx times とでる。)
2005/08/18(木) 20:41:10ID:cWStGfHc
469462
2005/08/19(金) 09:09:08ID:qyuoI/lN >>467, 468
/var/log/message には出てます。
改行もしてるんだけどなぁ。
どうもよくわからないので、あきらめることにしました。(^^;
お忙しいところ、レスありがとうございました!
/var/log/message には出てます。
改行もしてるんだけどなぁ。
どうもよくわからないので、あきらめることにしました。(^^;
お忙しいところ、レスありがとうございました!
470login:Penguin
2005/08/19(金) 22:08:36ID:ZOCJz/g6 /etc/syslog.conf に
kern.* /dev/console
とか書いてあるか?
kern.* /dev/console
とか書いてあるか?
471462
2005/08/22(月) 13:16:52ID:nvUzxFpI >>470
を! /etc/syslog.conf の kern.* /dev/console が
コメントアウトされています!
なるほど、これを有効にすると確実に表示されそう
ですねぇ。
今、ハードが客先に行ってしまったので
確認できないんですけど、ハードが戻ってきたら
試してみます。
ありがとうございます!
を! /etc/syslog.conf の kern.* /dev/console が
コメントアウトされています!
なるほど、これを有効にすると確実に表示されそう
ですねぇ。
今、ハードが客先に行ってしまったので
確認できないんですけど、ハードが戻ってきたら
試してみます。
ありがとうございます!
472login:Penguin
2005/10/22(土) 01:07:43ID:EmofMJka やべえ、カッコイイ......デバイスドライバ自分で書いてる人たち......。
Cは一通り入門程度のことは覚えたけど、遊びでstdio.h使うことばっかりで入門の領域出てないんですよね、僕。
Linuxにも入って間もないからシェルスクリプトの使い方もまともに知らないからLinuxプログラミングなんてまだまだ....。
お馬さんの本、大学の図書館にありましたねー、ぱらっと見たけどさっぱり......。
Cは一通り入門程度のことは覚えたけど、遊びでstdio.h使うことばっかりで入門の領域出てないんですよね、僕。
Linuxにも入って間もないからシェルスクリプトの使い方もまともに知らないからLinuxプログラミングなんてまだまだ....。
お馬さんの本、大学の図書館にありましたねー、ぱらっと見たけどさっぱり......。
2005/10/22(土) 17:23:49ID:0rh+z8HN
デバドラ本第3版の和訳もう出てるのね。
洋書を見つけてレジに持っていこうとするも、ふと横を見ると書棚にありました
洋書を見つけてレジに持っていこうとするも、ふと横を見ると書棚にありました
2005/10/23(日) 03:10:35ID:JQc1kDtY
2005/10/23(日) 06:34:02ID:TRsS2wCF
SMPな環境で、あるAという区間とBという区間があるとき
そこを走行するCPUをひとつだけにして、
かつAとBを同時に走らないようにしたい。
最速で処理できる区間ではspin_lock_irqsaveを使ってもいいけど
ちょっと時間を食いたい処理のときには割り禁にしたくない/出来bネい。
こb、いうときってャZマフォを使うbセっけ?
あと、誰かがそこを走行してたら、待たずにあきらめる処理も
どうやるのかいまいちわからんです。
そこを走行するCPUをひとつだけにして、
かつAとBを同時に走らないようにしたい。
最速で処理できる区間ではspin_lock_irqsaveを使ってもいいけど
ちょっと時間を食いたい処理のときには割り禁にしたくない/出来bネい。
こb、いうときってャZマフォを使うbセっけ?
あと、誰かがそこを走行してたら、待たずにあきらめる処理も
どうやるのかいまいちわからんです。
2005/10/23(日) 07:17:36ID:TyUzTsLn
っ[MUTEX]
2005/10/24(月) 11:41:52ID:y/bnKz7N
futex
478login:Penguin
2005/10/24(月) 21:00:03ID:qab5z916 insmod hello.o
が出来ません....
bash: insmod: command not found
と出てしょっぱなから弾かれました....。
FC4を入れているのですが、ぐぐったところKernelのバージョンが
上ってからサポートされなくなった(?)のようなことがかいてありましたが...
ちょっとわからないです..。
が出来ません....
bash: insmod: command not found
と出てしょっぱなから弾かれました....。
FC4を入れているのですが、ぐぐったところKernelのバージョンが
上ってからサポートされなくなった(?)のようなことがかいてありましたが...
ちょっとわからないです..。
2005/10/24(月) 21:41:23ID:nHBdU4lq
2005/10/25(火) 01:26:16ID:boXSHzJM
っ[/sbin/insmod]
2005/10/25(火) 01:50:35ID:mHOxbI49
$ su -
passwd:
#
passwd:
#
2005/10/25(火) 07:29:46ID:gtGeQ0F/
モジュールに挑戦する前にやるべきことがあるだろう。
2005/10/27(木) 22:32:36ID:5z/EqZNh
みなさん、返事が遅れてすみません....。
何日ものぞいていませんでした。
どうやら、おっしゃる通りパスが通っていないようでして、
あれから、/sbin/insmod [filename]
を試してみましたがなんだか、だめだ!のようなメッセージが表示されて
しまい、無理でした。Linuxのデバイスドライバのプログラミングは
BIOSレベルでのデバイスドライバを書くときの参考にもなるかと
思ったのですが、やっぱりLinuxを初めてあまりたっていないのに
背伸びをしすぎたようです。出直してきます。
御回答いただいた方々、ほんとうにありがとうございました。:-)
何日ものぞいていませんでした。
どうやら、おっしゃる通りパスが通っていないようでして、
あれから、/sbin/insmod [filename]
を試してみましたがなんだか、だめだ!のようなメッセージが表示されて
しまい、無理でした。Linuxのデバイスドライバのプログラミングは
BIOSレベルでのデバイスドライバを書くときの参考にもなるかと
思ったのですが、やっぱりLinuxを初めてあまりたっていないのに
背伸びをしすぎたようです。出直してきます。
御回答いただいた方々、ほんとうにありがとうございました。:-)
2005/10/28(金) 05:51:31ID:gqZeSigl
│
│
J
∩_∩ ∩_∩
( ・(ェ)・) (・(ェ)・ )
エサクマか? 違うクマよ、
あわてて食いつくと面倒なことになるクマ。
│
J
∩_∩ ∩_∩
( ・(ェ)・) (・(ェ)・ )
エサクマか? 違うクマよ、
あわてて食いつくと面倒なことになるクマ。
2005/10/28(金) 08:53:26ID:iWNW3bFs
486483
2005/10/30(日) 22:20:06ID:kv9dDPbi やっとできました!
>>167さんのレスのようにお馬さん初版第二章の一番最初のなーんにもしない
モジュールのソースに追加することでロードすることができました。
試しにカーネルソースのmodule.hを見てみるとメッセージでライセンスが無いといわれた経緯から
MODULE_LICENSE (license)の定義をみつけ、それをキーワードにぐぐったらこれを追加するような
記述をみつけることができました。
カーネルバージョンが2.4.1以降からこうなったようなことがinsmodのmanページにあったので一気に解決しました。
たぶん、insmodが認識されなかったのはKterm上からやろうとしたからですね....
嬉しい!
>>167さんのレスのようにお馬さん初版第二章の一番最初のなーんにもしない
モジュールのソースに追加することでロードすることができました。
試しにカーネルソースのmodule.hを見てみるとメッセージでライセンスが無いといわれた経緯から
MODULE_LICENSE (license)の定義をみつけ、それをキーワードにぐぐったらこれを追加するような
記述をみつけることができました。
カーネルバージョンが2.4.1以降からこうなったようなことがinsmodのmanページにあったので一気に解決しました。
たぶん、insmodが認識されなかったのはKterm上からやろうとしたからですね....
嬉しい!
2005/10/30(日) 22:27:05ID:dxIdqW+o
2005/11/19(土) 17:12:54ID:mr3HUTh9
2.4から2.6へポーティングしててkoができるまで行きました。
chrdevなんですけどudevの仲間に入る方法がわかりません。
2.4のころのように直接的にmknodしてinsmodするものなのでしょうか。
chrdevなんですけどudevの仲間に入る方法がわかりません。
2.4のころのように直接的にmknodしてinsmodするものなのでしょうか。
489login:Penguin
2005/11/24(木) 19:13:51ID:tUhrvxEF ageようよ。
2005/11/25(金) 02:45:31ID:Y8mPXznM
質問なのですが、回路の方は勉強しておられますでしょうか?
2005/12/08(木) 03:07:19ID:B0ejvBgu
ちょっと質問させて下さい。
ノートパソコンを使っているんですが、マイクとスピーカーの位置が近いのでサウンドドライバの
読み込み時からサウンドミキサーが起動して音量設定するまでの間にハウリングしたりするんです。
そこで、サウンドドライバ読み込み時にマイクをミュートにしたいと考えたのですが、
例えばドライバの中にマイクの初期音量を0にするコードを追加したりするようなことは可能なんでしょうか?
# スレ違いでしたら誘導お願いします。
ノートパソコンを使っているんですが、マイクとスピーカーの位置が近いのでサウンドドライバの
読み込み時からサウンドミキサーが起動して音量設定するまでの間にハウリングしたりするんです。
そこで、サウンドドライバ読み込み時にマイクをミュートにしたいと考えたのですが、
例えばドライバの中にマイクの初期音量を0にするコードを追加したりするようなことは可能なんでしょうか?
# スレ違いでしたら誘導お願いします。
492login:Penguin
2005/12/08(木) 10:11:04ID:j53o+rA9 ageようよ。
493login:Penguin
2005/12/11(日) 18:47:51ID:rh+AeURO はじめまして。
Windows対応のRS232C->USB変換ケーブルを使って、スイッチャを
LINUXのPCで制御しようとしているんですが、そもそもドライバを
自分で作る必要があるのでしょうか?
LINUXの環境はOSがRED HAT 9でカーネルは2.4です。
もしくは必要かどうかを確認する方法ってあるのでしょうか?
ご存知の方がいらっしゃいましたら、答えていただけないでしょうか?
よろしくお願いします。
Windows対応のRS232C->USB変換ケーブルを使って、スイッチャを
LINUXのPCで制御しようとしているんですが、そもそもドライバを
自分で作る必要があるのでしょうか?
LINUXの環境はOSがRED HAT 9でカーネルは2.4です。
もしくは必要かどうかを確認する方法ってあるのでしょうか?
ご存知の方がいらっしゃいましたら、答えていただけないでしょうか?
よろしくお願いします。
494login:Penguin
2005/12/11(日) 21:37:52ID:ZmBeQHZx495493
2005/12/13(火) 02:44:01ID:bCmTAm2t >>494
お返事ありがとうございます。
/var/log/messagesでログを見たら、新しいUSBデバイスが認識できている
っぽいことが書かれてました。
たぶんRS232C->USB変換ケーブルは認識できてると思います。
で、早速プログラム組んでスイッチャに信号を送ってみたんですが、
これがうんともスンとも言わなくて。
もしかして変換ケーブルだけ認識しててスイッチャは認識していないかも
って考えたのですが、シリアル通信だから信号を送るだけなら送れますよね?
お返事ありがとうございます。
/var/log/messagesでログを見たら、新しいUSBデバイスが認識できている
っぽいことが書かれてました。
たぶんRS232C->USB変換ケーブルは認識できてると思います。
で、早速プログラム組んでスイッチャに信号を送ってみたんですが、
これがうんともスンとも言わなくて。
もしかして変換ケーブルだけ認識しててスイッチャは認識していないかも
って考えたのですが、シリアル通信だから信号を送るだけなら送れますよね?
2005/12/13(火) 21:07:28ID:sg6goQTn
/dev/ttyUSBの読み書き許可がなかったよ
497色情前世鑑定士
2005/12/13(火) 23:49:52ID:xAfc4hOf498login:Penguin
2005/12/17(土) 23:06:34ID:oosooT9i >>496,497
助言ありがとうございます。
パーミッションに関してはchmod 666を実行したので、大丈夫だと思います。
ボーレート他の初期設定は、少し自信がないのですが、他のシリアル通信
のプログラムを参考にして一通りプログラム内で設定しています。
sttyで確認するというのは知らなかったので、早速やってみたいと思います。
ありがとうございます。
助言ありがとうございます。
パーミッションに関してはchmod 666を実行したので、大丈夫だと思います。
ボーレート他の初期設定は、少し自信がないのですが、他のシリアル通信
のプログラムを参考にして一通りプログラム内で設定しています。
sttyで確認するというのは知らなかったので、早速やってみたいと思います。
ありがとうございます。
2006/01/28(土) 02:19:52ID:eIqcEw8I
馬本買った記念age
500login:Penguin
2006/01/28(土) 02:22:46ID:eIqcEw8I ageて無かった…orz
501:login:Penguin
2006/01/28(土) 13:24:51ID:z02En7Mn tky007lip10.iij.net [210.130.172.193]
502login:Penguin
2006/02/06(月) 00:56:30ID:gxgsnq8Z age
2006/03/19(日) 20:02:53ID:wmRM5297
2006/03/21(火) 02:41:04ID:wxAXo3DG
SMPプログラミングの入門ページとかありませんかね?
どちらかというとAの処理をCPU0に割り当ててBの処理を1に
って感じで分けながら処理するタイプのプログラミングなので
ASMPのほうがよいのですがこのような話題はどこで聞けばよいのでしょうか
どちらかというとAの処理をCPU0に割り当ててBの処理を1に
って感じで分けながら処理するタイプのプログラミングなので
ASMPのほうがよいのですがこのような話題はどこで聞けばよいのでしょうか
505login:Penguin
2006/03/30(木) 20:19:25ID:P2MixPUa なんか誰も見てないような気もするけどちょっと質問
Redhat ES4(kernel 2.6..9-11 x86-64)
CPU Xeon 2.8G(HT-on EM64T)
メモリ4GB
な環境で、SCSI Low level driverを書いてるんですが、
物理メモリ4GBしかないのに、SCSI Mid levle driverから
渡されてくる転送アドレス(物理アドレス)が4GBを超えた
アドレスが渡されて来ます。
当然メモリ未実装エリアのアドレスなので転送しようにも
出来ない訳でSCSIカードが転送しようとしてエラーとなり
ます。
pci_set_dma_msakに指定している値は、SCSIカードがサ
ポートしてるアドレス範囲の40bitを指定しています。
これを32bitマスクにすると4GBを超えるアドレスは来な
くなるんですけど、もしかしてpci_set_dma_msakて実装メ
モリ量も気にしなければいけないんでしょうか?
馬本見てもそんな事書いてないし。たんにハードウェアの
アドレス範囲を宣言するだけと認識してるんですけど。
何方かご存知の方居られたらご教授願います。
Redhat ES4(kernel 2.6..9-11 x86-64)
CPU Xeon 2.8G(HT-on EM64T)
メモリ4GB
な環境で、SCSI Low level driverを書いてるんですが、
物理メモリ4GBしかないのに、SCSI Mid levle driverから
渡されてくる転送アドレス(物理アドレス)が4GBを超えた
アドレスが渡されて来ます。
当然メモリ未実装エリアのアドレスなので転送しようにも
出来ない訳でSCSIカードが転送しようとしてエラーとなり
ます。
pci_set_dma_msakに指定している値は、SCSIカードがサ
ポートしてるアドレス範囲の40bitを指定しています。
これを32bitマスクにすると4GBを超えるアドレスは来な
くなるんですけど、もしかしてpci_set_dma_msakて実装メ
モリ量も気にしなければいけないんでしょうか?
馬本見てもそんな事書いてないし。たんにハードウェアの
アドレス範囲を宣言するだけと認識してるんですけど。
何方かご存知の方居られたらご教授願います。
2006/03/31(金) 11:41:12ID:zMWwd0XE
適当に書いてみる。
他のドライバ見たらわかるけど、実装メモリは気にしない。
pci_dma_syncなんたらが失敗するの?
他のドライバ見たらわかるけど、実装メモリは気にしない。
pci_dma_syncなんたらが失敗するの?
507login:Penguin
2006/03/31(金) 21:18:57ID:OpI/WZIP おお見てる人がw
実装メモリはカーネルが握ってるから本来気にする必要が無いのは
分かってるんですが、そのカーネルから来るアドレスが実装容量を超
えたアドレスを通知してくるので悩んで降ります。
pci_dma_syncでなくpci_map_sgで作られたスキャッタ/ギャザーリスト
の中の物理アドレスが未実装領域のアドレスを指してる感じですね。
pci_set_dma_maskで32bitマスク(0xffffffff)してやればpci_map_sgで
作られたスキャッタ/ギャザーリスト内のアドレスは4GB未満のアドレ
ス範囲で収まる感じです。(当然といえば当然)
それを40bitマスク(0xffffffffff)にすると、実メモリ4GBしか無いにも
関わらず32bit以上、40bit未満のアドレスがスキャッタ/ギャザーリス
トに含まれてしまいます。
カーネルのバグを疑い出して、カーネルソース追い始めた所でなの
で実際にアドレス作り出す所まではまだ追いきれて無い状態です。
ご指摘の通り他のSCSI系ドライバのソースも参考にしてますが、実
装メモリなんて気にして無いしなんとも不可解…。
元々Solarisのドライバ作ってたんだけど、Linuxは今回初でかなり困っ
てる状態ですorz
実装メモリはカーネルが握ってるから本来気にする必要が無いのは
分かってるんですが、そのカーネルから来るアドレスが実装容量を超
えたアドレスを通知してくるので悩んで降ります。
pci_dma_syncでなくpci_map_sgで作られたスキャッタ/ギャザーリスト
の中の物理アドレスが未実装領域のアドレスを指してる感じですね。
pci_set_dma_maskで32bitマスク(0xffffffff)してやればpci_map_sgで
作られたスキャッタ/ギャザーリスト内のアドレスは4GB未満のアドレ
ス範囲で収まる感じです。(当然といえば当然)
それを40bitマスク(0xffffffffff)にすると、実メモリ4GBしか無いにも
関わらず32bit以上、40bit未満のアドレスがスキャッタ/ギャザーリス
トに含まれてしまいます。
カーネルのバグを疑い出して、カーネルソース追い始めた所でなの
で実際にアドレス作り出す所まではまだ追いきれて無い状態です。
ご指摘の通り他のSCSI系ドライバのソースも参考にしてますが、実
装メモリなんて気にして無いしなんとも不可解…。
元々Solarisのドライバ作ってたんだけど、Linuxは今回初でかなり困っ
てる状態ですorz
2006/03/32(土) 02:19:11ID:9G03KeUN
また別の人が適当に書いてみる。
hugemem使ってみては?
hugemem使ってみては?
2006/03/32(土) 10:42:43ID:afhcBPMx
hugememってi386じゃなかったっけ?
x86_64で4G載ってるって事は、IOMMUとか関係あるのかな。
結局virt_to_bus(pci-nommu.c)かvirt_to_phys(pci-gart.c)呼んでるから、
scatterlistのpageが期待しない値なんでしょうけど、そこら辺調べたらいいのかな。
ドライバいじったことはあるけど、書いたこと無いので適当です。
x86_64で4G載ってるって事は、IOMMUとか関係あるのかな。
結局virt_to_bus(pci-nommu.c)かvirt_to_phys(pci-gart.c)呼んでるから、
scatterlistのpageが期待しない値なんでしょうけど、そこら辺調べたらいいのかな。
ドライバいじったことはあるけど、書いたこと無いので適当です。
2006/03/32(土) 10:47:55ID:shKEnT0S
似たようなドライバの中身を調べてみればすぐわかりそうなものだが
2006/03/32(土) 15:12:47ID:afhcBPMx
>>510
俺もそう思って、見たけどわからなかったw
SCSI側からと、PCI側から見たら、よくわからなくなった。。
bioがよくわからん。
pci_set_dma_maskって要するにbounceするかどうかなのか?
あとは、ページ確保するときのDMA/DMA32の切り分け。
俺もそう思って、見たけどわからなかったw
SCSI側からと、PCI側から見たら、よくわからなくなった。。
bioがよくわからん。
pci_set_dma_maskって要するにbounceするかどうかなのか?
あとは、ページ確保するときのDMA/DMA32の切り分け。
512login:Penguin
2006/03/32(土) 16:46:33ID:p6EHT8/a うぉレスが増えてる。
>>508
hugemem は、>>509 が指摘の通り、x86_64では無いですね。
ただこのドライバは、一つのソースでRedhat ES4の 32bit Uni-processer/
SMP/hugemem kernelとx86-64 kernelの4種類サポートでして、実装メモリ
12GBのマシンでhugememカーネル使ってる分にはアドレスは正常な値が
返って来てます。
hugemem kernelとx86-64 kernelではDMAアドレスは64bit幅で来るのでこ
の二つのカーネルの時は処理(アドレス計算とか)は共通にしてます。
>>509
正にそうです。scatterlistに入ってるpageが明後日の所を指し示してるので、
そのままSCSIカードに送るとカード上のIOPのファームがアクセスに行くとメ
モリが無いのでメモリアクセスエラーを検出します。
>>510
SCSIカードと言うか実はRAIDコントローラでして、カード上にPCI-PCIブリッ
ジが乗っかっててIOPとSCSIコントローラが載ってるカードです。
カード−ドライバ間はI2Oで通信してて、近い奴としてはmagariadとかqla1280
当たりなんですよね。他にも色々見てるんですが違いはそうは無い感じ。
>>511
bioはいまいち良く分からないですね。
ページ確保の時のDMA/DMA32て、GFP_DMA/GFP_DMA32フラグの事でし
ょうか?
今使ってるカーネルをみるとGFP_DMA32が未定義でして、kernl-2.6.14とか
2.6.15とか見ると定義されてるんですよね。
なんかその辺も絡んでるのかなと気にはなってはいました。
皆さんアドバイスありがとうです。
もう少しカーネルソース見て来ます。
>>508
hugemem は、>>509 が指摘の通り、x86_64では無いですね。
ただこのドライバは、一つのソースでRedhat ES4の 32bit Uni-processer/
SMP/hugemem kernelとx86-64 kernelの4種類サポートでして、実装メモリ
12GBのマシンでhugememカーネル使ってる分にはアドレスは正常な値が
返って来てます。
hugemem kernelとx86-64 kernelではDMAアドレスは64bit幅で来るのでこ
の二つのカーネルの時は処理(アドレス計算とか)は共通にしてます。
>>509
正にそうです。scatterlistに入ってるpageが明後日の所を指し示してるので、
そのままSCSIカードに送るとカード上のIOPのファームがアクセスに行くとメ
モリが無いのでメモリアクセスエラーを検出します。
>>510
SCSIカードと言うか実はRAIDコントローラでして、カード上にPCI-PCIブリッ
ジが乗っかっててIOPとSCSIコントローラが載ってるカードです。
カード−ドライバ間はI2Oで通信してて、近い奴としてはmagariadとかqla1280
当たりなんですよね。他にも色々見てるんですが違いはそうは無い感じ。
>>511
bioはいまいち良く分からないですね。
ページ確保の時のDMA/DMA32て、GFP_DMA/GFP_DMA32フラグの事でし
ょうか?
今使ってるカーネルをみるとGFP_DMA32が未定義でして、kernl-2.6.14とか
2.6.15とか見ると定義されてるんですよね。
なんかその辺も絡んでるのかなと気にはなってはいました。
皆さんアドバイスありがとうです。
もう少しカーネルソース見て来ます。
2006/04/04(火) 08:20:23ID:0xn4pI8o
気になるから、どうなったか知りたいです。
2006/04/04(火) 13:11:55ID:p7vmOtaT
2006/04/06(木) 22:28:49ID:Mnqgo3eJ
>>513
まだ色々と追っかけてる途中です。
とりあえずPCIドライバ周りから追っかけ中です。
PCIドライバを見た限りでは、pci_map_sgすると中でdma_map_sg
呼び出しててその中見てもあんまり大したことしてなさそうですね。
やはりbio周りも見ないと駄目なのかも。
もうちとかかりそうですが、わかり次第、結果をお知らせします。
まだ色々と追っかけてる途中です。
とりあえずPCIドライバ周りから追っかけ中です。
PCIドライバを見た限りでは、pci_map_sgすると中でdma_map_sg
呼び出しててその中見てもあんまり大したことしてなさそうですね。
やはりbio周りも見ないと駄目なのかも。
もうちとかかりそうですが、わかり次第、結果をお知らせします。
516505
2006/04/08(土) 14:24:03ID:+mDmSXuo 原因わかりました。
結論から言うと、pci_map_sg()で作られるSGリストのアドレスは正常でした。
問題なのはpci_map_single()で出てくるアドレスが、低位メモリだとカーネル
論理アドレスを返し、高位メモリだとカーネル仮想アドレスを返してるのが、
原因でした。
高位メモリだとページをダイナミックに確保されるため、物理アドレスとペー
ジが1:1でマッピングされないので、pci_map_single()だとvirt_to_physしてる
だけなので使えませんね。
なのでpci_map_pageで確保してやれば問題は消えました。
SGリストに変なアドレスが入ると言ってましたが、カードのファーム側で受
け取ったリストを見てたのですが、カード内でドライバから受けた転送アドレ
スをカード内部のバッファに結びつける為にファームが独自にSGリストを
再構成しており、そのリストがpci_map_sg()で作られた物と勘違いしてまし
た。OTL
色々アドバイスありがとうございました。
結論から言うと、pci_map_sg()で作られるSGリストのアドレスは正常でした。
問題なのはpci_map_single()で出てくるアドレスが、低位メモリだとカーネル
論理アドレスを返し、高位メモリだとカーネル仮想アドレスを返してるのが、
原因でした。
高位メモリだとページをダイナミックに確保されるため、物理アドレスとペー
ジが1:1でマッピングされないので、pci_map_single()だとvirt_to_physしてる
だけなので使えませんね。
なのでpci_map_pageで確保してやれば問題は消えました。
SGリストに変なアドレスが入ると言ってましたが、カードのファーム側で受
け取ったリストを見てたのですが、カード内でドライバから受けた転送アドレ
スをカード内部のバッファに結びつける為にファームが独自にSGリストを
再構成しており、そのリストがpci_map_sg()で作られた物と勘違いしてまし
た。OTL
色々アドバイスありがとうございました。
2006/04/08(土) 16:09:33ID:MBAxFSYD
2006/04/10(月) 22:36:55ID:C69QC/MM
519505
2006/04/10(月) 23:00:56ID:9eFrvNz62006/04/10(月) 23:42:28ID:Cs5Rh9+Y
>>519
> Linuxでの開発はカーネルや他のドライバソース読まなけば
> 資料が少ない所がキツイですね。
ちょっと教えてください。
Linuxより資料が多いOSってなんのことを指してますか?
自分は主にLinuxの開発に携わってますが、いつもオープンソースのありがたみを
感じながらやっているので、Linuxが資料が少ない、というのは意外です。
> Linuxでの開発はカーネルや他のドライバソース読まなけば
> 資料が少ない所がキツイですね。
ちょっと教えてください。
Linuxより資料が多いOSってなんのことを指してますか?
自分は主にLinuxの開発に携わってますが、いつもオープンソースのありがたみを
感じながらやっているので、Linuxが資料が少ない、というのは意外です。
2006/04/11(火) 00:42:17ID:KjDgNH9L
OSによっては中身がさっぱりわからないままドライバ開発しなきゃいけない事もあるしな。
つーか、そっちのほうが多そう。
つーか、そっちのほうが多そう。
2006/04/11(火) 00:47:03ID:rZUiZ4e7
2006/04/11(火) 00:57:41ID:9nKANwAS
そこでmain treeにマージですよ。
main tree内の変更はたいていは面倒をみてくれる。
main tree内の変更はたいていは面倒をみてくれる。
524login:Penguin
2006/05/11(木) 18:07:51ID:PmwpTb/Y ある内蔵デバイスのドライバでPCの機種毎に処理を変えなければいけない部分が
あり、ユーザ負担を減らすためにドライバ側で自動判別したいと思っています。
機種は違うのにSubvendorIDやSubdeviceIDまで何故か一致しているので、SMBIOS
のDMI情報を参照して機種を判別したいのですが、これって可能なんでしょうか?
そんなやり方は行儀が悪いとか、他にもっとまともなやり方があるとか何でも
構いませんので、どうかご教示をよろしくお願いします。m(__)m
あり、ユーザ負担を減らすためにドライバ側で自動判別したいと思っています。
機種は違うのにSubvendorIDやSubdeviceIDまで何故か一致しているので、SMBIOS
のDMI情報を参照して機種を判別したいのですが、これって可能なんでしょうか?
そんなやり方は行儀が悪いとか、他にもっとまともなやり方があるとか何でも
構いませんので、どうかご教示をよろしくお願いします。m(__)m
525好色少年のススメ
2006/05/11(木) 23:43:06ID:Uu/mTCgT 確かに行儀はよくないかも
新しいハードが出るたびにパッチ提供とか考えたら面倒だし
たとえそれが自社ハードだとしてもバージョンアップあるだろうし
判別はユーザランドで行う方が気分も楽だし処理も楽だしバグも少ない
新しいハードが出るたびにパッチ提供とか考えたら面倒だし
たとえそれが自社ハードだとしてもバージョンアップあるだろうし
判別はユーザランドで行う方が気分も楽だし処理も楽だしバグも少ない
2006/05/26(金) 20:11:11ID:YiUMorw/
ttp://lkml.org/lkml/2006/5/24/238
527login:Penguin
2006/08/20(日) 01:06:14ID:BobpEKad カーネル層のモジュールのテストプログラム
を作ってるんですが、カーネル層でinit_moduleや
ioctlからスレッドを起こして daemonのように
動作させることってできるんでしょうか?
Linuxデバイスドライバを読んでもスレッドを
起こすような処理は載っていないようなので
参考書籍だけでも教えていただけるとありがたいです。
を作ってるんですが、カーネル層でinit_moduleや
ioctlからスレッドを起こして daemonのように
動作させることってできるんでしょうか?
Linuxデバイスドライバを読んでもスレッドを
起こすような処理は載っていないようなので
参考書籍だけでも教えていただけるとありがたいです。
2006/08/20(日) 11:29:13ID:EWXtKjUy
2006/08/20(日) 20:55:18ID:bg2sTV9e
というか、普通に載ってるよね
530login:Penguin
2006/08/24(木) 12:55:11ID:6WITQjoc そいや、最近のノートPCには指紋センサーがあるけど
あれはハックできるものなの?
あれはハックできるものなの?
2006/08/24(木) 13:34:05ID:wKY4BjAS
2006/08/25(金) 00:34:04ID:CPHGcnDi
>>531 せんきゅー!
2006/08/26(土) 07:37:08ID:F4NpQAPn
2006/10/04(水) 21:49:48ID:EGTQjLn1
すみません、どなたかわかる方教えてください。
現在、XFree86でグラフィックドライバを作ってます。チップは独自のものです。
バス等に接続されておらず、メモリマップドI/Oでアクセスします。
一応画面は出たのですが、1024*768だと縦が半分しか表示されず、
(縦に圧縮される感じ。マウスカーソルが縦につぶれている)
1280*1024だと画面が横に5個くらい表示されてしまいます。
使用しているチップは1ライン4096byte固定なので、解像度に応じて次のラインを
描画するアドレスを更新しなくてはなりません。
カーネルのFBドライバだとline_lengthとかの変数に設定してあげればうまいこと
描画してくれるのですが、XFree86の構造体にはそういった変数が見当たりません。
カーネルFBドライバのline_lengthとかに相当するものはどれでしょうか?
縦に圧縮されるのと画面が5個くらい表示されるのは、別問題な気がしてます。
今、手元にソースがないんですが、InitをするときにvirtualYを*2してやると縦が一見
正常っぽく表示されました。カーソルとかが縦につぶれたままなので、根本対策には
なっていません。
現在、XFree86でグラフィックドライバを作ってます。チップは独自のものです。
バス等に接続されておらず、メモリマップドI/Oでアクセスします。
一応画面は出たのですが、1024*768だと縦が半分しか表示されず、
(縦に圧縮される感じ。マウスカーソルが縦につぶれている)
1280*1024だと画面が横に5個くらい表示されてしまいます。
使用しているチップは1ライン4096byte固定なので、解像度に応じて次のラインを
描画するアドレスを更新しなくてはなりません。
カーネルのFBドライバだとline_lengthとかの変数に設定してあげればうまいこと
描画してくれるのですが、XFree86の構造体にはそういった変数が見当たりません。
カーネルFBドライバのline_lengthとかに相当するものはどれでしょうか?
縦に圧縮されるのと画面が5個くらい表示されるのは、別問題な気がしてます。
今、手元にソースがないんですが、InitをするときにvirtualYを*2してやると縦が一見
正常っぽく表示されました。カーソルとかが縦につぶれたままなので、根本対策には
なっていません。
535Mr.名無しさん
2006/10/09(月) 16:36:24ID:OGKR436u ■■■■■■■■■■■■■■■■
■ ■ 違う板にコピペすると、四角の枠の中に
■ ■ メッセージとURLが現れる不思議な絵。
■ ■
■ ■ (その仕組みがリンク先に書いてある)
■ ■
■ ■ この原理を応用すると、まったく新しい
■ ■ コピペが作れる予感。
■■■■■■■■■■■■■■■■
■ ■ 違う板にコピペすると、四角の枠の中に
■ ■ メッセージとURLが現れる不思議な絵。
■ ■
■ ■ (その仕組みがリンク先に書いてある)
■ ■
■ ■ この原理を応用すると、まったく新しい
■ ■ コピペが作れる予感。
■■■■■■■■■■■■■■■■
2006/11/05(日) 18:18:15ID:j6ZWju7f
>>534
グラフィックチップのモード設定を間違えている予感
グラフィックチップのモード設定を間違えている予感
2006/12/14(木) 22:35:16ID:JyAlagq8
すみません どなたか助けて下さる方はいらっしゃらないでしょうか?
当方PCIデバイスのドライバをLinuxデバイスドライバ読みながら
作成しております。
今DMAを用いてread,writeさせようと思っているのですが、
うまく転送ができておりません。
DMA転送の関数としては
dma_buff = kmalloc( count, GFP_KERNEL | __GFP_DMA)
bus_addr = pci_map_single( pci_dev, dma_buff, count,
direction );
flags = claim_dma_lock();
disable_dma(channel);
clear_dma_ff(channel);
set_dma_mode(channel, mode);
set_dma_addr(channel, bus_addr);
set_dma_count(channel, count);
enable_dma(channel);
release_dma_lock(flags);
てな感じです。
get_dma_residueで転送できてるかどうかみてるのですが
まったく転送されてないみたいです。
DMAコントローラのレジスタの設定とかは
ほかに何かいるのでしょうか。
ちなみにターゲットのPCはPen3 800MHZ
チップセットは815です。
どなたかお知りの方いらっしゃったら お願いします。
当方PCIデバイスのドライバをLinuxデバイスドライバ読みながら
作成しております。
今DMAを用いてread,writeさせようと思っているのですが、
うまく転送ができておりません。
DMA転送の関数としては
dma_buff = kmalloc( count, GFP_KERNEL | __GFP_DMA)
bus_addr = pci_map_single( pci_dev, dma_buff, count,
direction );
flags = claim_dma_lock();
disable_dma(channel);
clear_dma_ff(channel);
set_dma_mode(channel, mode);
set_dma_addr(channel, bus_addr);
set_dma_count(channel, count);
enable_dma(channel);
release_dma_lock(flags);
てな感じです。
get_dma_residueで転送できてるかどうかみてるのですが
まったく転送されてないみたいです。
DMAコントローラのレジスタの設定とかは
ほかに何かいるのでしょうか。
ちなみにターゲットのPCはPen3 800MHZ
チップセットは815です。
どなたかお知りの方いらっしゃったら お願いします。
2006/12/15(金) 11:02:30ID:Qc0JIFW5
539537
2006/12/15(金) 15:20:46ID:NJleqqJR おお、早速のレスありがとうございます。
DMA転送するにはチップセットの中の8237DMAコントローラをいじればいいって思ってました。バスマスタについて少し調べましたが、IDEのDMAもバスマスタになるんですね、知りませんでした。
となるとこのバスマスタはどうやればいいのでしょうか?参考になるものでもいいので、教えてください、お願いします。
DMA転送するにはチップセットの中の8237DMAコントローラをいじればいいって思ってました。バスマスタについて少し調べましたが、IDEのDMAもバスマスタになるんですね、知りませんでした。
となるとこのバスマスタはどうやればいいのでしょうか?参考になるものでもいいので、教えてください、お願いします。
2006/12/15(金) 23:40:00ID:72pQobUh
ターゲットとなるPCIデバイスの仕様がわからなきゃデバイスドライバは書けないよ
せめて型番だけでも出してくれ
せめて型番だけでも出してくれ
2006/12/16(土) 18:42:01ID:wkeveW0d
ドライバというか、モジュールの話なんですけど
スレッドを使ったせい?なのか、psすると
3635 pts/0 R 0:00 modprobe hoge
と残るんですが、これは出ないようには出来ないものなんでしょうか?
勿論 rmmod hoge すると消えるんですけど。
スレッドを使ったせい?なのか、psすると
3635 pts/0 R 0:00 modprobe hoge
と残るんですが、これは出ないようには出来ないものなんでしょうか?
勿論 rmmod hoge すると消えるんですけど。
542537
2006/12/17(日) 19:34:20ID:BtOAund7 ターゲットのデバイスは内製のボードなのですよ orz
となると やっぱボード自体を作った人に聞いたほうがいいのかな?
となると やっぱボード自体を作った人に聞いたほうがいいのかな?
2006/12/17(日) 19:50:10ID:pl1Ns6BC
チップのレジスタ仕様と、制御のシーケンスがわからないとドライバは書けないよ。
2006/12/17(日) 20:36:37ID:6E+xGodr
>>542
当然聞くべきなのですよ
当然聞くべきなのですよ
2006/12/17(日) 22:08:40ID:SVqrrgVr
チップも内製なのか?
だったらデバイスドライバもチップ開発チームが書くものだよな
少なくともサンプルコードの類は書くはずだ
そうでなくて市販のチップを使ってPWBAだけ内製したのなら
使用したチップのデータシートなりプログラマーズガイドなりを読めばいいだけの話
だったらデバイスドライバもチップ開発チームが書くものだよな
少なくともサンプルコードの類は書くはずだ
そうでなくて市販のチップを使ってPWBAだけ内製したのなら
使用したチップのデータシートなりプログラマーズガイドなりを読めばいいだけの話
546537
2006/12/18(月) 01:17:23ID:5wopQO2S ほぼ内製だったと思います。
ちょっと月曜日会社いったら、聞いてみようと思います。
大変参考になりました、ありがとうございました。
ところで、これは単なる質問ですが、
マザボのチップセットにある8237とかの
DMAコントローラは古いし遅いみたいだから
PCIとかIDEとかに使われてないみたいだけど、
Pen3 800MHzとかでも PIOのが早いの?
ちょっと月曜日会社いったら、聞いてみようと思います。
大変参考になりました、ありがとうございました。
ところで、これは単なる質問ですが、
マザボのチップセットにある8237とかの
DMAコントローラは古いし遅いみたいだから
PCIとかIDEとかに使われてないみたいだけど、
Pen3 800MHzとかでも PIOのが早いの?
2006/12/18(月) 07:35:08ID:a8xYea1H
最近のデバイスで言うDMAはバスマスタDMAのことだよ。
バスマスタってのはデバイス側が主導権とってバスを制御して
CPUの頭越しにメインメモリにデータ出し入れすることだ。
そのためにはデバイスにバスをのっとってデータ転送しろって命令を
CPUからデバイスに発行する必要がある。
その手続きを知るためにレジスタなりデータシートなりを調べろって
みなさん言ってるんだよ。
バスマスタってのはデバイス側が主導権とってバスを制御して
CPUの頭越しにメインメモリにデータ出し入れすることだ。
そのためにはデバイスにバスをのっとってデータ転送しろって命令を
CPUからデバイスに発行する必要がある。
その手続きを知るためにレジスタなりデータシートなりを調べろって
みなさん言ってるんだよ。
548537
2006/12/19(火) 00:01:59ID:2Sv0wv+g なるほろ、大変勉強になりました。
ハード屋さんからマニュアルゲットして
がんばってみます。
ハード屋さんからマニュアルゲットして
がんばってみます。
549login:Penguin
2006/12/19(火) 23:53:27ID:g20RCuxU2006/12/27(水) 05:38:58ID:krfJbXj5
すみません ドライバでDMA転送するための連続したメモリ領域(64MB)を確保したいのです。
kmallocで確保可能な連続したDMA領域は最大128kB ということはネットで検索すると出て来たのですが、
どうすればドライバのDMA転送で利用可能な128kBを超えるの連続領域を確保出来るでしょうか?
OSはlinuxカーネル2.6です。
ご存じの方おられましたら御教示戴きたくよろしくお願い致します。
kmallocで確保可能な連続したDMA領域は最大128kB ということはネットで検索すると出て来たのですが、
どうすればドライバのDMA転送で利用可能な128kBを超えるの連続領域を確保出来るでしょうか?
OSはlinuxカーネル2.6です。
ご存じの方おられましたら御教示戴きたくよろしくお願い致します。
2006/12/27(水) 10:51:31ID:mQ5aQPBa
>>550
とりあえずそのふざけた石を投げ捨てれ。
やるならalloc_pagesだろうなあ。そのサイズで連続領域を簡単に確保できるとは思えんが。
ついでに書いておくと128KByte制限は8237の呪いなのでPCIならそんなものはない。
とりあえずそのふざけた石を投げ捨てれ。
やるならalloc_pagesだろうなあ。そのサイズで連続領域を簡単に確保できるとは思えんが。
ついでに書いておくと128KByte制限は8237の呪いなのでPCIならそんなものはない。
2006/12/27(水) 12:43:43ID:krfJbXj5
投げ捨てぇー…れないorz
>>551
早速ありがとうございます。
検索してても思ったのですが、
なんか連続領域"64MB"っていうのは常識外れっぽいのですね…
とはいえ組込み系で使った独自ロケットI/OのPC向け転用の必要があり、
石を投げ捨てる訳にもいかず今回の質問とあいなりました。
alloc_pages、試してみます!!
回答感謝いたします。
センキュー!!!!
>>551
早速ありがとうございます。
検索してても思ったのですが、
なんか連続領域"64MB"っていうのは常識外れっぽいのですね…
とはいえ組込み系で使った独自ロケットI/OのPC向け転用の必要があり、
石を投げ捨てる訳にもいかず今回の質問とあいなりました。
alloc_pages、試してみます!!
回答感謝いたします。
センキュー!!!!
2006/12/28(木) 02:29:39ID:4Oi09t3r
かなり強引だけど、カーネルオプションで使用メモリ量に制限かけといて、
未使用領域を作った上でそこ使っちゃえば?
未使用領域を作った上でそこ使っちゃえば?
2006/12/28(木) 12:33:40ID:vc2Jrznf
2006/12/29(金) 09:28:41ID:JbqPlaTm
2006/12/29(金) 10:44:35ID:PkRb73AX
RocketIOってことはXilinxのFPGAだよな
だったら128KBのブロックのアドレスポインタリストを渡すと
自動的にリスト通りブロックをたどって転送するように
FPGA回路を再設計するのがまっとうな手段だろうな
デバイスドライバやOS設定の変更ではどうにもならんと思う
だったら128KBのブロックのアドレスポインタリストを渡すと
自動的にリスト通りブロックをたどって転送するように
FPGA回路を再設計するのがまっとうな手段だろうな
デバイスドライバやOS設定の変更ではどうにもならんと思う
2006/12/30(土) 00:07:40ID:SZb58Bld
カーネル組込みで、ドライバ初期化のときなら確保できそうな気もするな。
開放したら二度と確保できなくなりそうだが。
開放したら二度と確保できなくなりそうだが。
2007/01/01(月) 22:05:23ID:uXbHjsPd
明けましておめでとうございます。
さらにレス&アドバイスありがとうございます。
うー勉強不足。知らないこと多過ぎますね!ハードル高いです orz
安定化まで考えると更にハードル上がりそうですが、ハード側とも相談してみます。
それでは本年もよろしくお願いいたします!!
さらにレス&アドバイスありがとうございます。
うー勉強不足。知らないこと多過ぎますね!ハードル高いです orz
安定化まで考えると更にハードル上がりそうですが、ハード側とも相談してみます。
それでは本年もよろしくお願いいたします!!
2007/01/19(金) 00:41:46ID:xhnZtOc/
皆様に聞きたいのですが
当方Linux 2.6カーネルの元でドライバの開発を行っています。
起動してからinsmodでインサートするタイプのモジュールを作っています。
カーネルをフリーズさせたりして固まらせてしまって、やむなくリセットボタンを
押す事が多々あるのですが、その際にファイルシステムのチェックが
強制的に行われてしまい、これでかなりの時間をロスしてしまいます。
何とかこのファイルチェックを飛ばして時間の短縮を行う方法はないでしょうか?
VMwareとかの仮想マシンを使えばいいのかもしれませんが、
特殊命令を使っておりますので、仮想マシンがその命令をサポートしていないために
導入できません。
当方Linux 2.6カーネルの元でドライバの開発を行っています。
起動してからinsmodでインサートするタイプのモジュールを作っています。
カーネルをフリーズさせたりして固まらせてしまって、やむなくリセットボタンを
押す事が多々あるのですが、その際にファイルシステムのチェックが
強制的に行われてしまい、これでかなりの時間をロスしてしまいます。
何とかこのファイルチェックを飛ばして時間の短縮を行う方法はないでしょうか?
VMwareとかの仮想マシンを使えばいいのかもしれませんが、
特殊命令を使っておりますので、仮想マシンがその命令をサポートしていないために
導入できません。
2007/01/19(金) 02:15:30ID:VcfRHkiI
2007/01/19(金) 08:04:16ID:/YcMJPuk
/etc/fstabの6番目のフィールドの値を0にする。man fstabしてみそ。
tune2fsで-c 0とかもしておいたほうがいいかも。
tune2fsで-c 0とかもしておいたほうがいいかも。
2007/01/19(金) 20:24:37ID:xhnZtOc/
2007/01/20(土) 19:48:34ID:3aq4dRUa
>>562
/だけ守ればいいので、なりません。
/だけ守ればいいので、なりません。
2007/01/21(日) 01:23:20ID:QaYT7DDq
2007/01/27(土) 11:05:03ID:4J9B+fMX
評価機はネットブートさせてNFSroot稼動させればいつ飛んでも
大丈夫な環境にできるんじゃない?
大丈夫な環境にできるんじゃない?
566login:Penguin
2007/02/05(月) 06:03:38ID:9i1Bwf6u 通常、Linuxのドライバをインストールする時はカーネルにパッチを当ててカーネルごと
コンパイルしなければいけないけど、Windowsのようにカーネルソース無しでドライバを
コンパイルしてインストールできるようにする方法ってあるの?
コンパイルしなければいけないけど、Windowsのようにカーネルソース無しでドライバを
コンパイルしてインストールできるようにする方法ってあるの?
567login:Penguin
2007/02/05(月) 06:26:04ID:9i1Bwf6u http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8E%E3%83%AA%E3%82%B7%E3%83%83%E3%82%AF%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%ABには
現在のカーネルではモジュールをカーネルの構築状態に依存する事なく追加できると
書いてあるけど、カーネル側でインターフェースが変更になった場合は旧ドライバは
使用できなくなるんじゃないの?それとも、カーネル側で旧インターフェースが温存されるの?
あと、「カーネル側に受け皿となるインターフェースがモジュール毎に用意されている必要がある」
Linuxはどのバージョンまでなの?
現在のカーネルではモジュールをカーネルの構築状態に依存する事なく追加できると
書いてあるけど、カーネル側でインターフェースが変更になった場合は旧ドライバは
使用できなくなるんじゃないの?それとも、カーネル側で旧インターフェースが温存されるの?
あと、「カーネル側に受け皿となるインターフェースがモジュール毎に用意されている必要がある」
Linuxはどのバージョンまでなの?
2007/02/05(月) 06:56:37ID:Zi/ATtvA
2007/02/06(火) 01:26:43ID:j3mwrUGC
いやぁソースはいるだろ。
2007/02/06(火) 08:59:25ID:jQKQh5/W
ソースはいるけどカーネルのリビルドはいらない
2007/02/06(火) 10:27:34ID:Rm04tDsq
いやぁリビルドは途中までいるだろ。
572login:Penguin
2007/02/10(土) 16:03:43ID:XWBlzb1u 初歩的な質問ですがよろしいでしょうか
私はlinuxカーネル2.6.13のモジュールでhello worldのプログラムを組込みたいのですが上手くいきません
gcc -c module.c -Wall -Wstrict-prototypes -O -pipe -m486
この様にコンパイルしたのですがカーネルのソースコードに構文エラーがあるようでコンパイルが通りません
カーネルのソースコードを見てみても構文エラーらしき物はみられませんでした
どうすればコンパイルが通るでしょうか
エラーメッセージとソースコードを書いておきます
ソースコード
http://sakuratan.ddo.jp/uploader/source/date32474.c
エラーメッセージ
http://sakuratan.ddo.jp/uploader/source/date32475.txt
私はlinuxカーネル2.6.13のモジュールでhello worldのプログラムを組込みたいのですが上手くいきません
gcc -c module.c -Wall -Wstrict-prototypes -O -pipe -m486
この様にコンパイルしたのですがカーネルのソースコードに構文エラーがあるようでコンパイルが通りません
カーネルのソースコードを見てみても構文エラーらしき物はみられませんでした
どうすればコンパイルが通るでしょうか
エラーメッセージとソースコードを書いておきます
ソースコード
http://sakuratan.ddo.jp/uploader/source/date32474.c
エラーメッセージ
http://sakuratan.ddo.jp/uploader/source/date32475.txt
2007/02/10(土) 17:14:52ID:d+hexa9D
2007/02/10(土) 17:47:20ID:a+8l3AD+
Makefileに
obj-m += module.o
って書いて
make -C /usr/src/linux M=$PWD modules
obj-m += module.o
って書いて
make -C /usr/src/linux M=$PWD modules
575login:Penguin
2007/02/10(土) 19:18:09ID:XWBlzb1u576542
2007/02/10(土) 19:55:09ID:XWBlzb1u .koってファイルが出てきたらからinsmodにかけてみたら
insmod: error inserting 'module.ko': -1 Invalid module format
って言われワラタ
turbo linuxなんて微妙なの使ってるせいなんですかねこれは.....
insmod: error inserting 'module.ko': -1 Invalid module format
って言われワラタ
turbo linuxなんて微妙なの使ってるせいなんですかねこれは.....
577542
2007/02/10(土) 20:03:22ID:XWBlzb1u 今までsage忘れてたごめん
2007/02/10(土) 20:06:01ID:791EznrY
話題提供時はage、その後はsage
ってのが一番角が立たない。
正直、どうでもいいけど。
ってのが一番角が立たない。
正直、どうでもいいけど。
2007/02/10(土) 20:14:38ID:a+8l3AD+
/usr/src/linux が今動いてるカーネルソースじゃないとか
580542
2007/02/10(土) 21:33:23ID:XWBlzb1u >>579
そうですね
元からあったソースでコンパイルしようとすると必要なMakefileがないとかで無理
でしたから、kernel.orgから同じバージョンのコード落してきてまた設定しなし
いた訳ですがそれが原因ですかね。
ディストリとかは独自の変更を加えているらしいし、また変更が加えられていない
純粋なカーネルインストールしてから出直してきます
そうですね
元からあったソースでコンパイルしようとすると必要なMakefileがないとかで無理
でしたから、kernel.orgから同じバージョンのコード落してきてまた設定しなし
いた訳ですがそれが原因ですかね。
ディストリとかは独自の変更を加えているらしいし、また変更が加えられていない
純粋なカーネルインストールしてから出直してきます
581login:Penguin
2007/02/18(日) 23:17:11ID:PxJoV1oA すみません。kmallocで確保したメモリ領域をDMA転送するために、__paで変換して
渡してやるのと、dma_map_singleで変換して渡すのと、違いはあるのでしょうか?
たとえば性能(処理効率)が違うとか? どう使い分けているのでしょうか?
渡してやるのと、dma_map_singleで変換して渡すのと、違いはあるのでしょうか?
たとえば性能(処理効率)が違うとか? どう使い分けているのでしょうか?
2007/02/19(月) 10:56:01ID:QHwPPpDN
UNIXTIMEを日付文字列に変換するのに なんかAPI用意されてないの?
"2007/02/19 12:34:56" とかその程度のでいいんだけど。
"2007/02/19 12:34:56" とかその程度のでいいんだけど。
2007/02/19(月) 11:19:53ID:I/jMKPR3
strftime
2007/02/19(月) 13:52:20ID:QHwPPpDN
>>583
いや、デバイスドライバ内でなんだけど、あったっけ? いや、ない。
いや、デバイスドライバ内でなんだけど、あったっけ? いや、ない。
585login:Penguin
2007/02/21(水) 07:53:48ID:Wuryqsb6 Linux 2.6.16用のパッチとe2comprを同時に使いたいのだが、e2comprは2.6.10用まで
しかない。カーネルとドライバが完全に分離され、カーネルバージョンが上がっても
カーネル側の旧インターフェースが温存されるようになれば、ドライバの開発が停滞しても
最新のカーネルでそのドライバを使い続ける事ができる。
しかない。カーネルとドライバが完全に分離され、カーネルバージョンが上がっても
カーネル側の旧インターフェースが温存されるようになれば、ドライバの開発が停滞しても
最新のカーネルでそのドライバを使い続ける事ができる。
2007/02/22(木) 01:34:45ID:I6i5DnCh
そのカーネル側のABI決めようぜ話はLinusに一蹴されてるんじゃなかったけ?
587login:Penguin
2007/02/22(木) 09:14:42ID:y9d4aAAQ588login:Penguin
2007/02/22(木) 09:16:48ID:y9d4aAAQ ラッパーにx86エミュレーションを追加するとザウルスでWindowsのドライバを読み込めたりもする。
2007/02/22(木) 22:34:24ID:I6i5DnCh
つ NDISwrapper
2007/02/23(金) 00:44:11ID:cxn/yRhr
つcapative ntfs
591login:Penguin
2007/04/03(火) 00:09:41ID:3ycIJVku <linux/module.h>が無いんだけど、
デバドラ開発するには、なにかパッケージ追加しなきゃいけないの?
使ってるのはfedora6
デバドラ開発するには、なにかパッケージ追加しなきゃいけないの?
使ってるのはfedora6
592login:Penguin
2007/04/03(火) 00:24:35ID:3ycIJVku yum install kernel-devel
してもダメだな。何が足りない?
してもダメだな。何が足りない?
2007/04/03(火) 00:41:11ID:xSB1c0Df
>>591
カーネルソースそのものじゃね?
カーネルソースそのものじゃね?
594login:Penguin
2007/04/03(火) 01:00:14ID:3ycIJVku595login:Penguin
2007/04/03(火) 01:08:21ID:3ycIJVku あと、
man printk
って出ないの?
man printk
って出ないの?
2007/04/03(火) 02:25:43ID:xSB1c0Df
>>595
出ないんじゃよ
出ないんじゃよ
2007/04/03(火) 02:43:03ID:GYgStP3Z
2007/04/04(水) 00:07:01ID:NkZt7NAi
/usr/include/linux に入ってないか?鳥にもよるけど。
599login:Penguin
2007/04/04(水) 00:15:23ID:wyW6RdvI カーネル用ヘッダと、ユーザプログラム用ヘッダがまざると、何でとまずいだろ。
600login:Penguin
2007/04/04(水) 00:23:08ID:ICf0Aql0 爆発しても知りません。
2007/04/04(水) 00:42:58ID:IK0cizpI
602login:Penguin
2007/04/08(日) 00:07:55ID:gmHS+Fdj >>17 をコンパイルするとエラーがたくさん出るんだけど何が悪いの??
エラーの一部
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h:
20,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
エラーの一部
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h:
20,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
2007/04/08(日) 00:09:38ID:2aPQfsMY
脳?
604login:Penguin
2007/04/08(日) 00:10:46ID:gmHS+Fdj >>603
いや、たぶん違うと思う。
こんなのも出てる。
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat
ion specifiers or ‘...’ before ‘u8’
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat
ion specifiers or ‘...’ before ‘u8’
いや、たぶん違うと思う。
こんなのも出てる。
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat
ion specifiers or ‘...’ before ‘u8’
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat
ion specifiers or ‘...’ before ‘u8’
2007/04/08(日) 00:11:42ID:2aPQfsMY
じゃ、頭?
606login:Penguin
2007/04/08(日) 00:12:08ID:gmHS+Fdj NGID ID:2aPQfsMY
2007/04/08(日) 00:15:19ID:2aPQfsMY
マジレスすると、読み込むヘッダーファイルが足りないんだよ。
608602
2007/04/08(日) 00:19:06ID:gmHS+Fdj 環境はVMWare上でfedora 6を動かしてる。
こんなのも。
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/bitmap.h:149: error: ‘BITS_PER_LONG’
undeclared (first use in this function)
こんなのも。
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/bitmap.h:149: error: ‘BITS_PER_LONG’
undeclared (first use in this function)
2007/04/08(日) 00:20:46ID:2aPQfsMY
BITS_PER_LONGを定義しているファイルをさがすことだね。
2007/04/08(日) 00:29:38ID:nSKp4d9I
なんだこのキチガイ
2007/04/08(日) 00:31:56ID:2aPQfsMY
また、きちがいあつかいですか?
2007/04/08(日) 00:36:41ID:nSKp4d9I
ほう「また」なんだ
2007/04/08(日) 00:37:31ID:2aPQfsMY
で?
2007/04/08(日) 00:46:02ID:nSKp4d9I
あらら
2007/04/08(日) 00:48:10ID:2aPQfsMY
なにがあららなの?
2007/04/08(日) 00:49:12ID:nSKp4d9I
脳?
2007/04/08(日) 00:49:55ID:2aPQfsMY
それはお互い様だろ?
2007/04/08(日) 00:51:34ID:nSKp4d9I
俺はその質問者じゃないんだけどねえ
2007/04/08(日) 00:56:35ID:2aPQfsMY
お友達?
620602
2007/04/08(日) 00:58:54ID:gmHS+Fdj もういちど、しきりなおし。
>>17 をコンパイルするとエラーがたくさん出るんだけど何が悪いの??
エラーの一部
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h:
20,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
>>17 をコンパイルするとエラーがたくさん出るんだけど何が悪いの??
エラーの一部
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h:
20,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
2007/04/08(日) 01:03:19ID:z/motjJL
2007/04/08(日) 01:11:57ID:nSKp4d9I
2.6以降はモジュールのフォーマットが変わって、
.oじゃなくて.koになってるからね。
ビルドの仕方も面倒になって...俺もよくしらない。
.oじゃなくて.koになってるからね。
ビルドの仕方も面倒になって...俺もよくしらない。
2007/04/08(日) 01:12:30ID:2aPQfsMY
linux/compiler.hかな?
624login:Penguin
2007/04/08(日) 02:07:26ID:gmHS+Fdj2007/04/08(日) 02:24:54ID:z/motjJL
626login:Penguin
2007/04/08(日) 02:28:17ID:gmHS+Fdj2007/04/08(日) 02:34:41ID:n+CzrFXh
#include <linux/init.h>
がいるみたいね
がいるみたいね
628login:Penguin
2007/04/08(日) 02:41:10ID:gmHS+Fdj2007/04/08(日) 03:09:43ID:z/motjJL
630login:Penguin
2007/04/12(木) 01:42:14ID:MCdnGupN aio_write()でユーザ空間の登録だけして、後からハードウェア割り込みでその登録したユーザ空間にアクセスすることってできる?
やり方教えて。
やり方教えて。
2007/04/12(木) 02:34:41ID:HoyZz9hB
632login:Penguin
2007/04/15(日) 01:56:51ID:YIKahQqf タスクレットの中でcopy_to_user()、copy_from_user()を使えますか?
2007/04/17(火) 02:52:55ID:IoB9zeVk
試してみろ!!
callした瞬間ぼくの丸太のような足蹴りが君の股間をつぶす
それでもいいのなら!
callした瞬間ぼくの丸太のような足蹴りが君の股間をつぶす
それでもいいのなら!
634login:Penguin
2007/04/27(金) 00:53:37ID:6m6QKylD プログラムで確保したメモリの物理アドレスを知る方法と、その物理アドレスを使ってメモリにアクセスする方法を教えて。
2007/04/27(金) 06:02:05ID:DTYmU0pC
2007/04/27(金) 06:03:05ID:DTYmU0pC
637login:Penguin
2007/04/27(金) 08:23:06ID:6m6QKylD ユーザプログラムで確保したメモリの物理アドレスを知る方法と、その物理アドレスを使ってメモリにアクセスする方法を教えて。
638login:Penguin
2007/04/27(金) 08:26:29ID:6m6QKylD2007/04/27(金) 10:46:58ID:cjUqO3s+
640login:Penguin
2007/04/27(金) 21:21:47ID:6NURgk062007/04/27(金) 21:40:17ID:67IsA5dw
痛い人現る
2007/04/27(金) 23:10:53ID:EZ45sIxG
cr3レジスタからたどれば
643login:Penguin
2007/04/27(金) 23:27:03ID:6NURgk06 >>642
で、そのcr3レジスタの値はどこから持ってくるの?
cr3レジスタの値はあくまでも現在のプロセスの仮想アドレスのページテーブルだよね。
カーネルプロセスからユーザプログラムのページテーブルを取得するにはどうするの?
mm_structを保存しておけば、任意のユーザプロセスのメモリ空間にアクセスできる?
で、そのcr3レジスタの値はどこから持ってくるの?
cr3レジスタの値はあくまでも現在のプロセスの仮想アドレスのページテーブルだよね。
カーネルプロセスからユーザプログラムのページテーブルを取得するにはどうするの?
mm_structを保存しておけば、任意のユーザプロセスのメモリ空間にアクセスできる?
2007/04/28(土) 04:22:35ID:+D3gS6jR
カーネル書き直せば?w
645login:Penguin
2007/04/28(土) 07:44:33ID:oKLKreO7 カーネルを書きなおしてもいいよ。どこをどうすればいいの?その方法を教えて。
(1)カーネルから任意のユーザプログラムで確保したメモリの物理アドレスを知る方法と、
(2)その物理アドレスにアクセスする方法を教えて。
(1)カーネルから任意のユーザプログラムで確保したメモリの物理アドレスを知る方法と、
(2)その物理アドレスにアクセスする方法を教えて。
2007/04/28(土) 07:47:13ID:dRSGn50m
カーネルからだとページテーブルがページアウトしている可能性もあるから
めんどくさい
めんどくさい
647login:Penguin
2007/04/28(土) 08:04:23ID:oKLKreO7 ページアウトはしていないと仮定していいよ。それなら簡単?
2007/04/28(土) 11:40:13ID:Fr2ol1ef
ザワザワ…
ザワザワ…
ザワザワ…
2007/04/28(土) 23:24:32ID:ZU2q9XRX
>>639
ttp://d.hatena.ne.jp/Newmarket/20060828/1156705255
ttp://d.hatena.ne.jp/Newmarket/20060828/1156705255
2007/04/28(土) 23:42:14ID:o6o1fGCI
馬の多さにワロタ
651login:Penguin
2007/05/03(木) 23:34:15ID:ErpReMz0 カーネルのソースツリーの一部分だけ、お試しでコンパイル
したいときってどのようにすればいいですか?
たとえば、lib/ の下だけすこしいじって、syntaxのチェック
だけしたいときとか。2.6.21です。
したいときってどのようにすればいいですか?
たとえば、lib/ の下だけすこしいじって、syntaxのチェック
だけしたいときとか。2.6.21です。
2007/05/04(金) 00:08:49ID:9yQs8D1Y
>>651
なんだかんだいっても、一度全体コンパイルしておくのが一番早い。
なんだかんだいっても、一度全体コンパイルしておくのが一番早い。
653login:Penguin
2007/05/04(金) 00:18:46ID:yYLKnQ2E >>652
thx.でも、
一度全体をコンパイルしておいて、lib/以下をちょっと(.cのみ)いじって、
全体をmake bzImageすると、それだけで5分以上かかるんすよ...
わたしのへぼマシンだと。
thx.でも、
一度全体をコンパイルしておいて、lib/以下をちょっと(.cのみ)いじって、
全体をmake bzImageすると、それだけで5分以上かかるんすよ...
わたしのへぼマシンだと。
2007/05/04(金) 00:23:00ID:gFGVYRPM
やっぱりCPU速くするのが一番
2007/05/04(金) 00:24:14ID:yYLKnQ2E
そこをなんとか。
2007/05/04(金) 00:35:21ID:n4WASQRt
2007/05/04(金) 00:38:41ID:yYLKnQ2E
できました。ありがとうございました。
2007/05/04(金) 01:24:26ID:ulT/mofy
>>576
カーネルをコンパイルしたgccでモジュールをコンパイルしないとinsmod時にそのエラーが出るよ。
カーネルをコンパイルしたgccでモジュールをコンパイルしないとinsmod時にそのエラーが出るよ。
2007/05/13(日) 23:53:14ID:EYFP+J0v
2007/05/26(土) 11:11:39ID:XoKsvVbX
2007/05/26(土) 16:19:33ID:olOYm4ED
>>660
それで短くなるの? ならないと思うけど。
それで短くなるの? ならないと思うけど。
2007/05/26(土) 23:30:58ID:XoKsvVbX
663login:Penguin
2007/06/03(日) 15:06:38ID:W8zh9WHI ドライバ内での double 型の使用について質問があります.
Kernel 2.6 のドライバ内で double の演算と,sprintf("%.2f", ...) の様な
関数を使うのはどうすればいいのでしょうか?
現在,下記のようなエラーが出ていてドライバをロードできないです.
% make
...(snip)
WARNING: "__adddf3" [hoge.ko] undefined!
WARNING: "__muldf3" [hoge.ko] undefined!
WARNING: "__floatsidf" [hoge.ko] undefined!
% insmod hoge,ko
insmod: error inserting 'hoge.ko': -1 Unknown symbol in module
Kernel 2.6 のドライバ内で double の演算と,sprintf("%.2f", ...) の様な
関数を使うのはどうすればいいのでしょうか?
現在,下記のようなエラーが出ていてドライバをロードできないです.
% make
...(snip)
WARNING: "__adddf3" [hoge.ko] undefined!
WARNING: "__muldf3" [hoge.ko] undefined!
WARNING: "__floatsidf" [hoge.ko] undefined!
% insmod hoge,ko
insmod: error inserting 'hoge.ko': -1 Unknown symbol in module
2007/06/03(日) 15:14:36ID:1QJRDZ5d
>>663
ドライバで浮動小数点の計算はしない方がいいと思う。
ドライバで浮動小数点の計算はしない方がいいと思う。
2007/06/03(日) 15:35:59ID:W8zh9WHI
proc_fs で表示するために使いたいのですが,駄目なんでしょうか...?
2007/06/03(日) 16:53:58ID:KH63vIBs
浮動小数点演算はFPUを使う可能性があるから
カーネルモードでは可能な限り避けるべき
きちんと対応すれば使えないことはないけど、
速度的な利点はほとんどなくなる
カーネルモードでは可能な限り避けるべき
きちんと対応すれば使えないことはないけど、
速度的な利点はほとんどなくなる
2007/06/03(日) 23:23:42ID:/hAY1VOO
「速度的な利点」って何に対する何の利点?
2007/06/03(日) 23:31:28ID:5NVvB11p
きっと >>666 の CPU は浮動小数点演算を使うと割り込み禁止になるんだろう
2007/06/04(月) 00:46:42ID:CXn8XPVL
nVidiaのドライバの解析って3年ぐらいまでやってる人間
いたけど今どうなってるの?
いたけど今どうなってるの?
2007/06/04(月) 12:11:48ID:RaTjYNE+
!(-_Φ+){ ... }
671663
2007/06/05(火) 02:17:22ID:aHzmfEHS2007/06/05(火) 10:49:22ID:qhZ8Q9LN
>>665
固定小数点じゃだめか?
値が必ず正値と仮定、valに本当の値の100倍を入れるとすると
unsigned int val;
sprintf(str, "%d.%02d", val/100, val%100)
みたいな感じ
負値だと剰余の扱いがちょっと面倒になる
固定小数点じゃだめか?
値が必ず正値と仮定、valに本当の値の100倍を入れるとすると
unsigned int val;
sprintf(str, "%d.%02d", val/100, val%100)
みたいな感じ
負値だと剰余の扱いがちょっと面倒になる
673login:Penguin
2007/07/16(月) 18:26:19ID:h1/eDBu5 はck
674login:Penguin
2007/08/06(月) 00:29:52ID:E6mK6Nbx ドライバ書くときってCPUの事は知っておいた方がいいのでしょうか?
2007/08/06(月) 01:55:04ID:Taq1zrH7
どうでもいいよ
タマゴがどっち向きかだけ知っとけば
タマゴがどっち向きかだけ知っとけば
676login:Penguin
2007/08/28(火) 23:24:19ID:aUO2fWSH あげ
2007/08/29(水) 01:23:49ID:bmM5qB+B
>>675
俺はとんがったほうから食べるのが好きだ。
俺はとんがったほうから食べるのが好きだ。
2007/08/29(水) 23:50:22ID:E1JDVS03
どちらから割るのが正しいかが問題だ。大きいほうか、尖った方か。
16bit時代以降、中には大きい方から割って、尖った方から食べるという
両刀使いが出てきてさらにややこしくなった。
16bit時代以降、中には大きい方から割って、尖った方から食べるという
両刀使いが出てきてさらにややこしくなった。
2007/08/30(木) 12:40:15ID:pmmgZB5J
そんな両刀使いがいたのか
具体的にはドレ?
具体的にはドレ?
2007/08/31(金) 00:43:34ID:pR6eg2ir
NUXIとかmixed endianでggr。1234じゃなくて2143並びになったりするらしい。
実は漏れも知らなかったが、最近でも某腕プロセッサはデータ型によってはまさにミックスになるそうな。
実は漏れも知らなかったが、最近でも某腕プロセッサはデータ型によってはまさにミックスになるそうな。
2007/08/31(金) 01:04:08ID://apeG96
まあそうはいっても日常的にミックスは体験してるよな
通信プロトコルは大体ビッグだからな
通信プロトコルは大体ビッグだからな
682login:Penguin
2007/08/31(金) 07:07:24ID:IHXG9RG5 uartのドライバ書きたいのだけど、uart_opsのメンバのそれぞれの責務がよく分からない。
文字列送って受けるだけなのに、なぜこんなにいっぱいあるんでしょう?
軽くおしえてもらえないでしょうか?
include/linux/serial_core.h
/*
* This structure describes all the operations that can be
* done on the physical hardware.
*/
struct uart_ops {
unsigned int (*tx_empty)(struct uart_port *);
void (*set_mctrl)(struct uart_port *, unsigned int mctrl);
unsigned int (*get_mctrl)(struct uart_port *);
void (*stop_tx)(struct uart_port *);
void (*start_tx)(struct uart_port *);
void (*send_xchar)(struct uart_port *, char ch);
void (*stop_rx)(struct uart_port *);
void (*enable_ms)(struct uart_port *);
void (*break_ctl)(struct uart_port *, int ctl);
int (*startup)(struct uart_port *);
void (*shutdown)(struct uart_port *);
void (*set_termios)(struct uart_port *, struct ktermios *new,
struct ktermios *old);
void (*pm)(struct uart_port *, unsigned int state,
unsigned int oldstate);
int (*set_wake)(struct uart_port *, unsigned int state);
文字列送って受けるだけなのに、なぜこんなにいっぱいあるんでしょう?
軽くおしえてもらえないでしょうか?
include/linux/serial_core.h
/*
* This structure describes all the operations that can be
* done on the physical hardware.
*/
struct uart_ops {
unsigned int (*tx_empty)(struct uart_port *);
void (*set_mctrl)(struct uart_port *, unsigned int mctrl);
unsigned int (*get_mctrl)(struct uart_port *);
void (*stop_tx)(struct uart_port *);
void (*start_tx)(struct uart_port *);
void (*send_xchar)(struct uart_port *, char ch);
void (*stop_rx)(struct uart_port *);
void (*enable_ms)(struct uart_port *);
void (*break_ctl)(struct uart_port *, int ctl);
int (*startup)(struct uart_port *);
void (*shutdown)(struct uart_port *);
void (*set_termios)(struct uart_port *, struct ktermios *new,
struct ktermios *old);
void (*pm)(struct uart_port *, unsigned int state,
unsigned int oldstate);
int (*set_wake)(struct uart_port *, unsigned int state);
2007/08/31(金) 07:12:11ID:Bq5CxAt1
>>682
シリアル通信の基本を誰かに教えてもらったら...
シリアル通信の基本を誰かに教えてもらったら...
2007/08/31(金) 14:54:06ID:bz+r4Vre
>>682
ドライバを組むのなら、ターゲットの仕様をきちんとおさえるのが基本。
uart程度の解説なら本屋にいくらでもあるし、ググればいくらでも情報
が手に入る。
その程度の情報収集ができないなら、ドライバ開発は諦めたほうが良い。
ドライバを組むのなら、ターゲットの仕様をきちんとおさえるのが基本。
uart程度の解説なら本屋にいくらでもあるし、ググればいくらでも情報
が手に入る。
その程度の情報収集ができないなら、ドライバ開発は諦めたほうが良い。
685login:Penguin
2007/09/12(水) 11:40:08ID:W+jFMZNC 初歩的な質問で、すみません
linuxカーネルは2.6.18-1.2798.fc6-i586で、fedora core6のカーネルを使っています
USBマウスが差し込まれたときに、呼ばれるprobeのコールバックと、外されたときに呼ぶdisconnect
のコールバックを書いたのですが、なぜかvenderIDと、productIDに間違いはないはずなのに
これらが呼ばれません
USBドライバの登録には成功しているようなのですが、登録に使う構造体の初期化に間違いがあったのでしょうか
それとも、このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか
文字数制限の問題で、ソースは>>686に貼らせていただきます
linuxカーネルは2.6.18-1.2798.fc6-i586で、fedora core6のカーネルを使っています
USBマウスが差し込まれたときに、呼ばれるprobeのコールバックと、外されたときに呼ぶdisconnect
のコールバックを書いたのですが、なぜかvenderIDと、productIDに間違いはないはずなのに
これらが呼ばれません
USBドライバの登録には成功しているようなのですが、登録に使う構造体の初期化に間違いがあったのでしょうか
それとも、このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか
文字数制限の問題で、ソースは>>686に貼らせていただきます
686685
2007/09/12(水) 11:47:03ID:W+jFMZNC コピペでは無理だったので、ロダに上げしました
http://sakuratan.ddo.jp/uploader/source/date51655.c
http://sakuratan.ddo.jp/uploader/source/date51655.c
2007/09/12(水) 12:38:12ID:b4ZSgzLd
>>685
ハードウエアを接続したとき、dmesgにはなんて出てくる?
ハードウエアを接続したとき、dmesgにはなんて出てくる?
688685
2007/09/12(水) 13:23:18ID:W+jFMZNC >>687
dmesgは、このように出力しています
usbcore: registered new driver usb_mouse
succes_usbregist<6>usb 4-2: new low speed USB device using ohci_hcd and address 6
usb 4-2: configuration #1 chosen from 1 choice
input: Cypress Sem PS2/USB Browser Combo Mouse as /class/input/input6
input: USB HID v1.00 Mouse [Cypress Sem PS2/USB Browser Combo Mouse] on usb-0000:00:0b.1-2
dmesgは、このように出力しています
usbcore: registered new driver usb_mouse
succes_usbregist<6>usb 4-2: new low speed USB device using ohci_hcd and address 6
usb 4-2: configuration #1 chosen from 1 choice
input: Cypress Sem PS2/USB Browser Combo Mouse as /class/input/input6
input: USB HID v1.00 Mouse [Cypress Sem PS2/USB Browser Combo Mouse] on usb-0000:00:0b.1-2
2007/09/12(水) 13:41:02ID:Eo9vQi0w
>>688
フックできないような感じだけど?
フックできないような感じだけど?
2007/09/12(水) 14:04:06ID:gJXCaswd
usb_device_id の .driver_info だけ定義するとすべてのデバイスにマッチするらしい(馬本参照)ので
デバッグ用にやってみるのがいいかも
> このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか
たぶんそう
デバッグ用にやってみるのがいいかも
> このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか
たぶんそう
691login:Penguin
2007/09/13(木) 12:25:45ID:oMFp/NB1 ドライバの開発って難しいでしょうか?
2007/09/13(木) 21:34:22ID:dbMVSAQN
そのような質問をする方には難しいです。
2007/09/14(金) 03:35:04ID:bpVkKQxn
>>685
むかしは定義に合致するドライバが呼ばれたが最近は1つ合致するやつが
あると、それ以上呼ばないようになってたと思う
HIDドライバが先にとっちゃうんでしょう。.configで無効にしてやってみそ
むかしは定義に合致するドライバが呼ばれたが最近は1つ合致するやつが
あると、それ以上呼ばないようになってたと思う
HIDドライバが先にとっちゃうんでしょう。.configで無効にしてやってみそ
694login:Penguin
2007/10/03(水) 08:13:37ID:WhUHfKUP あげ
2007/10/07(日) 18:44:44ID:wad8eg6i
UIO:ユーザー空間でデバイスドライバ作成が可能に
http://www.atmarkit.co.jp/flinux/rensai/watch2007/watch09a.html
http://www.atmarkit.co.jp/flinux/rensai/watch2007/watch09a.html
696login:Penguin
2007/10/08(月) 12:39:42ID:v1nGyoTL 馬本でデバドラを勉強しています。
カーネルのソースでドライバやったことがない人にも分かりやすいソースってどれですかね?
カーネルのソースでドライバやったことがない人にも分かりやすいソースってどれですかね?
2007/10/08(月) 12:48:08ID:Y0LW8BuC
そんな事言ってる位なら、馬本のドライバソース見ればいいじゃん。ダウンロードできるよ
2007/10/09(火) 08:54:41ID:qhmHV8vi
>>696
何系のドライバかによるのでは>どれを見たらいいか。
ドライバの種類によってどういうインタフェースセット(いわゆる*_opsとか)を
register_*とかで登録するのか、またインタフェース間やカーネル側処理がキュー等を
介してどのように連携するのか全く異なる。
漏れも読みたて入門者なんであれだけど、
キャラクタデバイスなら/dev/null(mem.c)とパラレルポート(ppdev.c + parport/*)
ブロックデバイスならフロッピー(floppy.c)かramdisk(rd.c)
ファイルシステムならromfs(romfs/*, readonly-fs)とbfs(bfs/*, readwrite-fs)
が短かったり馴染みがあったりしてすんなり読めた。
何系のドライバかによるのでは>どれを見たらいいか。
ドライバの種類によってどういうインタフェースセット(いわゆる*_opsとか)を
register_*とかで登録するのか、またインタフェース間やカーネル側処理がキュー等を
介してどのように連携するのか全く異なる。
漏れも読みたて入門者なんであれだけど、
キャラクタデバイスなら/dev/null(mem.c)とパラレルポート(ppdev.c + parport/*)
ブロックデバイスならフロッピー(floppy.c)かramdisk(rd.c)
ファイルシステムならromfs(romfs/*, readonly-fs)とbfs(bfs/*, readwrite-fs)
が短かったり馴染みがあったりしてすんなり読めた。
699696
2007/10/09(火) 12:16:03ID:BjHL69v3 >>697-697
レスありがとうございます。
レスありがとうございます。
2007/10/18(木) 23:39:59ID:YYamJxiT
複数のデバイス間でデータをバイパス
したいのですがサンプルないですか?
したいのですがサンプルないですか?
2007/10/19(金) 14:04:12ID:CYTWECsc
いくらなんでも漠然としすぎだろw
2007/10/20(土) 01:03:15ID:jtNU9aYY
2ポートとか4ポート付きのNICって
モジュールはどのようにロードされるの?
またデータの共有とかRx,Txバッファの
管理とかどうなってるの?
モジュールはどのようにロードされるの?
またデータの共有とかRx,Txバッファの
管理とかどうなってるの?
2007/10/20(土) 04:41:50ID:izm7N8bV
1ポートのNICが複数枚ある場合と大差はない。
704login:Penguin
2007/10/21(日) 17:41:17ID:yGaxVLsH2007/10/21(日) 18:39:44ID:SCXCQ8PP
2007/10/21(日) 19:36:55ID:f7YPzoUy
707login:Penguin
2007/10/23(火) 20:59:15ID:pGCXISsZ どなたかおしえてください。カーネルモジュールにバイナリコードを渡したい
のでrequest_firmware()を呼び出しているのですが、このrequest_firmware()
という関数から呼び出されるhotplugはどのディレクトリでバイナリコードを
検索してくれるのかわかりません。言ってみればバイナリコードをどのディレクトリ
におけばいいかがわかりません。ディストリビューションはfc6でカーネルは2.6.22です。
カーネルモジュールに対応するデバイスは無いので、sysfs上に仮想的なバスと
デバイス、ドライバを作ってあります。このデバイスのdevice構造体を使って
request_firmwareを呼んでいます。申し訳ありませんが、かなりまいってるので
お願いします。ご助力ください。
のでrequest_firmware()を呼び出しているのですが、このrequest_firmware()
という関数から呼び出されるhotplugはどのディレクトリでバイナリコードを
検索してくれるのかわかりません。言ってみればバイナリコードをどのディレクトリ
におけばいいかがわかりません。ディストリビューションはfc6でカーネルは2.6.22です。
カーネルモジュールに対応するデバイスは無いので、sysfs上に仮想的なバスと
デバイス、ドライバを作ってあります。このデバイスのdevice構造体を使って
request_firmwareを呼んでいます。申し訳ありませんが、かなりまいってるので
お願いします。ご助力ください。
2007/10/23(火) 21:05:08ID:tiPDo332
2007/10/23(火) 22:03:44ID:+D+WWc4l
BUFFALOのCD-RWドライブがまだ使えるのでハックしたいんですが、
必要な情報ってメーカーから提供されているんでしょうか?
必要な情報ってメーカーから提供されているんでしょうか?
2007/10/24(水) 15:38:46ID:8BiGN5WQ
ハゲシク板違い
2007/10/26(金) 18:00:12ID:OMFZLcsd
お馬さんの本読んで勉強してるのだが、さっぱり分からん。
ちなみに今3章のscullデバイス。
みんな最初はこんなもんなの?
それとも、俺がバカなだけなのか?諦めたほうがいいのか?
意見求む!!
ちなみに今3章のscullデバイス。
みんな最初はこんなもんなの?
それとも、俺がバカなだけなのか?諦めたほうがいいのか?
意見求む!!
2007/10/26(金) 18:53:10ID:OVakku/9
やる気の問題じゃね?
2007/10/26(金) 20:06:04ID:nlKsXgN2
2007/10/27(土) 11:47:28ID:US/tv6oE
よくわかんないのが、他のドライバの叩き方なんだよな。
ネットワーク通信してファイルとかブロックデバイスにも書くような
ドライバが最終ゴールなんだけど、他のドライバのAPIってどうやって
叩くのか(どこがインタフェース界面なのか)と。
ネットワーク通信してファイルとかブロックデバイスにも書くような
ドライバが最終ゴールなんだけど、他のドライバのAPIってどうやって
叩くのか(どこがインタフェース界面なのか)と。
2007/10/27(土) 12:04:42ID:Y1miLqrF
OSの勉強やり直しっぽい
716login:Penguin
2007/10/27(土) 19:45:56ID:5LV4rb/o >>714
それってkernelspaceじゃなくてuserspaceでやればいいのでは。
それってkernelspaceじゃなくてuserspaceでやればいいのでは。
2007/10/27(土) 20:15:47ID:US/tv6oE
>>716
使う側からはファイルシステムに見せたいので、実際プロトタイプは
FUSE方式でやろうとしてます。でもそれだと簡単ではあるものの
二級市民みたいなので、kernelspaceでの正しいやり方を知りたいなと。
nfsとかcryptfsのコードを読むは読むにしても、どっかにそういう
各種ドライバを内部から使うための情報をとりまとめたものとかは
ないのかなと。
使う側からはファイルシステムに見せたいので、実際プロトタイプは
FUSE方式でやろうとしてます。でもそれだと簡単ではあるものの
二級市民みたいなので、kernelspaceでの正しいやり方を知りたいなと。
nfsとかcryptfsのコードを読むは読むにしても、どっかにそういう
各種ドライバを内部から使うための情報をとりまとめたものとかは
ないのかなと。
2007/10/27(土) 21:00:45ID:RlzxlVfH
>>717
とにかくなんでもいいから氏ねw
とにかくなんでもいいから氏ねw
2007/10/28(日) 02:54:06ID:7ULWmmgi
>>717
ntfs-3g なんかはfuseだけど、実用的に動いているし、全然2級って感じしないけど。
ntfs-3g なんかはfuseだけど、実用的に動いているし、全然2級って感じしないけど。
721login:Penguin
2007/10/28(日) 23:36:04ID:jy3FHf6c 馬本にOSの仕組みを知ってる必要があると書いてありましたが、
どんなことを知っていたほうがいいのでしょうか?
どんなことを知っていたほうがいいのでしょうか?
2007/10/28(日) 23:41:48ID:1vAj4w/k
メモリ管理・特権・スケジューリング・ファイルシステム(ry…全部じゃん
723login:Penguin
2007/10/28(日) 23:45:24ID:jy3FHf6c2007/10/29(月) 00:42:23ID:uCaYz1aO
2007/10/29(月) 09:44:50ID:wx/mrO8x
買うなら原書(英語版)のほうがいいぜ
版が新しいし安いからな
版が新しいし安いからな
2007/10/29(月) 10:27:48ID:nDk3r2gZ
> 版が新しいし
4th edition でたの?
4th edition でたの?
2007/10/29(月) 20:53:20ID:Bg0Jp9i7
konozama.comとか少しは自分で調べようよ
2007/10/29(月) 23:42:16ID:oMEBh2dX
Oh〜、チョッとお聞きしただけで損何怒らなくても
いいじゃないですかぁ〜。Hey,take it easy !
でも調べるところは教えてくれるアナタに感謝で〜す!
いいじゃないですかぁ〜。Hey,take it easy !
でも調べるところは教えてくれるアナタに感謝で〜す!
729login:Penguin
2007/11/08(木) 00:29:00ID:Cm3oK6QC メーカーとかが作ったデバドラのソースって公開してるものはあるのでしょうか?
2007/11/08(木) 01:07:57ID:vscqki7B
ネットワークデバイス系はそういうのが結構多いような。
超いい加減だけど:
つ $ grep -r 'Inc[.o]' drivers | egrep -v '(Red|Vista|Foundation)'
超いい加減だけど:
つ $ grep -r 'Inc[.o]' drivers | egrep -v '(Red|Vista|Foundation)'
731login:Penguin
2007/11/12(月) 11:19:56ID:vNQ95D4g kernel2.6.18.6でターゲット側のUSBドライバ書こうとしてるんですが
参考になるサンプルってありますでしょうか?
drivers/usb/gadget/net2280.cとかが近いのかも知れないですけど
どうもpciで登録してるように見えて「別物かなぁ?」と思いまして。
あとホスト側のUSBドライバで挿されたら何でも拾う設定って
usb_device_idの.device_infoに適当な値を突っ込めばいいと思って
たんですがどうにもattachの際に自作のprobeが呼ばれません。
成功した方っていらっしゃいます?
ご存知の方いらっしゃればお願いします。
参考になるサンプルってありますでしょうか?
drivers/usb/gadget/net2280.cとかが近いのかも知れないですけど
どうもpciで登録してるように見えて「別物かなぁ?」と思いまして。
あとホスト側のUSBドライバで挿されたら何でも拾う設定って
usb_device_idの.device_infoに適当な値を突っ込めばいいと思って
たんですがどうにもattachの際に自作のprobeが呼ばれません。
成功した方っていらっしゃいます?
ご存知の方いらっしゃればお願いします。
2007/11/12(月) 23:57:28ID:xIHzaILy
2007/11/13(火) 00:56:13ID:0Tz4Ruwv
>>732
よく判ってらっしゃる。
馬本はさらっと読みましたが元がLinuxでも組み込みでもない世界で
やってて、急遽ヘルプで入ったんでさっぱり。
前任が逃げてヘルプなんで誰も知ってる人がいない\(^o^)/
で、聞いてみたんですが俺も逃げっかな・・・
よく判ってらっしゃる。
馬本はさらっと読みましたが元がLinuxでも組み込みでもない世界で
やってて、急遽ヘルプで入ったんでさっぱり。
前任が逃げてヘルプなんで誰も知ってる人がいない\(^o^)/
で、聞いてみたんですが俺も逃げっかな・・・
2007/11/13(火) 01:11:37ID:nAlW3/rO
>>733
一週間悩んだら解かんないか?
すげー複雑な科学計算とか遺伝子関係の
プログラミング以外ほとんどの対象のプログラミング
なんて簡単だぞ
時間がかかるものが多いのは事実だが
ドライバは簡単な部類だ
一週間悩んだら解かんないか?
すげー複雑な科学計算とか遺伝子関係の
プログラミング以外ほとんどの対象のプログラミング
なんて簡単だぞ
時間がかかるものが多いのは事実だが
ドライバは簡単な部類だ
2007/11/13(火) 01:21:16ID:0Tz4Ruwv
2007/11/13(火) 01:24:22ID:O430Avmc
御馬様っていうのか・・・
昨日、買いました。勉強します〜
昨日、買いました。勉強します〜
2007/11/13(火) 09:24:54ID:SFIG7nsG
738735
2007/11/14(水) 00:27:19ID:2+ZY8Hov 馬本見たら「本書の範囲を超えるので載せません」て書かれてた(´・ω・`)
USB gadgetは難しいだろうかnet2280.cよりもZero.c見たほうがいいのかなぁ・・・。
USB gadgetは難しいだろうかnet2280.cよりもZero.c見たほうがいいのかなぁ・・・。
2007/11/14(水) 02:20:20ID:aLuJUt0c
文句とか愚痴だけいって何も貢献しない人間ほどむかつく奴はいない。
740login:Penguin
2007/11/17(土) 09:40:38ID:MN9c6cz5 >>739
どうどうどぅ…
どうどうどぅ…
2007/11/17(土) 11:39:12ID:AZzmHExp
>>739
Do! Do! Do!
Do! Do! Do!
742login:Penguin
2007/11/17(土) 11:43:31ID:4avAGLIe do_fork
743login:Penguin
2007/11/29(木) 13:55:56ID:yo1OGExb mmapで特定のデバイスのIOメモリを仮想空間に割り付けて,
その領域に対してユーザーからデータを書き込むことを考えています.
ユーザープログラムからその領域上に,あるデータ型の双方向リスト
を作りたいのですが,ユーザー空間の特定のアドレス範囲から空き
メモリ領域を動的に確保する方法ってないでしょうか
void *dev_malloc(start_address, end_adress, nbyte);
とすると仮想アドレスstart_address〜end_adressの範囲から
nbyteバイトの領域を確保するみたいなイメージです
その領域に対してユーザーからデータを書き込むことを考えています.
ユーザープログラムからその領域上に,あるデータ型の双方向リスト
を作りたいのですが,ユーザー空間の特定のアドレス範囲から空き
メモリ領域を動的に確保する方法ってないでしょうか
void *dev_malloc(start_address, end_adress, nbyte);
とすると仮想アドレスstart_address〜end_adressの範囲から
nbyteバイトの領域を確保するみたいなイメージです
2007/11/29(木) 20:09:08ID:iCD9/EY6
>>743
かーなーり スレ違い
デバイスドライバ関係ない
汎用heap管理ライブラリがほしいってことだろ
heap-management とか ヒープ管理 でぐぐってみそ
ちなみに
void *dev_malloc(start_address, end_adress, nbyte);
ってI/Fはありえないと思うぞ
毎回 start_addressとend_adressを与えるわけ??
かーなーり スレ違い
デバイスドライバ関係ない
汎用heap管理ライブラリがほしいってことだろ
heap-management とか ヒープ管理 でぐぐってみそ
ちなみに
void *dev_malloc(start_address, end_adress, nbyte);
ってI/Fはありえないと思うぞ
毎回 start_addressとend_adressを与えるわけ??
745login:Penguin
2007/12/02(日) 23:50:11ID:lbIQi7BJ あげ
746login:Penguin
2007/12/13(木) 19:50:31ID:pBhS9AMD あげ
747俺
2007/12/18(火) 23:09:45ID:K//ZswLt ドライバでCPUキャッシュのフラッシュやりたい!
どうやるの?だれかおせぇ〜てぇ〜
どうやるの?だれかおせぇ〜てぇ〜
2007/12/18(火) 23:41:07ID:uNdsweTC
749俺
2007/12/18(火) 23:59:27ID:K//ZswLt >>748
Xeonの5100です。
データシートとか見つからなくて。。。
ご存知でしたら教えていただけませんか?
<経緯>
Linuxマシンで、DMAでPCIeのデバイスからホストメモリにデータ転送
したときにキャッシュのせいか、2周目のリングバッファ領域が
うまく参照できていなく、フラッシュすればと思いました。。
Xeonの5100です。
データシートとか見つからなくて。。。
ご存知でしたら教えていただけませんか?
<経緯>
Linuxマシンで、DMAでPCIeのデバイスからホストメモリにデータ転送
したときにキャッシュのせいか、2周目のリングバッファ領域が
うまく参照できていなく、フラッシュすればと思いました。。
2007/12/23(日) 13:45:51ID:VU+KNtKv
>>ORE
ttp://www.intel.com/products/processor/manuals/index.htm
ttp://www.intel.com/products/processor/manuals/index.htm
751login:Penguin
2007/12/24(月) 18:03:58ID: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は使えるのでしょうか?
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:53ID:EHGXP/cp 新年あげ
753 【中吉】 【156円】
2008/01/01(火) 20:58:21ID:LfamTH+n >750
749じゃないけど,これいいな.サンクス.
みんなチップのデータとかはどこから調べてくるの?
ちょっと想像してみたけど,「とりあえずメーカサイトを調べる」
以外の方法がわからん.
windowsのドライバから情報調べたりする人もいるの?
いたらその解析方法とかおしえてください.
749じゃないけど,これいいな.サンクス.
みんなチップのデータとかはどこから調べてくるの?
ちょっと想像してみたけど,「とりあえずメーカサイトを調べる」
以外の方法がわからん.
windowsのドライバから情報調べたりする人もいるの?
いたらその解析方法とかおしえてください.
2008/01/01(火) 20:59:27ID:VCekl7x7
>>753
メーカに電話して聞く
メーカに電話して聞く
2008/01/01(火) 23:23:30ID:hQDOyXLN
>>749
Intel の CPU だとその手のキャッシュのことは気にしなくていいんじゃなかったっけ?
いわゆるバススヌープ。ま、明示的にフラッシュしたきゃできるだろうけど。
(実は俺自身は x86 以外用のドライバしか書いたことがないので聞きかじりだが...)
あと、キャッシュが効いているなら1周目でも駄目な場合がありそうだがどうなん?
単にリングバッファのアリゴリズムでしくじってたりして。
って、よく見るとえらい昔の書き込みだった。もう解決したのかな。
Intel の CPU だとその手のキャッシュのことは気にしなくていいんじゃなかったっけ?
いわゆるバススヌープ。ま、明示的にフラッシュしたきゃできるだろうけど。
(実は俺自身は x86 以外用のドライバしか書いたことがないので聞きかじりだが...)
あと、キャッシュが効いているなら1周目でも駄目な場合がありそうだがどうなん?
単にリングバッファのアリゴリズムでしくじってたりして。
って、よく見るとえらい昔の書き込みだった。もう解決したのかな。
2008/01/02(水) 12:58:56ID:jVjgkvN4
チップの購入先の営業から入手とか
チップベンダのwebサイトからダウンロードだろ
常考
チップベンダのwebサイトからダウンロードだろ
常考
757login:Penguin
2008/01/14(月) 11:44:33ID:MLu8ArWP 今馬本の第 3 版読んでんだけど scull のソースコードって
Web でダウンロードできるの?
Web でダウンロードできるの?
2008/01/14(月) 11:59:56ID:hAs2atpA
あるよ
2008/01/14(月) 13:03:13ID:MLu8ArWP
2008/01/14(月) 13:36:46ID:Q2m15cvj
2008/01/14(月) 14:10:16ID:MLu8ArWP
>>759
ありがとう! 3版のは FTP で以下からダウンロードできました.
ar.linux.it/pub/ldd3/ldd3-samples-1.0.0.tar.gz
かなり感謝です ありがとう
ありがとう! 3版のは FTP で以下からダウンロードできました.
ar.linux.it/pub/ldd3/ldd3-samples-1.0.0.tar.gz
かなり感謝です ありがとう
2008/01/14(月) 14:13:07ID:MLu8ArWP
2008/01/17(木) 11:56:40ID: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書いてました〜。
あれ?お馬さんの第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:44ID:dVpHcdky kaso
2008/01/25(金) 21:56:39ID:OZPnpJ0W
ドライバでのロックの掛け方とか
その変のデザインパターンみたいなもの
ないのですか?
馬本読んでも、DualSocket 4コアとか
その辺の場合どうすればいいとかまったく
書いてなくて困ってる。
CPU毎にあるモノを意識しなければならないのか
全リソースを意識した作りなのかの判断も
ケースバイケースとかだし。WDMの方がいいよね
その変のデザインパターンみたいなもの
ないのですか?
馬本読んでも、DualSocket 4コアとか
その辺の場合どうすればいいとかまったく
書いてなくて困ってる。
CPU毎にあるモノを意識しなければならないのか
全リソースを意識した作りなのかの判断も
ケースバイケースとかだし。WDMの方がいいよね
2008/01/26(土) 23:10:19ID:jNmSnKBM
>>765
スピンロック様
スピンロック様
2008/01/27(日) 14:19:40ID:/9d4A9Tg
WDMってよく知らないが、割り禁、スピン、寝る&起こす以外に
排他の方法があるの?
排他の方法があるの?
2008/01/27(日) 17:28:29ID:Q2ylOq7r
そもそも排他なんじゃねーの?
昔はLinuxも明示的にスケジュールよぶまで
カーネル空間は排他だったじゃん
SMPが出てきて全部直す羽目になったけど
昔はLinuxも明示的にスケジュールよぶまで
カーネル空間は排他だったじゃん
SMPが出てきて全部直す羽目になったけど
2008/01/27(日) 19:45:28ID:/9d4A9Tg
割込みハンドラ
770login:Penguin
2008/02/03(日) 19:45:35ID:coODkdMv 過疎
2008/02/07(木) 03:30:55ID:9BnmgFGp
「新着1件ってことは、いつもの良スレ上げ厨かなぁ」と思ったらそう来たか。
772login:Penguin
2008/02/19(火) 16:29:32ID: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を叩く方法が悪いのか…
アドバイス等お願い出来ますでしょうか。
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を叩く方法が悪いのか…
アドバイス等お願い出来ますでしょうか。
2008/02/19(火) 19:10:24ID:5BDGV8A6
デバイスドライバでunistd.hなんかincludeしちゃダメだろ
fcntl.hも同様
fcntl.hも同様
2008/02/19(火) 21:35:29ID:ec7S8nn5
何言ってるのかわからないなw
PCIデバイスとして、I2Cバスへのブリッジが載っているのか?
それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか?
PCIデバイスとして、I2Cバスへのブリッジが載っているのか?
それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか?
775772
2008/02/19(火) 22:00:59ID:vQR2/dLm2008/02/19(火) 22:53:37ID:5BDGV8A6
つーかさ
カーネルモードで動いてるデバイスドライバの中から
open()とかclose()とかioctl()みたいなシステムコールを
発行できるわけないだろ?
>>772が作りたいと思ってるのは root権限で直接I/O叩くだけの
ユーザランドで動くアプリなんじゃないのか?
カーネルモードで動いてるデバイスドライバの中から
open()とかclose()とかioctl()みたいなシステムコールを
発行できるわけないだろ?
>>772が作りたいと思ってるのは root権限で直接I/O叩くだけの
ユーザランドで動くアプリなんじゃないのか?
2008/02/19(火) 23:10:27ID:ec7S8nn5
>>775
じゃあ、そのPCI-I2Cブリッジのデバイスドライバを書いているんだとして、
>I2Cのオープンのために
なんで、こうなるのよw
とりあえずDocumentation/i2c/summaryでも読んでくれ。
じゃあ、そのPCI-I2Cブリッジのデバイスドライバを書いているんだとして、
>I2Cのオープンのために
なんで、こうなるのよw
とりあえずDocumentation/i2c/summaryでも読んでくれ。
2008/02/20(水) 08:43:00ID:zgvkT7V3
2008/02/20(水) 09:40:57ID:zxxPBExl
2008/02/21(木) 00:46:11ID:VUV3LHo/
ちょっと相談なんだが、いいかな
writeの中で長時間割り込み待ちをするような処理と、その場で終わる処理を持ったデバドラがあって、
(処理の切り替えはioctl)
まずアプリAが長時間かかる処理のためにwriteわ呼び出す。
当然割り込み待ちになるが、そのままアプリBがioctlやwriteを呼び出すとどうなる?
普通に処理出来る?
writeの中で長時間割り込み待ちをするような処理と、その場で終わる処理を持ったデバドラがあって、
(処理の切り替えはioctl)
まずアプリAが長時間かかる処理のためにwriteわ呼び出す。
当然割り込み待ちになるが、そのままアプリBがioctlやwriteを呼び出すとどうなる?
普通に処理出来る?
2008/02/21(木) 00:55:15ID:A2lpGb2W
一つのデバイスを二つのアプリで同時に使うっつー事ですか?
2008/02/21(木) 01:18:43ID:VUV3LHo/
2008/02/21(木) 01:55:12ID:6LvlPNy5
できるかどうかは作り方次第だろうな
資源の排他処理が必要なら、ロック使わなきゃならん
その場合は、すぐ終わるはずの処理ももちろん待たされる
待たせたくなけりゃ、長時間かかるというwriteにバッファを設けて
write処理と割り込み処理とを分離するみたいな工夫したらどうだ
的外れならスマソ
資源の排他処理が必要なら、ロック使わなきゃならん
その場合は、すぐ終わるはずの処理ももちろん待たされる
待たせたくなけりゃ、長時間かかるというwriteにバッファを設けて
write処理と割り込み処理とを分離するみたいな工夫したらどうだ
的外れならスマソ
2008/02/21(木) 02:11:45ID:VUV3LHo/
2008/02/21(木) 06:04:45ID:Xs+RkuJQ
シリアルポートを想像してみたらどうだろう
Write、Read、割り込みがそれぞれ並列に動くはずだ
Writeで割り込み使ってるかどうかは知らないけど
Write、Read、割り込みがそれぞれ並列に動くはずだ
Writeで割り込み使ってるかどうかは知らないけど
2008/02/21(木) 07:26:26ID:Kf6eqU14
ブロック と ノンブロック という用語を使ってほしいところだな
んで複数プロセスから同時に使えるかどうかはデバイスドライバの作り方次第
手抜きにつくると open()されるときに競合問題を判断して
同時にひとつとかopenできないようにするよな
複数同時にopenして、ひとつがブロックしてる時に
また別のがノンブロックの処理要求してきたなんて場合は
そういう風にうまく動くようにドライバの中で考慮する必要がある
んで複数プロセスから同時に使えるかどうかはデバイスドライバの作り方次第
手抜きにつくると open()されるときに競合問題を判断して
同時にひとつとかopenできないようにするよな
複数同時にopenして、ひとつがブロックしてる時に
また別のがノンブロックの処理要求してきたなんて場合は
そういう風にうまく動くようにドライバの中で考慮する必要がある
2008/02/21(木) 07:32:20ID:Kf6eqU14
追記
呼び出し側がマルチスレッド使ってるかどうかはあまり関係ない
ふたつのプロセスがメモリを共有してようがしてまいが
ドライバにとっては関係ない話だ
それよりCPUが複数ある(いわゆるSMP)かどうかの方が重要
smp対応させるなら必要なところできっちりspinlockしないとダメ
呼び出し側がマルチスレッド使ってるかどうかはあまり関係ない
ふたつのプロセスがメモリを共有してようがしてまいが
ドライバにとっては関係ない話だ
それよりCPUが複数ある(いわゆるSMP)かどうかの方が重要
smp対応させるなら必要なところできっちりspinlockしないとダメ
2008/02/21(木) 08:59:36ID:VUV3LHo/
>>787-788
ブロック=長時間処理
ノンブロック=即時処理
でおk?
複数からopenされるのはアリにしないといけないっぽいんで、考えてみる。
ブロック中にアプリBからもwrite自体は呼び出せる?
その時点で破綻してるなら、今のwriteをそのままスレッド化して、write自体はスレッド起動だけにするなりで対応とか…ダメかな
あとCPUは1つ前提でおkっす。
余裕があったら後学のためにもsmp対応も抑えておきたいがw
ブロック=長時間処理
ノンブロック=即時処理
でおk?
複数からopenされるのはアリにしないといけないっぽいんで、考えてみる。
ブロック中にアプリBからもwrite自体は呼び出せる?
その時点で破綻してるなら、今のwriteをそのままスレッド化して、write自体はスレッド起動だけにするなりで対応とか…ダメかな
あとCPUは1つ前提でおkっす。
余裕があったら後学のためにもsmp対応も抑えておきたいがw
2008/02/21(木) 09:10:48ID:Kf6eqU14
> ブロック中にアプリBからもwrite自体は呼び出せる?
もちろん呼べる
ブロック処理とは、簡単にいうと処理開始をデバイス(ハードウェア)に
通知したあとスリープ状態に入り、処理完了割込が入ったら
割込ハンドラがスリープ(ブロッキング)しているプロセスを
たたき起こすって流れ。
アプリAがスリープ(ブロッキング)している間に
アプリBからreadなりwriteなりが発行されるのは当然ありうる話。
ちゃんとドライバを書いておけば問題なく動く。
linuxカーネルのソースコードそのものがいいサンプルコードだから
いろいろ読んでみるとよい。
それから、procfs(/procの下に仮想ファイルをつくる)に
状態監視・デバッグ操作用のI/Fを用意しておくと後々楽になるよ。
もちろん呼べる
ブロック処理とは、簡単にいうと処理開始をデバイス(ハードウェア)に
通知したあとスリープ状態に入り、処理完了割込が入ったら
割込ハンドラがスリープ(ブロッキング)しているプロセスを
たたき起こすって流れ。
アプリAがスリープ(ブロッキング)している間に
アプリBからreadなりwriteなりが発行されるのは当然ありうる話。
ちゃんとドライバを書いておけば問題なく動く。
linuxカーネルのソースコードそのものがいいサンプルコードだから
いろいろ読んでみるとよい。
それから、procfs(/procの下に仮想ファイルをつくる)に
状態監視・デバッグ操作用のI/Fを用意しておくと後々楽になるよ。
2008/02/21(木) 09:27:27ID:VUV3LHo/
791login:Penguin
2008/03/03(月) 00:13:39ID: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
上記を参考にシステムコールをフックするプログラムを書きました(そのままでは駄目なので必要に応じて修正しています)。
コンパイルすると、
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
2008/03/03(月) 01:17:37ID:dOT+ttrq
>>791
よく知らんけど、これよめ。
System calls replacement
ttp://kerneltrap.org/node/5793
nm -uでundefinedなシンボルが置き換えらればいいだけなら、
LD_PRELOADなりLD_AUDITをつかってどうにかしたほうがいいんじゃね?
そうなら、以後下へどうぞ。
Linuxプログラミング
http://pc11.2ch.net/test/read.cgi/linux/1118024349/
よく知らんけど、これよめ。
System calls replacement
ttp://kerneltrap.org/node/5793
nm -uでundefinedなシンボルが置き換えらればいいだけなら、
LD_PRELOADなりLD_AUDITをつかってどうにかしたほうがいいんじゃね?
そうなら、以後下へどうぞ。
Linuxプログラミング
http://pc11.2ch.net/test/read.cgi/linux/1118024349/
2008/03/03(月) 04:02:04ID:JCTvrwL7
794791
2008/03/03(月) 07:25:41ID:zrYDUX8A2008/03/04(火) 09:36:17ID: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();を
加えればできたと思う。
乗り遅れたか!?
Linux 2.6からシステムコールのフックはできません。
パッチ当てなきゃできないようなことが
ttp://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
8章にそのようなことが書いてあったはず。
記憶が確かなら、792の示したサイトの
unsigned long **sys_call_table = find_sys_call_table();を
加えればできたと思う。
796795
2008/03/04(火) 09:39:35ID:NdRlprld >>791
パッチを当てるのが嫌ならLSMを使ったらいい。
決まった関数で始めるとか、とかsecurity_operations構造体に登録するあたりとか
デバドラに似ているからsecurity以下を読めば使えると思う。
パッチを当てるのが嫌ならLSMを使ったらいい。
決まった関数で始めるとか、とかsecurity_operations構造体に登録するあたりとか
デバドラに似ているからsecurity以下を読めば使えると思う。
797791
2008/03/04(火) 19:10:21ID:iX0t2env2008/03/04(火) 20:25:09ID:neWtFAJV
799791
2008/03/05(水) 00:39:02ID:QPFLTsD+ >>798
そのようなことはございません
そのようなことはございません
800login:Penguin
2008/03/17(月) 18:46:02ID:c0UdNwV3 あげ
2008/03/18(火) 18:12:00ID:z8581E+A
init中にalloc_chrdev_regionでデバイス番号を動的確保した後で、
そのまま(関数内で)スペシャルファイルを作成する事は可能?
mknodコマンドでなく、あくまでインスコだけで済ませるように出来ないかと…
そのまま(関数内で)スペシャルファイルを作成する事は可能?
mknodコマンドでなく、あくまでインスコだけで済ませるように出来ないかと…
2008/03/18(火) 18:22:19ID:qC/Waqz9
udevじゃダメなの?
2008/03/18(火) 20:50:35ID:Hq9+Lc7G
>>801
オレならprocなりsysなりのみで済ます
オレならprocなりsysなりのみで済ます
804801
2008/03/18(火) 21:37:57ID:z8581E+A2008/03/18(火) 21:49:17ID:irgQA2zj
shell スクリプト作ってその中で insmod、mknod すれば?
rmmod も出来るようにすれば、なお良いでしょ?
rmmod も出来るようにすれば、なお良いでしょ?
2008/03/18(火) 23:47:40ID:z8581E+A
2008/03/18(火) 23:49:33ID:owXiyD5i
2008/03/19(水) 10:35:22ID:J+fEVrF8
ブロックデバイスのブロックサイズってどこで決まってるの?
ユーザアプリから見る方法ある?
ユーザアプリから見る方法ある?
2008/03/19(水) 14:37:31ID:ZMxkS/nc
2008/03/20(木) 00:19:26ID:tEIlyDHp
2008/03/20(木) 00:24:56ID:tEIlyDHp
>>808
試してないけど、blktool(8)のblock-szコマンドでいけそうかもね?
試してないけど、blktool(8)のblock-szコマンドでいけそうかもね?
2008/03/20(木) 02:10:32ID:wMmGSYfl
2008/03/28(金) 15:40:00ID:BcQjSrEl
>>807見て、misc_register調べてちょっと使ってみたんだけど、
これで作ったもんどうやって消すんだ?
関数自体は使い方分かったが、対になるもの無い?
misc_register込みのinsmod→rmmod→再度insmodでハングするんだが
これで作ったもんどうやって消すんだ?
関数自体は使い方分かったが、対になるもの無い?
misc_register込みのinsmod→rmmod→再度insmodでハングするんだが
2008/03/28(金) 15:47:49ID:BcQjSrEl
書いた直後に自己解決しちまったorz
misc_deregisterがあるのね…
スレ汚しすまんかった
misc_deregisterがあるのね…
スレ汚しすまんかった
815791
2008/04/06(日) 15:36:55ID:n9AD6VHb ほ?
816login:Penguin
2008/04/10(木) 21:40:14ID:zop984mC mmapを利用して物理アドレス0x10000000に存在するデバイス(SRAM)のR/Wを
行うドライバを作成しようと思っています。
馬本の第3版のサンプルソース(simple)を参考にしながらremap_pfn_rangeで
マッピングし、ダンプをとってみたところ、0x10000000エリアのデータでは
なく、全て0のデータが読み取れました。
0x1000等の小さい物理アドレスであれば正常にリード出来ているようです。
0x10000000のように上の方のアドレスは、remap_pfn_rangeではマッピング
されないのでしょうか?
カーネルのバージョンは2.6.11です。
行うドライバを作成しようと思っています。
馬本の第3版のサンプルソース(simple)を参考にしながらremap_pfn_rangeで
マッピングし、ダンプをとってみたところ、0x10000000エリアのデータでは
なく、全て0のデータが読み取れました。
0x1000等の小さい物理アドレスであれば正常にリード出来ているようです。
0x10000000のように上の方のアドレスは、remap_pfn_rangeではマッピング
されないのでしょうか?
カーネルのバージョンは2.6.11です。
817816
2008/04/10(木) 22:19:28ID: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)
でも同じ結果でした・・・
memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000)
memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000)
でも同じ結果でした・・・
818816
2008/04/10(木) 22:20:55ID: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)
>>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)
819816
2008/04/10(木) 22:21:43ID: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)
>>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)
2008/04/10(木) 23:10:16ID:hws3UYgb
Linux 2.6.11 使ってないしためしてないけど、
/sys/devices/pci*/*/resource? を mmap(2) って出来ないんだっけ?
/sys/devices/pci*/*/resource? を mmap(2) って出来ないんだっけ?
2008/04/11(金) 00:58:30ID:pzz5pihD
とりあえず、落ち着けw
man mmap2
man mmap2
822816
2008/04/11(金) 23:01:18ID:1s5/4DVK >>821
>man mmap2
↓ですよね?
http://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も見れるのに・・・
>man mmap2
↓ですよね?
http://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も見れるのに・・・
2008/04/12(土) 04:09:25ID:CJCvWk/v
MTD使えばいいんじゃない?
phram.koとか
slram.koとか
phram.koとか
slram.koとか
2008/05/26(月) 23:35:38ID:ZMUO6bXW
タスクレットの中でsleep_on_timeoutって呼べないんですか?
なぜかカーネルパニックになってしまいます…
なぜかカーネルパニックになってしまいます…
2008/05/28(水) 19:14:20ID:eAKKlqpI
タスクレットからkill_fasync()呼びたいんですけど、
第一引数ってどこから持ってくればいいんでしょうか?
第一引数ってどこから持ってくればいいんでしょうか?
826login:Penguin
2008/06/13(金) 19:47:44ID:ngpRzev4 フリーオのデバイスドライバー書ける人が居たら神!
2008/06/13(金) 22:56:58ID:yAy4CW2H
玄箱用のは、あるだろ
828login:Penguin
2008/07/05(土) 05:09:39ID:+CtKxXwh あげあげ
2008/07/05(土) 08:11:05ID:d6Puhgue
ttp://pc11.2ch.net/test/read.cgi/linux/1213378360/
2008/07/05(土) 11:49:23ID:D1363wxr
やっぱり情報公開されてない物のドライバ造るのって無理がある?
Willcomスマートフォン端末でLinuxを動かすプロジェクト?があるのですが、
WS003SH、WSはPrismチップの無線LANを使用。
WS011SHではSharp独自のチップを使用した物のようです。
WS020SHは不明。
当方WS011SHの物の開発に興味があるのですが、難しいどころか情報の公開がされていない限りは
手すら付けられない状態でしょうか?
アドバイスよろしくお願いします。
Willcomスマートフォン端末でLinuxを動かすプロジェクト?があるのですが、
WS003SH、WSはPrismチップの無線LANを使用。
WS011SHではSharp独自のチップを使用した物のようです。
WS020SHは不明。
当方WS011SHの物の開発に興味があるのですが、難しいどころか情報の公開がされていない限りは
手すら付けられない状態でしょうか?
アドバイスよろしくお願いします。
831login:Penguin
2008/07/27(日) 04:17:46ID:JGvJfhtT copy_{to,from}_user()でユーザプロセスのアドレスを与えるところにカーネル空間のアドレスを与えるとどうなります?
やっぱりaccess_ok()で弾かれる?
やっぱりaccess_ok()で弾かれる?
832login:Penguin
2008/07/27(日) 08:01:26ID:Nq54nVAZ >>831
その程度、自分で確認しろ。
その程度、自分で確認しろ。
833login:Penguin
2008/08/21(木) 06:11:30ID:5vh0FBcx あげ
834login:Penguin
2008/09/17(水) 22:50:23ID:v0hV3n2N Linuxデバドラ移植の質問です。
雑誌の記事でx86Linuxデバドラを他CPUのLinuxに移植する際に、デバドラのソースが
x86に依存してて移植できないことを知りました。
どうやらx86プログラマが他のCPUへの移植性を考えずに開発したことが原因みたいです。
雑誌によるとデバドラの依存箇所は以下が多いようです。
・バイトオーダ
・アライメント
・I/Oアクセス
・タイミング
皆様に質問ですが、このようなx86に依存したLinuxデバドラが落ちている場所を
ご存じないでしょうか?
また、根本的なことですがx86Linuxデバドラを移植したり、移植しようとしたが
x86に依存してて大変だったという案件は多いのでしょうか?
どうぞよろしくお願いいたします。
雑誌の記事でx86Linuxデバドラを他CPUのLinuxに移植する際に、デバドラのソースが
x86に依存してて移植できないことを知りました。
どうやらx86プログラマが他のCPUへの移植性を考えずに開発したことが原因みたいです。
雑誌によるとデバドラの依存箇所は以下が多いようです。
・バイトオーダ
・アライメント
・I/Oアクセス
・タイミング
皆様に質問ですが、このようなx86に依存したLinuxデバドラが落ちている場所を
ご存じないでしょうか?
また、根本的なことですがx86Linuxデバドラを移植したり、移植しようとしたが
x86に依存してて大変だったという案件は多いのでしょうか?
どうぞよろしくお願いいたします。
2008/09/17(水) 23:58:51ID:3YmhTjsY
2008/09/18(木) 00:34:30ID:YTkXriLK
837834
2008/09/18(木) 00:34:38ID:csSd+QEz カーネルソース内にあるんですね!
知りませんでした;
私は初心者でよく知らないんですが、てっきりカーネルソール内のコードって
移植性をちゃんと考えてあって(arch/以外)、管理されていると思ってました。
むしろ、カーネルソース外の開発(企業or個人)で公開されているドライバに
あるのかと思ってました。
知りませんでした;
私は初心者でよく知らないんですが、てっきりカーネルソール内のコードって
移植性をちゃんと考えてあって(arch/以外)、管理されていると思ってました。
むしろ、カーネルソース外の開発(企業or個人)で公開されているドライバに
あるのかと思ってました。
2008/09/18(木) 10:25:28ID:tEXQNL4k
>>834
ふつー開発者の持ってるCPUでしかテストしないよ。
tg3とかe1000とかはNEC(ia64)とかIBM(powerpc)とかが
頑張って自分とこのハードで動くようにしてるけど、
個人でハックしてるものはたいていx86だけ。
ふつー開発者の持ってるCPUでしかテストしないよ。
tg3とかe1000とかはNEC(ia64)とかIBM(powerpc)とかが
頑張って自分とこのハードで動くようにしてるけど、
個人でハックしてるものはたいていx86だけ。
2008/09/19(金) 05:32:38ID:PmgUOzFO
まあ、過去の経験からすると
・USBターゲット - ほとんど手を入れる必要無し
・PCI - そんなに苦労することはない
・CPU直結 - 健闘を祈る
てところですかねえ。
・USBターゲット - ほとんど手を入れる必要無し
・PCI - そんなに苦労することはない
・CPU直結 - 健闘を祈る
てところですかねえ。
840login:Penguin
2008/11/09(日) 10:59:58ID:QBZrgAJi age
2008/11/13(木) 05:29:37ID:dS9nrsy0
USBデバイスでも無線LANとかは
842login:Penguin
2008/12/07(日) 17:23:17ID:Ht7uJKzk age
2008/12/19(金) 14:08:43ID:MwDJWbRs
HWからの割込み処理中の、ローカルAPICへのEOI発行タイミングについて質問があります。
レベル・トリガの割込みだった場合は、end関数からEOIを発行しています。
これは、割込み処理の先頭で発行してしまうと、I/O APICへEOIが通知され、デバイスのアサートが
失われてしまうのが不都合だからでしょうか?
カーネルのverは2.6.18 です。
レベル・トリガの割込みだった場合は、end関数からEOIを発行しています。
これは、割込み処理の先頭で発行してしまうと、I/O APICへEOIが通知され、デバイスのアサートが
失われてしまうのが不都合だからでしょうか?
カーネルのverは2.6.18 です。
2008/12/20(土) 08:40:05ID:9ZJbjYSC
2008/12/21(日) 18:36:36ID:6RSqLOEI
2008/12/21(日) 19:17:37ID:otIiAnj0
ダブルフォルト乙
2008/12/22(月) 03:52:28ID:guo09gfy
(1)はおばさんのスピードに勝てないと判断して、(2)のおばさんに話し掛けるよな
もうお腹いっぱいって
もうお腹いっぱいって
848login:Penguin
2009/01/24(土) 00:42:09ID:UJ+xFTUa a
2009/02/17(火) 22:55:17ID: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);
下のコードの時点で、すでにコンパイルが通りません。
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);
850login:Penguin
2009/02/17(火) 22:55:48ID:m2mCukTw すみません、sageてしまいました。
2009/02/18(水) 00:04:19ID:lQ8CDN9P
根本的に間違っているような気がするので、
もう少し具体的にやりたいことを書いた方がいいと思う。
取り合えずドライバでioplはいらねえ。
もう少し具体的にやりたいことを書いた方がいいと思う。
取り合えずドライバでioplはいらねえ。
2009/02/18(水) 01:04:31ID:WJ6360yx
>>851
もしかして、ドライバ内では、ポートにアクセスするのに、iopl自体が使えないということでしょうか?
そうすると、request_regionしていくしかないということですかね。
それとも、アクセス許可自体が必要ないのでしょうか。
元々、独自PCI-I/Fボードにアクセスするアプリがありまして、
それの、ドライバ版を作ろうと思いました。
そのアプリでは、iopl(3)→outb(),inb()にて値を取得していたので、同じ様に作っていたところでした。
PCIからのポートアドレス取得が上手くでき、そのアドレスにアクセスする段階だったのですが、
ioplでどうしてもコンパイルが通らず、includeの問題なのか、Makefileなのか、
途方に暮れてました。>>849はそのテストプログラムを抜き出しです。
もしかして、ドライバ内では、ポートにアクセスするのに、iopl自体が使えないということでしょうか?
そうすると、request_regionしていくしかないということですかね。
それとも、アクセス許可自体が必要ないのでしょうか。
元々、独自PCI-I/Fボードにアクセスするアプリがありまして、
それの、ドライバ版を作ろうと思いました。
そのアプリでは、iopl(3)→outb(),inb()にて値を取得していたので、同じ様に作っていたところでした。
PCIからのポートアドレス取得が上手くでき、そのアドレスにアクセスする段階だったのですが、
ioplでどうしてもコンパイルが通らず、includeの問題なのか、Makefileなのか、
途方に暮れてました。>>849はそのテストプログラムを抜き出しです。
2009/02/18(水) 01:38:21ID:lQ8CDN9P
なんでドライバにする必要があるのかよくわからんが。
そういうレベルでわからんのであれば、まずは馬本で基礎知識を
身につけた方がいいと思う。
ついでに、sys_ioplの呼び方はそうじゃない。
つうかカーネルの中でsys_〜は直接呼ぶもんじゃない。
そういうレベルでわからんのであれば、まずは馬本で基礎知識を
身につけた方がいいと思う。
ついでに、sys_ioplの呼び方はそうじゃない。
つうかカーネルの中でsys_〜は直接呼ぶもんじゃない。
2009/02/18(水) 12:48:39ID:WJ6360yx
>>853
ありがとうございます。
ドライバ版の意図は、いずれ割り込みを使うつもりだったからです。
馬本は十分理解できなかったので、とりあえず作ってみるという感じでやってました。
sys_ioplは呼んではいけないんですね。
馬本、もう一度読んでみます。
ありがとうございます。
ドライバ版の意図は、いずれ割り込みを使うつもりだったからです。
馬本は十分理解できなかったので、とりあえず作ってみるという感じでやってました。
sys_ioplは呼んではいけないんですね。
馬本、もう一度読んでみます。
2009/02/18(水) 16:25:38ID:zpaCJvuo
馬本はカーネルの知識がある程度ある前提で書かれてるので
まずはLinuxカーネルに関する文献を読んでみることをおすすめするよ
デバイスドライバはカーネルの一部でもあることを忘れるな
まずはLinuxカーネルに関する文献を読んでみることをおすすめするよ
デバイスドライバはカーネルの一部でもあることを忘れるな
2009/05/29(金) 14:40:20ID:D/EXOrYt
Kernel 内で IN/OUT アセンブラ命令に相当するのは
何かマクロがあるんじゃなかったっけ?
READ_PORT とかそんなの。
何かマクロがあるんじゃなかったっけ?
READ_PORT とかそんなの。
2009/05/29(金) 23:00:18ID:A6oE+oT8
in[bwl]
out[bwl]
とか。
include/asm/io.hに入ってたはず。
out[bwl]
とか。
include/asm/io.hに入ってたはず。
2009/07/04(土) 14:39:23ID:D5yvn6Kc
シリアルドライバ内の情報で、何バイト受信済みとか、何バイト未送信という情報って
取得することは可能ですか?
取得することは可能ですか?
859858
2009/07/04(土) 16:35:43ID:D5yvn6Kc 補足です。
上記の情報をアプリケーションから取得できますか?
上記の情報をアプリケーションから取得できますか?
2009/07/05(日) 02:17:52ID:vnzKXmwE
2009/07/05(日) 14:39:25ID:jkHVDhT6
ヌルイぞ。そこは
つーかソース嫁よ。せっかるあるんだからよ。
だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。
・・・ってえらいひとがいってました!
つーかソース嫁よ。せっかるあるんだからよ。
だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。
・・・ってえらいひとがいってました!
2009/07/05(日) 23:11:19ID:vnzKXmwE
>>861
その偉い人は馬鹿だよ
その偉い人は馬鹿だよ
2009/07/05(日) 23:20:49ID:xNWd+cLB
どこでも、えらい人は馬鹿なもんさ。
864login:Penguin
2009/09/19(土) 20:24:56ID:I29pddJ7 保守上げ
2009/10/12(月) 16:24:20ID:cJbteqq9
2009/12/03(木) 22:11:10ID:s69LcKJk
i386BSDカーネルの386BSDカーネルソースコードの秘密
ソース以上の資料なんかないんだから、に対して何か書いてあったな。
ソース以上の資料なんかないんだから、に対して何か書いてあったな。
2009/12/03(木) 23:11:02ID:LYVup2we
>>866
ソースそのものと、ソースにこめられた趣旨は別じゃないかな?
ソースそのものと、ソースにこめられた趣旨は別じゃないかな?
2009/12/10(木) 00:21:58ID:XvjOUXRH
UTSL だな。
869login:Penguin
2010/02/18(木) 10:40:00ID:hWc/MwlX linuxmintとウィンドウズ7RCを使っています。WIN7は試用なので来月から起動後一時間で自動で電源が落ちるようです。
リナックスに乗り換えるのは簡単なのですが、今使ってるテレビチューナーのドライバがリナックスには無いのです。
だれかmvp-rx3のドライバを書いてください。
このままではリナックスでテレビが見られず、リナックスをあきらめてウィンドウズのところにお嫁にイかされてしまいます。
テレビを見るためにはリナックスをお慕いもうしあげていますのにウィンドウズを買わなければならない境遇に
どうかどうか同情をしていただけるスーパーハッカーの方はドライバ書いてくださいませんか。
生きていくためには愛をもあきらめゲイツに身をゆだねなければならないのかと震えております。
ちなみにあたし女子中学生です。生娘です。似ている芸能人は17歳のころの広末涼子です。
リナックスに乗り換えるのは簡単なのですが、今使ってるテレビチューナーのドライバがリナックスには無いのです。
だれかmvp-rx3のドライバを書いてください。
このままではリナックスでテレビが見られず、リナックスをあきらめてウィンドウズのところにお嫁にイかされてしまいます。
テレビを見るためにはリナックスをお慕いもうしあげていますのにウィンドウズを買わなければならない境遇に
どうかどうか同情をしていただけるスーパーハッカーの方はドライバ書いてくださいませんか。
生きていくためには愛をもあきらめゲイツに身をゆだねなければならないのかと震えております。
ちなみにあたし女子中学生です。生娘です。似ている芸能人は17歳のころの広末涼子です。
2010/02/18(木) 19:21:20ID:tk+7V5La
>>869
GV-MVP/RX3
http://www.iodata.jp/product/tv/analog/gv-mvprx3/
mvp-rx3はアナログTVキャプチャーボードですね。
2011年7月にアナログテレビ放送が終了するので
どのみち地上デジタルテレビチューナーが必要になります。
Windows7を買う金でPT2を買ってLinuxで使う方がよいと思います。
PT2なら地デジでもコピーワンスによる不便から逃れられます。
日経Linux 2010年2月号
http://itpro.nikkeibp.co.jp/article/MAG/20100105/342880/
> 特集2
> PT2で地デジ録画システムを作る
> パソコンで地上デジタル放送や衛星放送を受信できる
> デジタル・チューナ「PT2」を使ってシステムを作ります。
> 最新のLinuxディストリビューションのFedora 12とUbuntu 9.10で
> PT2のドライバをインストールし,高画質のテレビ番組を見てみましょう。
> 番組表から録画予約する方法も紹介します。
【視聴】Linuxでデジタル放送【録画】
http://pc11.2ch.net/test/read.cgi/linux/1230616112/
GV-MVP/RX3
http://www.iodata.jp/product/tv/analog/gv-mvprx3/
mvp-rx3はアナログTVキャプチャーボードですね。
2011年7月にアナログテレビ放送が終了するので
どのみち地上デジタルテレビチューナーが必要になります。
Windows7を買う金でPT2を買ってLinuxで使う方がよいと思います。
PT2なら地デジでもコピーワンスによる不便から逃れられます。
日経Linux 2010年2月号
http://itpro.nikkeibp.co.jp/article/MAG/20100105/342880/
> 特集2
> PT2で地デジ録画システムを作る
> パソコンで地上デジタル放送や衛星放送を受信できる
> デジタル・チューナ「PT2」を使ってシステムを作ります。
> 最新のLinuxディストリビューションのFedora 12とUbuntu 9.10で
> PT2のドライバをインストールし,高画質のテレビ番組を見てみましょう。
> 番組表から録画予約する方法も紹介します。
【視聴】Linuxでデジタル放送【録画】
http://pc11.2ch.net/test/read.cgi/linux/1230616112/
2010/06/28(月) 20:46:03ID:Pckx/KO8
デバイスクラスがCDCでバルクでデータ転送するUSBドライバを作りたいんですけど、usb-skeltonドライバのベンダーIDとプロダクトIDを変更すれば使えるのでしょうか?
2010/11/04(木) 21:49:31ID:S1XESMQS
ioctlについて教えてください。
ioctlのパラメーターで指定するIDはlinux/ioctl.hで定義されているIOWやIORを使います。
しかし、アプリ開発者に渡すヘッダにIOWなどを使ってしまうと、ioctl.hはカーネルヘッダなので
アプリ開発者に渡せません。
ioctl.hごと渡すという手もありますが、ioctl.hの実態はarchの下を辿っていったものなので、
ずばりIOWなどが定義されているioctl.hを渡してしまっては、アーキテクチャを隠蔽している意味が
薄れてしまいます。
かと言って、別にヘッダを作っては無駄です。
これは、本来はどのように解決することを想定されているのでしょうか?
ioctlのパラメーターで指定するIDはlinux/ioctl.hで定義されているIOWやIORを使います。
しかし、アプリ開発者に渡すヘッダにIOWなどを使ってしまうと、ioctl.hはカーネルヘッダなので
アプリ開発者に渡せません。
ioctl.hごと渡すという手もありますが、ioctl.hの実態はarchの下を辿っていったものなので、
ずばりIOWなどが定義されているioctl.hを渡してしまっては、アーキテクチャを隠蔽している意味が
薄れてしまいます。
かと言って、別にヘッダを作っては無駄です。
これは、本来はどのように解決することを想定されているのでしょうか?
2010/11/04(木) 22:06:18ID:qwjxXvn/
ビルド環境に入っているものを素直に使う。
2010/11/04(木) 22:34:19ID:S1XESMQS
>>873
ビルド環境?
すみません、Linuxはドライバの開発とOSの移植しかやったことがないので、
ビルド環境がよくわかりません。
ドライバを開発するうえで、アプリ屋さんにどのようにドライバのヘッダファイルを
渡すのが正しいやり方なのかを知りたいです。
ビルド環境?
すみません、Linuxはドライバの開発とOSの移植しかやったことがないので、
ビルド環境がよくわかりません。
ドライバを開発するうえで、アプリ屋さんにどのようにドライバのヘッダファイルを
渡すのが正しいやり方なのかを知りたいです。
2010/11/04(木) 22:38:36ID:LR3hS2yn
?ttp://homepage3.nifty.com/rio_i/lab/driver24/00205ioctl.html
2010/11/04(木) 23:04:47ID:S1XESMQS
分かりました。
ioctl.hはわざわざ渡さなくても、アプリ開発で使用するカーネルヘッダに入っているので
大丈夫ということですね。
ありがとうございました。
ioctl.hはわざわざ渡さなくても、アプリ開発で使用するカーネルヘッダに入っているので
大丈夫ということですね。
ありがとうございました。
2010/12/02(木) 23:23:04ID:4b10+uK8
ドライバコンパイル時に静的ライブラリをリンクさせることって出来ますか?
2010/12/02(木) 23:29:16ID:QEjw5J80
はい
2010/12/03(金) 01:20:27ID:q4cXzrWN
どうやったら出来ますか?
2.6系のカーネルですが、-lでライブラリを指定しても
WARNING: "hoge" [/home/hoge.ko] undefined!
と言われてリンクできないんですよ。
2.6系のカーネルですが、-lでライブラリを指定しても
WARNING: "hoge" [/home/hoge.ko] undefined!
と言われてリンクできないんですよ。
2010/12/03(金) 01:26:12ID:HjCnxCbQ
.koってライブラリじゃないよ
2010/12/03(金) 10:36:25ID:CY74Qv7R
そもそもgccやbinutilsはWARNINGとか大文字は出さないだろう
何かすごい勘違いしてそう
何かすごい勘違いしてそう
2010/12/11(土) 14:59:04ID:uuYvSF4I
883login:Penguin
2010/12/29(水) 17:20:29ID:4yM0+SZ6 webcam(UVC)を接続すると、/dev/video0にデバイスが作成されますが、
ここから流れてくるフォーマットについて知りたいのですが、どこか
参照するところってありますでしょうか?
ここから流れてくるフォーマットについて知りたいのですが、どこか
参照するところってありますでしょうか?
2011/05/27(金) 16:14:52.73ID:hBkzVcCP
Cライブラリのassert()のドライバ版みたいなのないですかね?
勉強用にドライバを書いているのだけど、エラーチェックにいちいち if文を書くのが面倒くさい。
普通のアプリの場合は、assert()で一行でエラーチェックを終わらせるのだけど。
無いなら、どうやってエラーチェックしてるか教えて貰えるとありがたい。
勉強用にドライバを書いているのだけど、エラーチェックにいちいち if文を書くのが面倒くさい。
普通のアプリの場合は、assert()で一行でエラーチェックを終わらせるのだけど。
無いなら、どうやってエラーチェックしてるか教えて貰えるとありがたい。
2011/05/27(金) 16:21:32.12ID:oqgnTIfp
BUG_ON
2011/05/27(金) 23:08:25.94ID:NHryjoxJ
タイプ数減らしたいだけなら自分でマクロ書けばいいじゃん
#define assert(x) なんとかかんとか
#define assert(x) なんとかかんとか
888885
2011/05/28(土) 21:55:24.09ID:DZ/zAfXL >886
どうもありがとう。良い情報を頂きました。
>887
最悪その方法を取るけれど、既存の洗練された方法があるならそっちを使うべきでしょう?
どうもありがとう。良い情報を頂きました。
>887
最悪その方法を取るけれど、既存の洗練された方法があるならそっちを使うべきでしょう?
889login:Penguin
2011/07/28(木) 17:08:37.75ID:fa8I36t3 PCIの自作用穴あき基板ってあるんですかね?
自作基板をスロットに差してデバドラも自分で書いて使ってる人います?
自作基板をスロットに差してデバドラも自分で書いて使ってる人います?
890login:Penguin
2011/07/28(木) 21:19:13.92ID:9X016Sem FPGAでプログラムする人とかいるんじゃないかな
2011/08/30(火) 14:59:09.92ID:0covJFQI
>>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のデバッグつらそう
サンハヤトで売ってる
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のデバッグつらそう
892電板住人
2011/09/08(木) 22:50:33.11ID:5S22Lom/ >891
なせばなるってか。
http://elm-chan.org/works/pci/report.html
USB highspeed で足りなくなる用途ってのがなかなかなくて
なんか作る前に PCI がオワコンになってしまた。
なせばなるってか。
http://elm-chan.org/works/pci/report.html
USB highspeed で足りなくなる用途ってのがなかなかなくて
なんか作る前に PCI がオワコンになってしまた。
2011/09/08(木) 22:57:53.59ID:gAMXe89X
汎用のPCIプロトコルICがあればいいのにね
プロトコルが複雑なせいで使いにくいよ、PCIは
プロトコルが複雑なせいで使いにくいよ、PCIは
2011/09/08(木) 23:36:34.13ID:M1WIsemQ
>>893(やーさん)
891が言ってるPLXのPCI bridge LSIが、いわゆる汎用のPCIプロトコルICだろ?
ttp://www.plxtech.com/products/fastlane/
ttp://www.plxtech.com/products/expresslane/bridges
891が言ってるPLXのPCI bridge LSIが、いわゆる汎用のPCIプロトコルICだろ?
ttp://www.plxtech.com/products/fastlane/
ttp://www.plxtech.com/products/expresslane/bridges
2011/09/09(金) 00:51:36.99ID:i51Tyjoe
>894
MOUSERで買えるんだな。知らなかった。
俺が知ってるのはこっち。
http://shop.trenz-electronic.de/catalog/product_info.php?products_id=801
MOUSERで買えるんだな。知らなかった。
俺が知ってるのはこっち。
http://shop.trenz-electronic.de/catalog/product_info.php?products_id=801
2011/09/09(金) 08:48:41.83ID:RO54tTej
PCIってバスマスタ機能ついてないと強烈に遅いからなぁ
ターゲットアクセスONLYだったらUSBの方が全然マシ
ターゲットアクセスONLYだったらUSBの方が全然マシ
2011/09/09(金) 12:22:55.91ID:c/CggDIE
USBはターゲット側から割り込みかけられんのがなあ
3.0が一般的になれば解決しそうだが
3.0が一般的になれば解決しそうだが
2011/09/16(金) 20:45:13.24ID:sbRt/b8G
http://page2.auctions.yahoo.co.jp/jp/auction/b124613538
旦那、アナライザが出てきましたぜ
旦那、アナライザが出てきましたぜ
2011/09/17(土) 13:18:09.75ID:1xn24TfS
>>898
一瞬安いと思ってしまったが、いまさら使い道ないよなぁ
一瞬安いと思ってしまったが、いまさら使い道ないよなぁ
2011/10/01(土) 08:26:06.16ID:PYdveQ5P
create_workqueueでカーネルスレッドいっぱい作るドライバが多いな
core-i7とか12個もできたりする
core-i7とか12個もできたりする
2012/04/10(火) 20:10:51.64ID:K9bAsJRY
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は不可といったことなんでしょうか?
それとも、他にフラグ操作等足らない操作があるのでしょうか?
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は不可といったことなんでしょうか?
それとも、他にフラグ操作等足らない操作があるのでしょうか?
2012/04/10(火) 20:13:57.19ID:TjB2iYHy
同じリソースに2ヶ所(個別の管理している?)からアクセス(書き込み)したら、どうなるかわかってる?
2012/04/11(水) 07:08:07.09ID:Ov29jEBq
>>902
実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、
それでも横から弄られたら破綻するかなと思います。
そもそも、ベンダー側ドライバがこのbitを操作するioctl()なりEXPORT関数なりを用意
してないので、サポート外動作というのは理解しています。
一応、この辺はベンダー側にNDAでもいいんで提供してもらえるように依頼しています。
今回は、それまでに時間がかかるのでとりあえずでも弄ることができないかとあれこれ
やっています。
最悪は、このbitをドライバロード時に設定しているドライバソースを弄ればなんとか
なりそうなんですが、ソースを弄ることなく外から設定できるといいな、と。
実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、
それでも横から弄られたら破綻するかなと思います。
そもそも、ベンダー側ドライバがこのbitを操作するioctl()なりEXPORT関数なりを用意
してないので、サポート外動作というのは理解しています。
一応、この辺はベンダー側にNDAでもいいんで提供してもらえるように依頼しています。
今回は、それまでに時間がかかるのでとりあえずでも弄ることができないかとあれこれ
やっています。
最悪は、このbitをドライバロード時に設定しているドライバソースを弄ればなんとか
なりそうなんですが、ソースを弄ることなく外から設定できるといいな、と。
904login:Penguin
2012/04/11(水) 07:42:58.51ID:k8CqWmKf ioremap()の場合ですが、こんな事書いてる人もいますね。
ttp://0x74.blogspot.jp/2009/05/linuxrequestmemregionio.html
その後バージョンが上がって変わってるかもしれません。
ttp://0x74.blogspot.jp/2009/05/linuxrequestmemregionio.html
その後バージョンが上がって変わってるかもしれません。
2012/04/11(水) 14:34:19.38ID:idMu7gyr
>実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、
スレタイに通りに、NDAドライバをハックして
バイナリパッチのほうが早くね
スレタイに通りに、NDAドライバをハックして
バイナリパッチのほうが早くね
2012/04/11(水) 19:39:13.21ID:Ov29jEBq
907906
2012/04/12(木) 20:02:46.16ID:lbSIQeJF 結局、ドライバソースを弄って無事目的を果たせました。
2012/10/08(月) 17:33:01.99ID:Z+p5tcDI
kernel技術者の需要ってどんなもんでしょう?
技術者が不足している分野と、
待遇の目安など教えてもらえると嬉しいです。
技術者が不足している分野と、
待遇の目安など教えてもらえると嬉しいです。
2012/10/09(火) 10:23:13.53ID:fG1BPWH9
今それが見えてない時点でアウトだと思うよ
2012/10/09(火) 10:46:20.92ID:HshUGVwS
いや、なら他を当たるまでなので別によいです
webなりDBなり頑張ります
webなりDBなり頑張ります
2012/10/09(火) 11:24:00.87ID:fG1BPWH9
ジャンルには関係ないとは思うが、まあいいか
2012/10/09(火) 12:26:59.26ID:sI4/BkKw
2012/10/09(火) 13:10:40.17ID:GPpGUb7J
プログラム業
914login:Penguin
2013/03/26(火) 08:51:30.75ID:CLzKF3Up age
915login:Penguin
2014/02/13(木) 19:42:26.30ID:StvXlIag /dev/input で
type=EV_MSC code=MSC_SCAN って
なにを意味してんの?
type=EV_MSC code=MSC_SCAN って
なにを意味してんの?
916login:Penguin
2014/02/23(日) 12:43:47.37ID:ytOaVGS4 ecb ってなにドライバー?
917login:Penguin
2014/02/26(水) 10:47:34.06ID:w6lQvC2s キン肉ドライバー!
2014/04/02(水) 15:13:48.18ID:rDv+tjOg
ドバイスデライバァ!
2014/04/09(水) 11:07:29.91ID:MFnWvffb
奇跡、神秘、真実、夢
2014/10/23(木) 17:16:44.71ID:p9q2EMHG
書籍読みながらサンプル動かしてるけど楽しい!
もっと早くから勉強しとくんだった・・・
もっと早くから勉強しとくんだった・・・
921login:Penguin
2014/10/30(木) 21:21:48.26ID:xfEc1Jae ユーザーランドで動作するデバイスドライバ
って作れる?
って作れる?
2014/10/31(金) 07:35:14.24ID:tkZ1h6qo
>>921
User Space I/O (uio)のこと?
User Space I/O (uio)のこと?
2015/09/06(日) 01:15:03.40ID:M4p9U028
923
2015/09/19(土) 22:49:35.27ID:wUZ4n7AX
ハック?
2015/09/20(日) 05:44:26.94ID:Y/A9fOOn
啓発
2015/09/20(日) 16:39:17.03ID:Y/A9fOOn
deviceは接続しただけで、大手デイストリやその系列は自動認識の時代だろ
927login:Penguin
2016/03/14(月) 02:03:02.13ID:wYUVNjV4レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 第2次大戦に触れトランプ氏「米中は同盟国」、当時は中華民国…「抗日」巡る中国の言説補強する恐れ ★2 [蚤の市★]
- 【日本】外務省「旧敵国条項」について「我が国の立場や取組をしっかりと説明・発信していきます。」 [少考さん★]
- 【ナフサ】カルビー代表、モノクロパッケージ巡り漫画家らに感謝「生まれたのは、私たちの想像を超える『彩り』でした」 [少考さん★]
- なぜ東大・一橋・早慶卒はコンサル業界に殺到するのか [首都圏の虎★]
- 【アジア大会】「外国人の尊厳を考えて」 中国選手の名前 TBS実況に違和感 呉夢潔を『ゴ・ムケツ』、陳厚羽を『チン・コウウ』呼び★2 [冬月記者★]
- “永住したい東京・多摩地域の市町村”ランキング上位に「地盤も固く水害にも強い」「15歳未満の人口が増えてます!」の声 [首都圏の虎★]
- 高市さん!美味しいカレーができたよ🍛🌶🍛ココイチで食べたら2,000円取られそう具だくさんで [457294144]
- 【高市悲報】トランプ、そもそも政治家に「ドナルド」と呼ばれるのが大嫌いだった…😨👉🦎 [359965264]
- 【悲報】高市早苗の敵国条項削除発言、自民党内からも苦言 [834922174]
- 【黒歴史】黒歴史言っていって一番まともなやつ優勝
- 高市首相、まんまと中国の罠にハマり戦後日本の努力を水の泡にすることに成功してしまう… [668024367]
- 【悲報】米中「80年前、第二次大戦で我々の敵だったあの忌々しいジャップ!」 [431136663]