ディバイスドライバをハックしよう!at LINUX
ディバイスドライバをハックしよう! - 暇つぶし2ch32:login:Penguin
02/02/01 09:53 VTxWGKIN
URLリンク(www.iecc.com)
linker&loadersの草稿が英語で読めるYO!
URLリンク(www.linux.or.jp)
Library HOWTO はわかりやすいス

33:login:Penguin
02/02/01 10:02 wGSa/qxe
ディバイディングドライバァァァァーッ!!

34:login:Penguin
02/02/01 10:21 RSGobFLl
>>31
あんた自分の理解力にコンプレックスでもあるの?

まあ気の弱い犬ほどよく吠えると言うが・・・

35:login:Penguin
02/02/01 10:35 a6zdq5Rc
>>34
オマエガナー
赤の他人に理解力について
罵られるいわれもコンプレックスを持つ必要性も
無いと思われ。
28は上司に尻叩かれて性格が曲がっちゃった
職業プログラマに3ガバス

36:login:Penguin
02/02/01 10:51 Oxc8LS21
喧嘩は~やめて~争わ~ないで~

>>33
承認

モジュールをつくる
URLリンク(www.mechatronics.mech.tohoku.ac.jp)
デバイスドライバ開発入門
URLリンク(www.net-newbie.com)
Linux 拡張ボードデバイスドライバの作り方
URLリンク(www.mechatronics.mech.tohoku.ac.jp)

>>10
URLリンク(www.linux.or.jp)


37:login:Penguin
02/02/01 10:53 Oxc8LS21
お馬さん 2ndEdition タダで読めますよ
URLリンク(www.xml.com)

38:login:Penguin
02/02/01 11:02 0zxTeFbY
>>37 サンクスコ
ちなみに23の説明は楽しかった。

39:login:Penguin
02/02/01 11:35 0DxQaaOu
>3ガバス
ガバスって、ファミ通だっけ?デバイスと関係なのでsage

40:login:Penguin
02/02/01 13:40 fvbQ/5zX
>>25
お前はまだ仮想アドレスについても学ばなければならない。

>自分のレベルに合ってない本を買ってしまったときのむなしさ

レベル上がってから読みなよ。


41:25
02/02/01 14:20 LgazE6G1
>>40
うむ、了解。
じゃあまず仮想アドレスについてから勉強するよ。
なんかこのスレでブックマークが一杯になってしまったなあ

42:login:Penguin
02/02/01 14:38 HC9Yhxcp
デバイスドライバーだけじゃないけどさ
ソフトバンクからでてるLinuxのプログラム本と
詳細なKernel(2.2系)の本はあった方がいいかなぁ・・・

43:login:Penguin
02/02/01 15:00 OYnwkLox
とりあえず、ここまでのレスは全部読んで
なんとなく概要は理解できた気がするのですが、、。

お仕事でドライバの事少し勉強しなければいけませんので、
ソースから学ぼうと思ってるんですが。
Linux2.4系のKernelソースの中で
全く、ドライバをやった事の無い初心者にも
わかりやすいソースってどれでしょうか?
どなたか有識者で知ってらっしゃる方はいらっしゃいませんか?
「お馬さん」は2.2系の日本語を読んでますけど、
非常に難解です、、。
Kernelが2.4系なので、
文献も英語しかなく、
読解力のないわたしは苦しんでいます。(^^;)

ここを良スレと見込んでよろしくお願いしますm(_ _)m


44:login:Penguin
02/02/01 15:14 4diOANaQ
>>43

Interface2、3月号あたりにLinuxのデバドラに関する記事がありました。
なかなか良かったですよ。



45:login:Penguin
02/02/01 17:42 Oxc8LS21
>>43
なんでもいいからキャラクタ型デバイスのソースをみるとよろし。
基本がみっしり詰まってて勉強になるっす。

46:login:Penguin
02/02/01 22:46 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ということは、いつものコメンテーターと作者が違うようですね。
//  そうそう。スレリンク(prog板:215-281番)とは
//  作者がちがうんで、私も心配しちょる。
// また煽られて逆上しませんか?
//  本人も、O<^Z=6:\Y2と思ったようだから大丈夫でしょう。
//  むしろ、途中で飽きるんじゃないかな?
// そのあたり、読者の応援の声が欲しいところ。
// ところで作者は、joydev.cのGPLの表記を消してしまったようですが、
// 大丈夫でしょうか?
//  まぁCopyright (c)は残したから、いいんじゃないかね。
// ともあれ、Linuxドライバーコメント2002 Round1 joydev.c
// いよいよスタートです。
// この放送は等幅フォント対応で、2chよりお伝えします!



47:login:Penguin
02/02/01 22:52 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>   // どうやらインクルードも無
事終了しました。
 


48:login:Penguin
02/02/01 22:53 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]; // それでは聞いてみましょう。ヤブナ
カさーん?
};


49:login:Penguin
02/02/01 22:56 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です。

50:login:Penguin
02/02/01 22:57 c8Ppl2p2
げ、ぶち切れてる。鬱死....

51:login:Penguin
02/02/01 23:02 Oxc8LS21
改行が挟まらなければ 相当おもしろい企画になる・・・
マジ良スレの予感

52:CMまで前半
02/02/01 23:46 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



53:CMまで後半
02/02/01 23:47 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"F@J.-WVGI3,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`03&#;GG(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


54:login:Penguin
02/02/01 23:49 bMJKgu48
只今、続き作成中です。それまで>>52-53の美しい映像(?)でお楽しみ下さい。
m(__)m

55:login:Penguin
02/02/02 00:16 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 <vojtech@suse.cz>"); // おっと!?
MODULE_DESCRIPTION("Joystick device driver"); 
MODULE_LICENSE("GPL"); // ここでマクロの登場だ。意味は大体わかりますね。
MODULE_SUPPORTED_DEVICE("input/js"); //  suseもちゃんと貢献してるねぇ
// この後いよいよ関数の登場です。
//  たのしみだね、モモナイさん
// 私は、23がどこまで理解できるか心配ですが...お願いしますよ
// サキサカさん!
//  そう言われても、結局書くのは23ですからねぇ...



56:login:Penguin
02/02/02 01:11 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がどういう物か理解してないからねぇ


57:本日のシメにageます
02/02/02 01:14 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でお送りいたしております。

 //  まだ続ける気かねぇ

58:login:Penguin
02/02/02 09:46 whMMNTAJ
おもしろい!(w

59:login:Penguin
02/02/02 23:09 OVfU0W3z
うえ

60:login:Penguin
02/02/03 00:07 zajX165D
ちなみに、元祖モモナイさん達は
スレリンク(prog板:201-300番)
このあたりにいらっしゃいます。
キャラ貸してくれたコメンテータさん、ありがとう!
# つーか事後承諾だったけど...

61:login:Penguin
02/02/03 00:09 BzrcOmdf
もういいよ。
sunは倒産。
SGIも倒産。
HPもWSから撤退。
IBMもWSから撤退。
NECもWSから撤退。
世界にはPCしかなくなりました。
OSもLinuxしかなくなりました。
犬厨の望む世界になりました。
終了。


62:23
02/02/03 02:51 KGnsKyPB
そうか、もういいのか....(鬱

63:login:Penguin
02/02/03 14:14 P0SAPnI+
>>61
その時、マイクロソフトのドライバ開発者は…

(続く)

64:login:Penguin
02/02/04 18:52 NNgCZ8vd
>>63 >>61

その頃、マイクロソフトのドライバ開発者@新橋ガード下は、
「ってやんでぇバーカヤローゥ! Linuxがなんだってんだっ、ヒック、ゥィー!」

65:login:Penguin
02/02/04 23:07 2sAhIg4J
>57

いいぞ!続きを!

66:login:Penguin
02/02/05 15:21 iaI23jTt
>65 同感。
でも、もう少し読みやすい(見やすい)とうれしんだけどな。

67:login:Penguin
02/02/05 18:54 F3yqU4bD
「予想される近未来」
・Linuxに市場を荒らされ全ての商用UNIXが撤退。
・Windowsは順調に売れて市場を拡大。
・エンタープライズ用途でのLinuxの駄目さ加減が発覚してみんな困る。
・みんなしょうがなくWindowsに移行する。
・Linuxはカーネルの分裂により大混乱。商用用途で使い物にならなくなる。
・Windowsしかなくなる。

68:login:Penguin
02/02/05 19:58 EBSnoi/G
>>67
BeOSのような第3の勢力が突発的に出現して
Gates帝国もUNIX連合も一夜にして淘汰される。に一票

69:login:Penguin
02/02/05 20:26 YUE4G5dx
サーバはどうか知らんが
結局ごちゃごちゃでも便利なものから離れられない。windowsは無くならんのは当然だが
linuxもWindowsがGPLにでもならん限り無くならんと思うなあ。
そのうち良くなるだろ。
もしBeOSみたいなのがでてきても、よっぽど革新的でFreeでないと、また往っちゃうよ

70:login:Penguin
02/02/05 20:59 UUxecaUS
コピペにマジレスカコワルイ


71:login:Penguin
02/02/05 21:21 JQSzVmkT
5年程度のスパンで見ると、Linuxは産業用の組み込み系のOSと
して活躍するでしょう。
また、IBM系のリナックスも順調にシェアを伸ばしていくでしょう。

PCではWindowsが制覇するでしょう。

72:login:Penguin
02/02/13 10:11 Ocy9V5oG
モジュールを組み込むとき、変数が渡せるものもいくつかあるけど
そのときに どの変数が渡されているかあとで知る手段ってない?

例えば sb.o とかなら irqとかいろいろ渡せるよね。
insmodしたその後で irqいくつだったか忘れたときとか
知る手段無いよね。

あと、ついでに どの変数が渡せるかを事前に知りたい。
ソースみりゃわかるけど面倒くさいじゃん。


73:login:Penguin
02/02/13 11:37 QvFCkM3Q
/proc以下のファイルで確認すればいんじゃないの?

74:名無しさん@Emacs
02/02/14 02:48 z04c7JYX
ディバイスドライバをファックしよう!

75:BERO
02/04/02 18:12 zlzOuE7v
デバイスドライバの解説って
「デバイスにはchar型とblock型があって・・charデバイスの実装サンプル」
で終わってるのが多いんだけど、
実際はソレを生で使ってることは少なくて、サウンドデバイス、CD-ROMデバイス、FlashROMデバイス、ビデオデバイスとか
デバイスごとのフレームワークがあって、実際のハードウェアドライバはその下にくるようになってる。

実験機器や自作ハードで生のI/Oポートをたたけるだけでいい、ていうのならともかく、
(フレームワークが存在するような)一般的なハードウェアでは、このテのデバドラ解説ってのは参考にならない。
ファイルシステムドライバとかもこの範疇に入らないし。

みたところ各フレームワークの解説ってのはみあたんなくて、結局ソースにあたるしかない。
ところが既存のソースも、古いコードが残ってたり、そこからのコピペと思しき不要なコードが紛れ込んでたりして、
どれをリファレンス実装として参考にしたらいいのやら、って感じでアタマいたくなる。


76:login:Penguin
02/04/05 22:06 swoFdSIN
>>75
本物?

77:login:Penguin
02/04/05 22:15 CU/0IjiI
まぁ、アゲられついでに75さんにLinux界に伝わる格言を一つ。


「動けば正義」

78:login:Penguin
02/05/08 17:01 kXDZWtdP
>77
VBプログラマに通ずるものがある(w

79:login:Penguin
02/05/12 06:02 i/O/fiuU
>>77
イイ言葉だ....

80:login:Penguin
02/06/25 11:32 h8q+RUm7
お馬さん本買ってきて、サンプルコードをftp.ora.comからダウンロード
しようと思ったのに、ftp.ora.comがつながんねーYO!
どなたかftp.ora.com/pub/examples/linux/drivers/の中身を
ミラーしていただけないでしょうか?

81:login:Penguin
02/06/26 10:26 MG8jc7TY
すみません。ftp.ora.comにつながりましたので、>>80はなしにしてください。

これだけではなんなので、同じ壁に突き当たるかもしれない人へ:
お馬さん本のサンプルソースは、筆者のサイト
fURLリンク(ar.linux.it) からもダウンロードできます。

82:login:Penguin
02/08/14 00:47 2q+/MEDi
age

83:login:Penguin
02/08/14 00:52 udiJKVSV
あがりついでに...

>>78
>>77
>VBプログラマに通ずるものがある(w
「クソコードを見付けたら、書き直すチャンス!」ってのが
VBとの違いだな。


84:login:Penguin
02/08/16 07:53 c0C09J9f
糞コードをハケーン!!

じっとガマンして保守に付き合うのはプロ
とっとと書き直すのはアマ

85:login:Penguin
02/08/16 14:43 S24KMUAB
>>84
じゃあオレはアマチュアの方がいいや。
プロっていってもピンキリだし。

86:login:Penguin
02/08/17 02:23 D5BAubdc
たとえ糞コードでも動いているものであれば余計なことをしないのが当然だろ。
元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら
周囲に迷惑をかけることになるのだから、
勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。

87:login:Penguin
02/08/17 03:47 L76cjPXx
サン電子U-cableP5のドライバはいずこ?
IOのケーブルはLinux対応してまっか?DDIに聞いたら
Linuxは独自のOSですので当社では判りかねます。
つーかWinはMS独自のOSだしMacもMac独自のOSでは?
製作者及び団体の数ではWinの方が独自性が強いと思うのですが
先生方!教えてくだはい

88:login:Penguin
02/08/17 16:48 OXP9X1ng
おお、こんなスレがあったのか。
ちょっと感動……と思ったら

>>87
だから、自分でドライバを書けよ。

89:login:Penguin
02/08/17 16:55 OXP9X1ng
仕事としてソース非公開なLinux用ドライバ開発なんぞをやってます。

>>75の言ってる事は同感。
drivers/char/serial.cなんかを見てると情けなくて泣きたくなってくる。
「動けば正義」は否定しないけど、「動いたら放置」ってのはちょっと
なぁ。

Linuxだと、なら「ならお前が書き直せ」ってことになるんだけど、正直
どこから手をつければいいのか、途方にくれるようなドライバが多すぎ
る。

90:login:Penguin
02/08/17 17:21 MTVVTQyw
88>書ければWinでネットしません!

91:login:Penguin
02/08/17 20:48 Zdf5lEt8
サン電子は「ドライバ書くので情報くれ」といってもくれない会社だから
どうしようもない。


92:login:Penguin
02/08/17 23:46 IR8qSaOk
じゃIO・DATAさんでも良いよ。
H"用のUSBケーブルで32kパケット通信(つなぎ放題)対応って2つしか無いのね!
9月にサンデンシから新しい奴が出るけどWinとMacのみ対応だし・・・・

93:login:Penguin
02/08/18 19:29 XonFUm75
>>90
書けるけどWindowsで繋いでますがなにか。

>>91
いや、情報のない状態からつついて解析していくのも、なかなか
面白いものだよ。
必要性と興味が持続しないとやっとれんけどな。

94:login:Penguin
02/08/20 04:33 EFxDYaWg
U-cableP5ならどっかにドライバ落ちてなかったか?

95:login:Penguin
02/08/21 02:27 ++pf5YT/
94>落ちてたけどウチのPCはFDも無いしCD-Rも無いから意味無し
それ以前にturboLinux7でドライバの入れ方知らんから無意味
Turboじゃなくても知らないが・・・
完全マスターTurboLinux読んで頑張ってみます。
お騒がせしました。

96:login:Penguin
02/08/22 00:52 hok07Wzb
昔DOS3.1の時代に、プリンターのデバイスドライバーをひとつ一機種に
ついて書くたびに50万円もらっていた友達をしっている。
非常においしい商売だったようだ。

97:login:Penguin
02/09/17 02:52 uJTVD8V1
今さらあげてしまいますが、オライリーのドライバの本に書いてある。
file構造体がなにをやっているのかよくわかりません。というかその存在自体が疑問です。file_operation構造体はinit_moduleによって登録されるってのはわかるんですが、file構造体はどんなときに使われるとかよくわかりません。
デバイスドライバで2番目に重要な構造体と書いてあったのでかなり意味があると思うのですが、
くだ質できく内容でないと判断したので、ここで聞かせて下さい。

98:login:Penguin
02/09/17 22:14 2Yzp0rLg
>>97
Linux のドライバは(一部除いて)ファイルで表されてるわけです。
/dev/配下にいっぱいありますよね?
そのファイルをopen すればfile_operations 構造体のopen メソッドが呼ばれる。
そのファイルをread すればfile_operations 構造体のread メソッドが以下略。

多分システムコールかデバイスファイルについて知識不足なんだと思われ。
なぜ存在自体が疑問なのか書いてる途中でわけわかんなくなってきたよヽ(`Д´)ノウワァァン

ちなみにここでつまずいてたらその本絶対読めないから教えてくれる人探した方がいい。。。


99:login:Penguin
02/09/18 03:24 AWtWYegc
ありがとうございました。
どうやらfile_operations構造体の次にでてきたので、
デバイスドライバ特有の構造体かと勘違いしてしまったようですが、
低水準システムコールのときのfile構造体と同じだったんですね。
わかったみたいです。

一応半分位まで読みました。なんとなくですがわかったきがするので、
音なるやつでも書いてみることにします。

100:login:Penguin
02/09/19 00:16 YeCer3VV
>>99
あう。。。file 構造体の方でしたか。file_operations 構造体と間違えた。。。
ごめんなさい。でもわかったんならいいよね。。。


101:login:Penguin
02/09/19 01:00 Zca/tfIP
デバイスドライバで、file構造体って見ることあります?
漏れ、見たことないんですが。


102:login:Penguin
02/09/24 08:38 jDkNy+Lt
age

103:login:Penguin
02/09/24 10:47 oRAD0jRL
久々に上がってたりして...で亀レス

>>101
一つのドライバで複数のデバイスを制御(特に割り込み)する時に
使わない? (private_data)
static な領域にデータ置いといてベタで検索でもいいけど...


104:ねここねこ
02/09/24 12:11 jDkNy+Lt
デバイスドライバを書くときに使う各種マクロや関数などが
詳しく&解りやすく載っている資料とか無いでしょうか?

謎の関数が多くて、、、、



105:login:Penguin
02/09/24 16:20 oRAD0jRL
>>104

>37 にある Linux DeviceDriver 2nd Edition
これを wget で落して(いいのか?) grep で検索しる。

あとはお決まりのソース drivers/char 以下を検索かな?



106:101
02/09/24 18:33 YwjfORCG
>>103
おお、なるほど。
そういうドライバは書いた事無いからなー。


107:ねここねこ
02/09/26 16:00 3O4ltuCq
>105
やっぱり、それしかないですか、、、
馬の本見てがんばります

さらに質問
ハードを直接叩く(?)デバイスドライバを作っているのですが
良いサンプルとか無いでしょうか?
とりあえずは、
linux/drivers/char/qpmouse.c
あたりを参考にしてるのですが、、、


108:login:Penguin
02/09/26 17:52 l3dRzYLM
>>107
お馬さんで充分かと...

> ハードを直接叩く(?)デバイスドライバを作っているのですが
これだけでサンプルないかって言われてもなぁ。
誰もレス出来ないんじゃぁ?
マウスドライバでも作ってんの?
レス出来ないかも知んないけど。


109:login:Penguin
02/09/26 18:12 7zzSbQve
>>107
ターゲットと同じ種類のドライバ
or
似たような構造のハードを制御するドライバ
が一番いいサンプルなんだが。

目的のハードがどんな物かわからんので誰も答えられんと思う。
物によって微妙に作りが違うし。


110:ねここねこ
02/09/27 09:39 2CKrLbeR
>108&109
確かに、物が不明だとわからないですね

物はFPGAというチップ経由で
データがやってくるハードのようです
外部のチップからFPGAにある程度データが貯まると
IRQをキックして(?)まとめてデータをCPUに対して送ってくるとか
言ってたな、、、

実はハードがまだ出来ていなかったり~



111:login:Penguin
02/09/27 12:01 Bk3J3OAM
>>110
> 実はハードがまだ出来ていなかったり~
よくある話。

まだ漠然としているが、画像処理か計測系だね?
割り込み関係と poll、 DMA or mmap? 、PCI?。
まず、このあたりをお馬さんで理解すればよろしいかと。


112:ねここねこ
02/09/30 09:38 ILjZfqgw
>111
>まだ漠然としているが、画像処理か計測系だね?

だいたいそんな感じです
お馬さん本見てがんばります



113:login:Penguin
02/10/03 20:49 XOS3kDwu
FPGAというチップってあーた

114:ねここねこ
02/10/04 10:18 reYTaTWA
>113
なんか呼び方が変なのでしょうか?
FPGAというICが有ると効いたのですが、、、




115:ねここねこ
02/10/04 10:18 reYTaTWA
あと、デバイスドライバ製作の資料になるようなページ

Linux PCI デバイスドライバ
URLリンク(www.hemamu.com)

Programmed I/O (PIO)を用いた簡単なPCIデバイスドライバ
URLリンク(www-online.kek.jp)

Linux Module-HOWTO
URLリンク(www.linux.or.jp)

Linuxデバイスドライバ開発ノート
URLリンク(www2s.biglobe.ne.jp)

Linuxによるロボット制御・デバイスドライバ開発
URLリンク(www.mechatronics.mech.tohoku.ac.jp)

Linux用デバイスドライバの作成
URLリンク(ap.fukushima-iri.go.jp)

LinuxデバイスドライバFAQ
URLリンク(www-online.kek.jp)

エンジニアリングLinux応用技法
カーネル/デバイスドライバ/ポーティング/リアルタイム
URLリンク(www.cqpub.co.jp)

色々調べると
ロボット系の人が多いような気がします
SFに出てくるガレージでオリジナル2足歩行ロボットを作る
時代が来たのかな?

116:login:Penguin
02/10/06 18:35 URuHDkGy
hack! age

117:login:Penguin
02/10/17 21:17 RGYfSOtJ
age


118:login:Penguin
02/12/13 10:20 NJ02XiJx
うおータコがドライバ書くのってやっぱ無理があるなー
でも仕事だしがんばるぞーちくしょー

119:IP記録実験
03/01/08 22:12 KwFqEkll
IP記録実験
スレリンク(accuse板)

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を提出することがある。

120:login:Penguin
03/01/09 01:09 kgNvzzS1
なんとか頑張って下さい>ひろゆき

お金は持ってないけど応援します。

121:login:Penguin
03/01/09 01:23 kgNvzzS1
ひろゆきは早起きのし過ぎでちょっと壊れてるな。

122:login:Penguin
03/01/09 01:33 kgNvzzS1
>>532
プ

123:IP記録実験
03/01/09 01:55 AmicprCv
IP記録実験
スレリンク(accuse板)

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を提出することがある。

124:login:Penguin
03/01/09 02:06 0uJfVOg+
名スレの予感

125:login:Penguin
03/01/09 02:50 yayiRGlu
福島もキタ━━━(゚∀゚)━━━ !!!!

126:login:Penguin
03/01/09 03:34 TPkK0Va9
>>81
まぁそういうところでよしゆきはすごいわな。

127:山崎渉
03/01/15 11:31 m6zO97qQ
(^^)

128:ドライバー
03/01/15 13:09 I5ofFU+k
いまLynxEMのドライバいじってるんだけど、
マルチディスプレイに成功した人います?

もう何年も放置されてる問題だから無理なのかな…?

129:login:Penguin
03/01/15 18:11 nk4F1IDO
>>128
Windows2000でも放置されてた問題だし
あきらめよう

130:login:Penguin
03/02/05 19:41 YQeAwX++
保守age

131:login:Penguin
03/02/07 19:54 jVRQXDIx
1ms以下のタイミングでポーリングを監視する方法って何かないですか?
やっぱ割り込み使わんと無理?

132:login:Penguin
03/02/07 20:36 0UoE11AV
>>131
HZいじってタイマの周期を1ms以下にすればなんとかなると思うけど。
割り込み使うのが正攻法じゃないかなー。


133:  
03/02/07 21:50 VKdRg4g7
ftpfs きぼんぬ
modprobe ftpfs login=ftp password=hoge@2ch.net host=ftp.ring.gr.jp
とかすんの


134:login:Penguin
03/02/07 22:07 nu9G29ZI
>>133
URLリンク(www.google.co.jp)

# gnutellafsなんてのもあるのか...

135:133
03/02/11 02:29 /akGZqt4
URLリンク(ftpfs.sourceforge.net)
がーん・・・
寝る!

136:login:Penguin
03/02/11 03:04 bsSBCYyf
>>17
> モジュールアンロード
> # rmmod hello.o

正しくは、rmmod hello
気になったんで...

137:login:Penguin
03/02/14 03:21 vgGnuLAo
お馬さんの本にspinlockにぎったままsleepしちゃいかん、
って書いてあるんですがどんな困ったことが起こるのか教えて欲しい
今日この頃…

138:login:Penguin
03/02/16 03:44 tbT/WrCe
>>137
スピンしっぱなしになる

ちなみに超電磁スピンはこれの応用

139:login:Penguin
03/02/16 23:53 7J4Y8mCH
>>138
ああ、そっか。てことは攻撃中にspin_unlock()されるとマズー?


140:login:Penguin
03/02/20 22:11 +wCEK+nh
>>137
デッドロックが起きる。
spinlock を獲得したままスリープすると、そのプロセスが目覚めるまで
同じ spinlock を獲得しようとするプロセスがビジーウェイトし続ける。

141:137
03/02/21 03:18 qmT4Thn5
>> 140
どうもです。
自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を
同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを
コールしようとたくらんでました。
DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば
問題ないかなと思ったのですが、間違いですか?
その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで
ブロックするべきでしょうか。

142:login:Penguin
03/02/21 05:38 wCxVa5I1
>>141
だめ。
プロセスAのカーネル内: 獲得 -> sleep
プロセスBのカーネル内: 獲得に失敗してビジーウェイト
なのだけど、カーネル内では、ページフォルトとか明示的にschedule()呼ぶと
かしないとスイッチはおこらないので、単一プロセッサシステムだと絶対死亡。
SMPだとか、2.5のプリエンプションカーネルだと、大丈夫かもね。
終了割込みで起こされる処理なら、sleep と wakeupを使うのが普通じゃない?


143:bluehat
03/02/27 02:47 2xZ0HU3V
デバドラをアクセス(介する?)することで、ファイルを暗号化して保存&
ファイルを複号化して取得、ってな事ってできんのか?
おめーだったらどうやって実現するよ?教えろ!ゴルァ!



144:login:Penguin
03/02/27 03:04 1e6KPqQp
普通loopだろう。

145:bluehat
03/02/28 03:17 5YDI7es3
>>144
却下。普通じゃだめぽ。デバドラで実現しる!

146:login:Penguin
03/02/28 07:13 0bshxi8O
>>145
んー、何をもってデバドラというのかよーわからんが、狭義な,
ハードウェアを制御するドライバのことなら

「オマエラ、おつむ悪すぎなので出直して下さい。」

147:login:Penguin
03/02/28 12:21 oFO1qwF8
>>145
んと、loopは広義のデバドラですよ。メジャー番号7のブロックデバイスです。

148:login:Penguin
03/03/06 14:51 NOJmB8ay
kernel-2.5 でデバドラのインターフェースが大幅に変わるという話を
きいたがおまえら知っているか?


149:login:Penguin
03/03/06 22:23 33Ph63nv
>>148
プリエンプティブカーネルになるってのはどっかで見たが・・・
I/F というと、エントリーポイントの仕様でも変わるのか?
それとも、カーネルがエクスポートするルーチンの仕様変更?

150:login:Penguin
03/03/06 23:24 gj2ir03d
>>148
モジュールまわりの仕様が変わるというのはあるが、
モジュール自体に影響ないはずだし…
構造体とかカーネル側の関数が変更されるのはよくあることだし…

その話の出所はどこよ?


151:148
03/03/07 00:48 2S2Wvrkx
struct file_operations つくって register_chrdrv()するだろ。
そのやりかたが変わるとか聞いたんだが。


152:login:Penguin
03/03/07 04:37 2ohbwA9F
>>151
(゚∀゚)んなこたーない

153:148
03/03/07 13:38 2S2Wvrkx
>>152
安心したよ
>>149
カーネルプリエンプションに関しては大問題だ。
ドライバかなり書き直さなくてはいかんのぉ。


154:login:Penguin
03/03/08 00:05 l6jbsomd
2.5のソース読んでからまた来い

155:login:Penguin
03/03/08 00:53 dd9ui0La
>>153
その様子では 2.5のカーネルプリエンプションを理解するのが先です。
名前から想像するものとはちょっと違うものです。

156:login:Penguin
03/03/17 00:55 POpqK4+0
デバイスドライバを書いてる人って 日本に何人いるんだろう
hello.o くらいだったら1万人くらいいるのかな?

157:login:Penguin
03/03/21 01:19 4f4NMJji
3000人くらい

158:LINUX初心者
03/03/22 00:33 c2EgVY2O
 ご質問があります。

 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:15 j2wJcuTQ
>158

URLリンク(www.linuxvideo.org)
ここを読んだだけだけど、、、
DVDでioctlを使うには、カーネルで、それようの設定をして
コンパイルが必要みたい?

160:login:Penguin
03/04/13 20:50 Z3+MYXr2
USBドライバの開発の参考って何かないですか?

161:あぼーん
03/04/13 20:51 fhD9Fsc5
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
URLリンク(saitama.gasuki.com)

162:login:Penguin
03/04/13 22:03 Z3+MYXr2
kill -9 161

163:login:Penguin
03/04/13 22:08 ecu8jjet
>>160
定番は、似たようなのを見る だろ。なお、クラス(ってかベンダ)ドライバな
ら、一番簡単なのは、scanner.c 。バグありだけどね。



164:login:Penguin
03/04/13 22:16 Z3+MYXr2
>>163
ありがとうございます。

ところで、カーネルに組み込まれているデバイスドライバのソースをモジュール化するのに定番の手法とかって
ないでしょうか?

カーネルがROM化されているので、モジュールにする必要があるもので。

165:login:Penguin
03/04/13 22:25 ecu8jjet
>>164
手法って、なにも特別なことはないとおもうんだけど...

make modules 以外でコンパイルするっていみ? それなら -DMODULE がみそ。
カーネル関連のソース内部でも、ドライバでも、これを ifdef とかで見る。

それともmodule対応じゃないドライバを対応に書き直す方法? こっちなら、
適当な初期化/後かたづけ処理を module_init()とmodule_exit()で登録すればいい。




166:login:Penguin
03/04/13 22:33 Z3+MYXr2
>>165
>module対応じゃないドライバを対応に書き直す方法
こちらの方です。ありがとうございます。意外と簡単なんですね。
早速、明日試してみます。

デスクトップで動いているドライバを組み込みLinuxに移植しようとしてるんですが、
ドライバを作るのははじめてなので、馬本で勉強してます。まだ2章目ですが


167:開発メモ
03/04/14 14:29 Y6l/xCVk
Warning: loading module.o will taint the kernel: no license

がでたときは、
#include <linux/module.h>

MODULE_LICENSE("GPL");


printk の出力はdmesgで見ることができる。

168:login:Penguin
03/04/14 22:12 ktmIntrh
>>160
こんなんが参考になるかも・・・
URLリンク(www-online.kek.jp)


>>167
> printk の出力はdmesgで見ることができる。

cat /proc/kmsg
としても見れます。

カーネルバッファにメッセージが追加される度にコンソールに表示されます。
でも表示内容の文頭に <4> というようなログレベルが付いてまうけど・・・

169:login:Penguin
03/04/16 10:03 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

というメッセージがでます。
カーネルのバージョン管理だと小間生のですが、カーネルの再構築をせずにすり抜ける
ことは不可能でしょうか?


170:山崎渉
03/04/17 11:54 KRn99/cy
(^^)

171:login:Penguin
03/04/18 01:19 HcWYqirI
>>169
>>167 ?

172:山崎渉
03/04/20 06:14 xFRXxEWb
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

173:login:Penguin
03/04/21 11:26 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

174:login:Penguin
03/04/21 11:35 TzNUZhnB
>>173
カーネルのバージョンとtest.cがわからないとちゃんと答えられない


175:login:Penguin
03/04/21 11:37 65INoG+s
>>173
find ライブラリのありそうなパス -exec grep -l "remap_page_range" {} \;
とかやってみるとか?


176:login:Penguin
03/04/21 12:03 UyUiMYQq
>>173
MODVERSIONSでせう。
test.cコンパイルするときに-DMODVERSIONSつけてみ。
当然includeはカーネルと同じものを使うこと。


177:173
03/04/21 12:48 dxqbEfvS
カーネルは、2.4.20 です。

ソースはこれです。usbカメラのドライバです。
URLリンク(www.smcc.demon.nl)

このソースの *.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カメラを使えるようにしようと思ったのですが・・・

ちなみに、同じソースをカーネルに組みこめば動作するのは確認しました。


178:login:Penguin
03/04/21 19:06 UyUiMYQq
>>177
そのカーネルの.configは?
CONFIG_MODVERSIONS=nのときに-DMODVERSIONS付けても同じ事になったような気がするが。


179:うまうま
03/04/22 01:26 0SpJ1zOH
>>177
お馬さん本2巻目の
「11.3.1 モジュールでバージョンサポートを使う」
「11.3.2 バージョン付きシンボルのエクスポート」
あたりをみたらどうよ? サンプルコードもあったよ
健闘を祈る!

180:177
03/04/23 19:22 TY1i8cop
みなさん、ありがとうございます。

--static を外したら、うまく出来ました。

>>178
組込みのLinuxなんですが、開発元がソースをよこしてくれないので不明です。
GPL的にいいのだろうか・・・

181:login:Penguin
03/04/23 21:19 DUkd9IIg
linkあげ
・カーネル2.6のドライバ・モデル
URLリンク(japan.linux.com)

182:login:Penguin
03/04/24 12:36 LW5TaSjX
Linux で USB制御とかを学ぶのに便利な電子工作キットのおすすめってありません?

できるだけ安いの。

183:うまうま
03/04/25 12:03 HCQr+NWK
>>182
モルフィー企画のUSBキットはいかが?
URLリンク(www.morphyplanning.co.jp)

確かLinuxドライバを開発しているサイトがあった気がする。

184:bloom
03/04/25 12:26 1KQi+Ees
URLリンク(homepage.mac.com)

185:login:Penguin
03/05/02 11:48 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はどこからとってくればいいのでしょうか?

186:login:Penguin
03/05/02 12:21 5kcklCyp
>>183
モルフィー企画は、5/1 千葉地裁に破産申し立てを行った模様。
やっと終わったようですね、夢が・・・


187:login:Penguin
03/05/02 13:17 8SKdq5Sf
>>185
それはモジュールの初期化に失敗した時のメッセージでつ。
だまされないように。


188:login:Penguin
03/05/02 14:02 fxkN+fN8
>>185
それは、init_moduleがretun 0;以外で終了した場合のメッセージですよ。
普通、デバイスが見付からないときは -ENODEVとかでかえすでしょ?
返り値を確認汁。

ISAのデバイスでは、IOとかIRQの設定が違うと見付からないことが多いので、
insmodが、ヒントのために、IOとかIRQはどうよ? って書くことになってるだけ。


189:185
03/05/02 14:12 LZsBxbHZ
>>187
>>188
ありがとうございます。
probe の処理のところへ devfs 関係の処理を移したらinsmod できるようになりました。


190:login:Penguin
03/05/02 14:25 fxkN+fN8
あぁ、すまん。よく読まずに答えた。USBなのね。
USBの場合は、usb_driver.probe() が NULL で帰った時がそのエラーですね。
で、probeのところでdevfs関係やるので正解です。


191:login:Penguin
03/05/02 15:56 gUkzFRNW
モニタのドライバディスクっていうのはあるんでしょうか?
当方モニタを認識できないのですが・・・。

192:login:Penguin
03/05/02 17:25 MBGKHtnA
>>191
周波数や解像度を設定すれば済むだろ。

193:185
03/05/02 18:18 LZsBxbHZ
>>190
insmod はできるようになったのですが、devfs関係の処理がうまくいきません。

devfs_mk_dir と devfs_register がNULL しか返さないのですが・・・



194:login:Penguin
03/05/02 18:33 ntJpWIhT
>>193
カーネルがまずい

195:185
03/05/02 19:13 LZsBxbHZ
>>194
了解っす。さっそく、カーネルを再コンパイルします。

196:ドライバ初心者
03/05/07 14:44 8SxzL6UK
ううう、USB器機との通信方法がよくわからん。

0x07 を送ると 0x1f を返すというUSB器機との通信でどうやるの?

キャラクタデバイス作って、それをread, write するでいいの?

197:bloom
03/05/07 15:13 dAUH81mE
URLリンク(homepage.mac.com)

198:login:Penguin
03/05/07 18:18 xHs+a1Ja
>>196
??? どのレベルでわからないんだろう。ユーザアプリから機器を操作するのは、
すべからくデバイスドライバを通してopen/close/read/write/ioctl 等です。

でも、0x07 を送ると 0x1fを返すとうUSB機器なら、デバドラいらないじゃん。っ
ていうか、機器もいらないじゃん。「0x07を送ると0x1fを返す」ダミーの関数
かませればいいじゃん。たぶん、その質問はなにか省略しすぎで返事がしにくい。


199:ドライバ初心者
03/05/07 23:02 Sh0BeBWS
>>198
分かりにくくてすいません。

USB機器に、データ確認コマンド(0x07のバイト列)を送る。
USB機器にデータがあるなら、(0x01)が返ってくる。
(0x01)が返ってきたのを確認したら、データ取得コマンド(0x0a)を送る。
USB機器からデータ(20バイト)が返ってくる。

上記の仕様で、USB機器にバイト列を送ったり、USB機器が返すバイト列を受け取るにはどうすればいいのかが分からないのです。
urb構造体を使うのでしょうか?

200:login:Penguin
03/05/07 23:47 ppjtoJvG
>>199
USBのドライバは書いた事ないのでアドバイス出来んが、
URLリンク(www.narimatsu.net)
にあるドライバが多分近いので、読んで見ると参考になるかも。


201:login:Penguin
03/05/08 02:33 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あたりでのリソースの解放順序にバグがあるので、気を
つけてね。




202:ドライバ初心者
03/05/08 18:46 01Q6DwzH
>>200
>>201
アドバイスありがとうございます。 非常に助かりました。

とりあえず、morphy と scanner の両方をコンパイルして試してみました。
morphy の方は、何とかデバイスをopenできるように改造できました。
scannerの方は。 カーネルがdevfsを使えないのと、今回のUSB器機からendpoint の取得がうまくできないようです。

/dev/usb のスペシャルファイルの取得はmorphy を参考に、read write はscanner を参考に、 ハンドシェイクは >>201 の方法でやってみます。



203:ドライバ初心者
03/05/09 19:55 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, のどれかの値が入るようなのですが・・・

204:login:Penguin
03/05/09 23:43 ZjYTJvxM
>>203
相手側の仕様にあわせてください。
仕様書ぐらいあるよね?


205:ドライバ初心者
03/05/10 00:57 5c13M/Uv
>>204
それが、>>201 に書いたようなコマンドのやりとりのはしご図しかありません。

206:login:Penguin
03/05/10 18:30 +67eyGUg
>>205
たぶん、1にかいて、2を読むんだとおもうけど、そんな状態でコーディングを
すすめちゃだめです。仕様書をもらって、それをもとに設計してから書くの。


207:うまうま
03/05/11 02:10 sP9foAmw
>>203
ひょっとして未公開プロトコルをハックしてlinux用にドライバ
作ってんの?

lsusbの表示について
デバイスからデータを読むためのエンドポイントは IN になって
いるはずだよ。そのようなエンドポイントがひとつしかないなら
その番号でOKだと思う。
逆に、デバイスへデータを書き込むためのエンドポイントは OUT

そのターゲットデバイスにはエンドポイントが複数あるっぽいけど、
それだったらコマンドやりとり時、どのエンドポイントが使われて
いるのか調べる必要がある。

208:206
03/05/11 02:28 +b1ggx7/
あう。よく読まず1,2を逆にかいてしまいました。つことで>>206に惑わされないで2がOUTね。>>205




209:ドライバ初心者
03/05/12 22:03 fBjjjcco
>>206
組み込み用のLinuxにUSB機器をつなげてアレコレしようという計画がありまして。
ところが、社内でC言語の経験があるのは私だけ。とりあえず研究開発名目で、USBドライバを
作ってみろと白羽の矢が立ちました。

うまうまさんのアドバイスでwriteができるようになりました。ありがとうございました。
あとはreadだけです。

210:ドライバ初心者
03/05/15 18:21 QUGfuS7s
read するとタイムアップになってしまう・・・。何が悪いのでしょうか。

キューのクリアとか必要ですか?



211:login:Penguin
03/05/16 16:21 yZKduc9i
初歩的な質問ですみませんが、導師のみなさま、お導きを。

write()されたデータを一時的に保持して、次のread()で保持した値を返す
ようなキャラクタデバドラがあるとします。

アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが
上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。

これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を
実現するにはどのように実装すればいいのでしょうか?




212:login:Penguin
03/05/16 16:44 0mzALYCZ
>>211
プロセス別にキューを持てばいいんでは?
openされたら新しいキューを割り当てて、
closeされたら開放。


213:211
03/05/16 18:32 g3wElzO+
>>212
では、同一プロセスの複数スレッドまで考慮しなければならない場合、
どうすればいいのでしょうか?

214:212
03/05/16 19:18 0mzALYCZ
>>213
スレッドじゃなくても、二つ以上開いたら破綻しますな。
→お手軽コース:1回だけオープンできるようにする。
→まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな?
というところで。


215:うまうま
03/05/17 03:23 WAKxeCTB
>>210
readしたとき、とりあえず何バイトか読み出してる?
デバイスが返しうるバイト数よりも多く読み出そうとして待ち
続けているという可能性はない?

216:ドライバ初心者
03/05/18 01:04 2usiGwhL
>>215
>readしたとき、とりあえず何バイトか読み出してる?
その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました!
今はハードが手元に無いので月曜日に試してみます。ありがとうございました。

217:動画直リン
03/05/18 01:11 pMLvChGr
URLリンク(homepage.mac.com)

218:login:Penguin
03/05/18 21:07 sDNMC/v5
猿でもわかるように書かれたデバドラ作成解説ページってある?

219:ドライバ初心者
03/05/19 19:00 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
URLリンク(www.atomised.org)


220:login:Penguin
03/05/19 19:13 Q6lDTR8l
>>218
デバドラの前に、まずはRFC2795から行ってみよう。

221:login:Penguin
03/05/19 22:53 808Vam9H
>>220
英語読むのめんどくせ
猿にハムレット歌わせるんだっけ?

222:ドライバ初心者
03/05/20 18:31 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



223:山崎渉
03/05/22 01:55 p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

224:ドライバ初心者
03/05/22 16:32 7jvNN9yz
>>222
仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。

URLリンク(north.hokkai.net)
ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ
りがとうございました。

225:login:Penguin
03/05/27 12:06 VgmJadOg
あまりにも便利なので上げさせてください

226:login:Penguin
03/05/28 14:11 2En7vxAz
insmod するとこんなエラーが出てきたのですがどうすればいいでしょう?

couldn't find the kernel version the module was compiled for



227:山崎渉
03/05/28 16:42 3t6i6zxR
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

228:login:Penguin
03/05/28 16:55 3qAfQe3K
>>226
そのドライバを今のカーネルでコンパイルし直してください。
もしくは -f オプションで insmod してください。なんちって

229:login:Penguin
03/05/28 23:40 z1beycbb
>>226
なにをいれた? 「実はモジュールじゃない」ってときもそれ。

230:226
03/05/29 18:33 FeUqO3hy
>>228
>>229
MIPS で動いているLinux に、Redhat7.2 のUSBデバイスドライバです。

ソースのコンパイルはちゃんと通るのですが。
あと、Hello World を出力するだけのデバドラの動作は確認済。

231:login:Penguin
03/05/29 21:59 5gpS9IGq
>>230
archがあってないとか。

$ file vmlinux
$ file そのモジュール
の結果を見てみたい所ですね。


232:226
03/05/30 10:13 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



233:login:Penguin
03/05/31 15:40 pCrUKetP
>>232
あってるねえ。謎だなあ。
init_moduleがエラーを返してるって事はないよね?


234:226
03/06/02 11:33 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 はどこのライブラリにあるのでしょうか?

235:login:Penguin
03/06/03 01:50 iocW6lsY
>>234
そんな関数見たことないなー。
別なモジュールに依存してるとかないの?
カーネル絡みはlibgcc以外のライブラリ使わないよ。


236:コピペ
03/06/03 13:33 9FZ3sCry
(゚∀゚) ?
Insmod が _gp_disp シンボルが未定義だと文句を言います

(゚∀゚) !
_gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。
このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。
この場合の問題の要点は、カーネル作成時の Makefile のオプションと、
カーネルモジュール作成時のオプションは同じにすべきだということです。
特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。

237:login:Penguin
03/06/03 13:34 9FZ3sCry
まあなんか知らんけどgoogleって便利ってのはわかった
意味まではわかんないけど

238:login:Penguin
03/06/03 14:40 iocW6lsY
>>236
へぇ、MIPSのPICは変わっていると聞いたことがあるが…
そんな事もやってるのか。
ひとつ賢くなったような気がする。


239:()
03/06/03 18:52 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です。

240:login:Penguin
03/06/04 10:07 RzUG7kJc
デバドラ開発超初心者です。
誰か教えてちょーだい!!

カーネルモジュールでぬるぽ等による例外が起きてoopsが出た後って
リブートしなくちゃいけないの?
rmmodするとリソースbusyと言われて出来ないし。
簡単にやり直せる方法はないのでしょうか?
kdbとかを使うと出来るのでしょうか?
小さなドライバなので出来ればprintkだけでデバッグ
済ませてしまいたいです。

241:login:Penguin
03/06/04 15:22 miGkoc0u
>>240
su して、
reboot

これが最速。

242:login:Penguin
03/06/04 15:58 YRPx8Qpb
>>240
MOD_INC_USE_COUNTしなければ、rmmodできるはず。
Oops食らったまま動かし続けるのは気持ち悪すぎるが。


243:240
03/06/04 18:14 RzUG7kJc
>>241 >>242さん、ありがとうございます。
MOD_INC_USE_COUNT、MOD_DEC_USE_COUNTを空に
再定義してみました、単純なミスとかで他のメモリ
領域に影響なさそうであれば、これで切り抜けよう
と思います。
危なそうな場合は、やっぱりrebootですね。

244:うまうま
03/06/04 23:56 yoK8ZXbv
>>239
ドライバの移植?なかなかおもしろそうだね

read, writeのコマンドシーケンスは合ってる?
ひょっとして、readする前にデバイスに対し的確なコマンドを
writeしてあげないといけないのでは?

そのsnifferログは、OSから8バイトのデータをデバイスに送っている
点や、URB番号が若い点からして、USBデバイスからディスクリプタを
読み出そうとしているところと見た。それはWindowsでもLinuxでもデバイスを
繋いだらUSBホスト側が自動的に行う部分。いわゆる初期化処理。
今回のreadできない問題に関係あるとは思えないな。


245:239
03/06/09 11:05 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


246:239
03/06/10 11:06 3w0EVlGb
URLリンク(www.xlsoft.com)
ここにある、winDrive の体験版でハードを調査したところ、インターフェースが活性化されていないのが原因のようです。

usb_set_interface() を使えばいいのだろうけど、パラメータがよくわからない。

247:login:Penguin
03/06/13 16:03 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
のデバイスを活性化するにはどうすればいいのでしょうか?

248:247
03/06/13 18:44 pewsS0ej
ここを読んだら自己解決しますた。

USB通信プログラミングテクニック
URLリンク(www.picfun.com)

249:うまうま
03/06/13 22:20 EYuB3skO
>>248
こりゃ使えるサイトだ。日本語でUSBの仕様をここまで説明したサイトって、
他にはないよきっと

>>247に質問!
「活性化」というのがよくわからないから教えてほしい。

cat /proc/bus/usb/devices で >>247のような表示がされたってことは、
すべてのPIPEがオープンされているものと思ったけど。
結局、このデバイスにはInterfaceが二つあって、USBバス上に
接続したときは Interface 0しか初期化されなかった。その状態で
Interface 1のEndpoint 0x81からread()しようとしたが、
まだPIPEがオープンされてないためできなかったということ?


250:login:Penguin
03/06/14 17:46 G+Mtao/F
オイラGPLライセンスだよ~
と表明するときに書くマクロって
どういうやつだっけ?

251:login:Penguin
03/06/14 18:11 1HDS5RSe
MODULE_LICENSE("GPL"); のことかにゃ。

252:login:Penguin
03/06/14 18:13 G+Mtao/F
>>251
(゚∀゚)サンクスコ

253:247
03/06/16 12:53 bzsTHCID
>>249
そのとおりです。

えーと、いま作成中のドライバを試してみたら解決していませんでした。
Interface 1の初期化ってどうやるのでしょう?

254:247
03/06/16 17:13 bzsTHCID
追記:cat /proc/bus/usb/devices の表示は >>247 なのですが、なぜかread
が出来ないのです。writeは出来るのですが

255:
03/06/19 18:39 L1S32rBn
質問です。USB のpipe を reset するにはどうすればいいのでしょうか?

256:中年ハード屋
03/06/20 00:46 GdrpjdbN
 DVDのCSS回路を設計するために、そのCSSの方法を理解するために、
LINUXのide-cdを利用したソフトを書いています。(ライセンス済みです)
それで、DVDのディスクキーや内部情報、そして、認証などは出来るのですが、
タイトルキーの取得が出来なくて困っています。

 atapiを通したイトルキーの取得で何かしらのトリックがあるのでしょうか?

 このようなソフトを書く場合に、通常のアプリソフトのように(いまの
やりかた)書けば動作するのですか、それともドライバーソフトのように
特殊な方法が必要なのでしょうか?

 よろしくお願いします

257:login:Penguin
03/06/20 12:05 w5824KTx


258:login:Penguin
03/07/02 02:02 VujfXoME
(・∀・)renice!

259:login:Penguin
03/07/06 23:29 lEtq+gmE
(・∀・)renice!

260:login:Penguin
03/07/08 15:11 nDf4bQ70
(・∀・)renice!

261:linuxer
03/07/09 01:17 W4/RwfEH
僕はLinux のethernet のドライバを改造したいデス
ふつは通信用途に最適化されてると効きました
それはぺケットをみる目的につかいます
なにかアイディアはありますか??

262:login:Penguin
03/07/09 01:22 9Ead9bym
tcpdump等の既存のものより詳細にみれなければ意味がない気がするけど大丈
夫なのかしら。


263:_
03/07/09 01:29 RRaEUYou
URLリンク(homepage.mac.com)

264:login:Penguin
03/07/09 01:48 FD/eKW7A
>>262
石にもよるでしょうねえ。
最近の利口な奴はいろいろ手を入れてくれるし。


265:login:Penguin
03/07/09 13:47 GtKhiIZ8
>>261
現行ドライバだと、どの点が不満なのか言ってもらわないと助言しようがないよ
パケットモニタリングはNICチップのpromiscuousモードの仕様に依存する話だ

266:login:Penguin
03/07/10 07:33 sMbuqqa1
>>265
現行のドライバならpromiscuousモードで動かしたときに
パフォーマンスがわるいな感じです
それでぺケットを取りこぼすことになってしまうので
キャプチャ用途に最適化できたらいいなと考えましたです

267:login:Penguin
03/07/10 07:41 oOmBMqv3
>>266
promiscuousモードだと全パケットをホストPCに転送するから
通常モードに比べて取りこぼす可能性は増える。対象のNICチップは何?
素直にintelなり3comを買えば済むだけの話かもよ。

ちなみにリアルテック(蟹)の性能がよくないのは特許を避けてるから。
現状でいいパフォーマンスのNICが欲しけりゃIntel(or元DEC)、3comの
ちょっと値が張るNICを買うしかないよ。

ドライバでどうこうできる話ではない

268:login:Penguin
03/07/10 23:13 TravPTn9
>>267
リアルテクです。3COMも使ってますが、スイッチと相性が悪いな感じで
無反応になってしまう(壊れているのかもしれない)こともありますで
リアルテクでペルフォマンスがよくならないかなと想いました
ちなみに特許って具体的にはどんな特許ですか?

269:login:Penguin
03/07/10 23:46 bBVT4pXs
>>268
261と268で目的が変化してるぞ。

270:login:Penguin
03/07/11 13:32 CtoBVZIQ
>>268
そもそもパケットモニタリングするのにスイッチングハブを使ってる時点でアウト
リピータハブ(ダムハプ)を使わないと他ホストの通信は傍受できないよ

結論
・RealtekのNICは捨てて、Intelか3Comを使え
・スイッチングハブではなく、リピータハブを使え

全然デバドラと関係ないや スレ違いどころか板違い?

271:login:Penguin
03/07/13 22:55 UrPfG9sV
>>267
>promiscuousモードだと全パケットをホストPCに転送するから
違うよ。promiscuousモードって言うのは、リンク層で受信したデータが
自ホストの物理アドレスでなくても受信すること。
>>270が正しい事を言っている。

272:login:Penguin
03/07/14 02:37 imGWjqw6
age

273:267=270
03/07/14 15:12 E/Ns9e+C
>>271
すまん 267=270 なのだが 何か矛盾したこと言ったかな?

MAC層(データリンク層)の処理はNICチップで行われる。
ホストPCはMAC層の処理にはまったく関与しない。
MAC層の処理後、必要なデータだけPCIバスを介してホストPCにDMA転送する。

つまり、通常モードだと自ホスト宛かブロードキャストのパケットデータだけを
ホストPCに転送すればいいのに対し、promiscuousモードだとすべての
パケットデータを転送しなくてはならず、転送量が膨大になる。
そのため、バッファがあふれる(=データを取りこぼす)ことになりやすい。

274:268
03/07/15 03:30 Yac3cQfq
スイッチはL3スイッチでポトミラリング機能がありますよ

ただ3COMのNICでも限界があるとですがぎりぎりまでぺケットの
モニタ用に最適化したいと思いましたです
リアルテクの話は忘れてください ふつはバッファも通信用に
チュニングすれて確保してると思ったけどぺケットをモニタするときは
受け取るだけだから ドライバで受信用のバッファを多めに
できたらいいなと思ったよ でもどうやったらいいか分らないよ
ヘルプしてください





275:山崎 渉
03/07/15 11:17 2JhhXBQM

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

276:login:Penguin
03/07/15 12:07 Fo16Kpwc
(・∀・)renice!

277:login:Penguin
03/07/22 11:30 6WQ9WMDa
(・∀・)renice!

278:login:Penguin
03/07/25 12:52 NH3LXVfX
(・∀・)renice!

279:login:Penguin
03/07/30 12:07 cPdgkLk2
(・∀・)renice!

280:ぼるじょあ ◆yBEncckFOU
03/08/02 05:04 GfRe8vK7
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎―――◎                      山崎渉&ぼるじょあ

281:login:Penguin
03/08/02 10:27 2rmp9gin
(・∀・)renice!

282:login:Penguin
03/08/08 11:54 mg5o8ebS
(・∀・)renice!

283:login:Penguin
03/08/13 12:30 pfCYHBFY
(・∀・)renice!

284:login:Penguin
03/08/14 22:31 EZZe4dzO
$> cd /pub
$> more beer


285:login:Penguin
03/08/14 22:44 EZZe4dzO
$> man woman
$> Segmentaion fault (core dumped)


286:山崎 渉
03/08/15 22:51 dil3w4kp
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

287:login:Penguin
03/08/15 23:47 GfNK1qbf
(・∀・)renice!

288:login:Penguin
03/08/16 15:04 rNtMNMvg
(・∀・)renice!

289:login:Penguin
03/08/25 09:46 +hXUD3jL
(・∀・)renice!

290:login:Penguin
03/09/02 21:16 1mo12GKS
insmod xxx.oってことはドライバのソースはどんなに大きくてもxxx.cの1っこだけじゃないとだめなの?

291:login:Penguin
03/09/02 21:20 88sqYoXe
>>1は、ママンでもファックしてろや!hahahahahahaaaaaaaaaaaaaa!

292:login:Penguin
03/09/02 22:18 qo69XMHR
>>290
完全なるカーネルモジュールにヘッダやリンカはいらない。
ソースは常にひとつ。

293:login:Penguin
03/09/03 08:04 CuYcG2U3
>>290
Cファイルをインクルードすればいいだろ。

294:login:Penguin
03/09/03 11:30 4cm8kGPF
>>293
よりによって一番最悪な答えですね先生

295:login:Penguin
03/09/03 16:47 iWz7WMbL
>>290
info ld
-rの説明読め。


296:login:Penguin
04/01/07 22:36 ui3n7e6w
だいぶ下がってますが、
2.6 と 2.4 のドライバ記述って何か変りました?
2.6 まだインストしてないので報告キボンヌ・・・
2.2 -> 2.4 程は変ってないのかなー?

297:login:Penguin
04/01/16 18:02 ZUOtu/O9
PCIのデバイスドライバを作成していますが、
全くできません。
less /proc/iomemで書かれているアドレスで
read、write関数を使って書いたり、読んだりしてもだめです。
何がいけないんでしょうか?


298:login:Penguin
04/01/16 19:15 JS8EwlnL
とりあえず、lspci -vvv を晒してみたらどうでしょう。
もちろんデバイス指定でね。
それを見て私が答えられるかどうかはまた別の話ですけど。


299:login:Penguin
04/01/16 19:52 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]

300:298
04/01/16 20:57 JS8EwlnL
FPGAですね。

私もそんなに知っているわけではないので、
あまりあてにはしないで欲しいのですけれど…
lspciの結果は特に変なところは無いと思います。
Class ff00はどのクラスにも属さないと言うことだと思うのでちょっと気にはなりますが、
読み書きぐらいはできるでしょうね、きっと。

だとすると、あとはドライバのソースでチョンボがあるか
FPGAの中で書きこみ禁止になっているとかですかね。
FPGAにどんなipが載っているのか分からないので、あくまで推測ですけど。

あんまり力になれなくてごめんね。


301:login:Penguin
04/01/18 02:27 +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決め打ちだけど。

302:login:Penguin
04/01/18 02:28 +zT3hNOG
>>299のマチガイだ。

303:login:Penguin
04/01/19 07:32 kPFQP2Tn
PCIバスアナライザで観測しながらアクセスしてみそ

304:login:Penguin
04/01/22 14:27 O8v9hJ5s
>>303

持っているならいい方法だけどね。
買おうとすると激しく高い。
レンタルでも中古でも激しく高い。

でも、欲しいね。

305:login:Penguin
04/01/28 10:42 N5b+GE5n
マジレスすれば
ロジアナでPCIバスを観測するか、PCIバスアナライザを使うか
どっちかしないと、PCIデバイス/ドライバの開発は無理だろう

306:login:Penguin
04/01/28 12:46 OnT2yC/X
んなこたーない!
297 が FPGA開発を同時にやってるならまだしも・・・
あったほうが楽なのは確かだが、無理ではない。

ハード屋さんはバスレベルで確認して提出するはず。
read/write 出来ないのはドライバの不具合。

>>297 は pci_find_device 関数など、基本から勉強したほうがよさそう。

307:305
04/01/28 15:27 N5b+GE5n
無理ではないって言っても、そんなマゾプレイみたいなコトしたくないよ
目隠しして半田付けしろっていうのに近いな

PCIのロジックって複雑だから、実機でバグが露呈するのはよくあること
430FXで動いたからって 875Pでは動かないとか余裕であるよ
市場に流通してるチップセットすべてで確認しないと市販は無理

名の通った枯れてるチップならまだしも、実機の動作チェックもしてない
FPGAの回路をつかったPCIカードなら、最初から疑ってかからなきゃダメだと思います

> ハード屋さんはバスレベルで確認して提出するはず。

PCIバスの全パターンをシミュレーションできる検証ツールってすごく高いよ
特にFPGAの開発のために検証環境買うのはコストにあわない
PCIバスアナライザがある環境で実機試験して、少しずつ直すほうが早くて安い

308:login:Penguin
04/01/28 18:36 XM3JMqvR
>>307
そーゆーのはハード屋さんの仕事じゃないかと。
PCIブリッジの違いで動かないなんてのは設定云々じゃない限りドライバじゃ直せん。


309:login:Penguin
04/01/28 19:09 ceOaOw14
> そーゆーのはハード屋さんの仕事じゃないかと。

おれもそう思う。
でも、実際はソフト組み込んだらなんかおかしくて、
実は結局、微妙にハードが悪かったなんて事は良くある話だね。
きっと >>305 は苦い思いをしたんだろうよ。

310:login:Penguin
04/01/29 18:47 ci1wDtTm
>実は結局、微妙にハードが悪かったなんて事は良くある話だね。
ハード絡みやってりゃ必ずあるね。
慣れてくればハード、ソフトどっちが悪いか何となくわかるようになるけど。
制御チップ動かす時なんかはオシロ、ロジアナの出番が増える。

さすがに PCI制御用FPGAまで計測器突っ込んだ亊はないけどね・・・
そこまで行くと スレ違いですね >> 307

311:307
04/01/30 07:19 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用のドライバ書いておけば後が楽になるからね。

スレ違いだったかな
駄文失礼

312:login:Penguin
04/02/03 23:12 j9rA+N1w
>駄文失礼

気にしなくていいぜ。(w

313:login:Penguin
04/02/09 07:11 7h6uvjnn
すいません、どうしようもない質問なんですが、
実験的にカーネルパニックを発生させるドライバを作るのには
どうすればよいでしょうか?
カーネル関数panic()を使っても
ハングするだけでパニックしないんです。。。
どうか教えてください。

314:login:Penguin
04/02/09 20:13 oe9mNV77
このスレは俺に勇気をくれた。

315:login:Penguin
04/02/10 00:02 0xm4A1oM
>>313
コンソールに"Kernel panic: …"って出てないの?


316:login:Penguin
04/02/10 00:52 4iNUE3rF
>>313->panic();


317:login:Penguin
04/02/10 21:13 WwFCucZO
>>315-316
返信ありがとうございます!
単純にパニックするよりoops画面が表示するようにしたいのです。
mmapあたりをいじくるドライバを作れば、
oops画面を表示させることは可能ですか?

318:殴られそうだが
04/02/10 23:35 0xm4A1oM
>>317
試してないけど、
*(unsigned long)0 = 0;
とか。


319:login:Penguin
04/02/11 00:21 QfDGoor4
>>318
似たようなので、
x=0;
x=x/x;
ってのをやってみたのですがダメですた。
やっぱLinuxって頑強だと思いますた。
mmapも見てみたらカーネル空間でなく補助記憶空間に
マップするだけのようですし・・・
アドレス例外でoopsできるような方法とかあるのですかね??

320:login:Penguin
04/02/11 17:17 ViS2X9Xm
Oopsとpanicを混同しているような気がしないでもない。


321:login:Penguin
04/02/12 00:21 9Bh5Rhh+
>>320
すみません。。。
パニックとシステムフォルト(oops)と勘違いしていたようです。。。
ドライバからシステムフォルト(oops)
させるような方法ってあるのでしょうか?

322:login:Penguin
04/02/14 07:34 kX0ZpYOB
linuxはsolarisみたいにクラッシュダンプ取れますか??

323:login:Penguin
04/02/16 00:01 dUYGf/LZ
>>322
URLリンク(lkcd.sourceforge.net)


324:login:Penguin
04/02/19 02:35 tYIYueC9
Linuxでのデバイス・ノード管理は現在
従来の/dev以下のデバイス・ノードファイル、devfs、udevが
存在しているようですが、デバイスドライバを書くような
デバドラ開発者にはこの状態は影響するのでしょうか?


325:login:Penguin
04/02/19 10:34 iwEBqmwA
私は従来の/dev以下のデバイス・ノードファイルを使ってます
devfsに対応するのも簡単だけど優先度低いから先送り

326:login:Penguin
04/02/24 22:37 BGHqYIMS
modpostについて詳しく解説している文書をご存知でしたら教えて下さい。

327:login:Penguin
04/03/17 23:57 P4QfZyWd
データシートをどうやって手に入れるか
それが問題だ

328:login:Penguin
04/03/18 10:56 WBeyRceU
何のデータシート?

329:login:Penguin
04/04/08 16:25 E32BiKCa
mmapについて質問させてください。

メモリデバイスをmmapするとき、ページサイズを4096Byteとした場合、
mmapされたデバイスの先頭からの"物理アドレス"と
mmapしたプロセスのデバイスに割り当てられた"仮想アドレス"の
下位12bit(2^12 = 4096)は一致するのでしょうか?

mmapではプロセスの仮想空間にページサイズ単位で
ファイルやデバイスを割り当てることが出来るわけですよね。
ページサイズが関係してくると言うことはMMUのようなものが
作用して、この割り当てを管理しているのですよね。
(あるいはMMUそのものなんですか?そこが分かってないのですが)

もしも、MMUの管理下にあるならば、実空間と仮想空間のアドレスの
下位12bitは一致するはずです。
MMUはページサイズ以下のアドレスを知らないはずですから。
ここまでは私の理解に間違えはないですよね。

でも、mmapが実際にどんな風に動いているか良く分からないので、
上のような疑問が沸いてしまったのです。
どなたかお分かりいになる方がいましたら教えてください。



330:login:Penguin
04/04/08 17:57 /VjqMrH1
>>329
つ[ mmap.c ]

331:login:Penguin
04/04/09 00:53 E9wQ2At3
いいなこのスレ

332:login:Penguin
04/04/09 00:58 ImS0ZAox
>>330
ha?

333:login:Penguin
04/04/09 00:59 ImS0ZAox
あぁソース嫁ってことかw


334:login:Penguin
04/04/09 14:52 8RpqlllW
>>329
CPU/MMUアーキテクチャに依存する話だね。
IA32に限っていえばその理解でいいと思うよ。
他archでもまずそうなってるだろう。
そうなってないMMUなんて見たことない。


335:login:Penguin
04/04/09 15:39 dsP5+/oo
2次キャッシュを UBS mem に格納して使いたし。可能?

336:login:Penguin
04/04/09 21:34 /keZpBhh
>>335
CPUの2次キャッシュをUSBメモリにやらせるってこと?

337:login:Penguin
04/04/10 01:41 04yJkWho
AGE

338:login:Penguin
04/04/13 23:49 bzoEXS/o
USBのデバイスドライバ作る時のTIPSを教えてください

339:login:Penguin
04/04/14 15:26 XimV19c+
デバイスを破壊出来るデバイスドライバーの作り方教えてください

340:login:Penguin
04/04/14 23:18 QKI6oVKA
>>339
1.どこからかゴルフのドライバーを手に入れる。
2.ドライバーのフェイスにデバイスを貼り付ける(ガムテープでも可)

しかる後にドライバーを振りかぶり、路面、ブロック塀etc.にぶつけること。

341:login:Penguin
04/04/15 10:49 D/fT1Zhi
>>340
( ´д)ヒソ(´д`)ヒソ(д` )

342:login:Penguin
04/04/19 20:10 TjHP8JDs
>>340
( ´д)チョメ(´д`)チョメ(д` )


343:login:Penguin
04/04/27 21:12 ftQXOuAJ
v2.6.x 用の module (.ko) の作り方ってどっかに落ちてませんか?
v2.4.x だと gcc -c するだけで insmod できるイメージができましたが、
v2.6.x だとなんか後工程があるんですよね?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch