Today アクセスカウンター Yesterday アクセスカウンター

ホワット・ア・ワンダフル・ワールド

私は知識に何ものかを付け加え,また他の人々がより多くのものを付け加える手助けをした --- G.H.ハーディ

全記事一覧 << 2008/07 12345678910111213141516171819202122232425262728293031 2008/09 >>

プロフィール

あろは (alohakun)

  • Author:あろは (alohakun)
  • 若槻俊宏 (WAKATSUKI toshihiro)

    連絡先 : alohakun ___at___ gmail.com
    mixi : http://mixi.jp/show_friend.pl?id=182927
    twitter : http://twitter.com/alohakun

    abstract

    プログラミングという人間の知的行為を体系化し,単なる職人芸ではなく,サイエンスにするための研究をしています.

    具体的には,等価変換計算モデルに基づいた,仕様記述からのプログラム合成の研究をしています.

    もっと噛み砕くと,プログラムの正しさをどのように定式化し,どのような枠組みで,どのように変換を進めていけば,正しさを保証したまま,効率的なプログラムを手に入れることができるのか,ということについて研究しています.

    キーワード : equivalent transformation, computation model, programming paradigm, formal specification, program synthesis













    あわせて読みたい


    この日記のはてなブックマーク数


    スカウター : ホワット・ア・ワンダフル・ワールド


    Map









    FC2 BLOG RANKING

FC2カウンター

ブロとも申請フォーム

この人とブロともになる

2ch コピペブログ始めました

2007/11/05(月) 03:36:32

普通になつたんさんとか居るんじゃね ? という疑惑が.なんという良スレ.

ディバイスドライバをハックしよう!

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

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

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

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

46 :login:Penguin:02/02/01 22:46 ID:Pc1hsWFQ
/*
* $Id: joydev.c,v 1.19 2001/01/10 19:49:40 vojtech Exp $
*
* Copyright (c) 1999-2000 Vojtech Pavlik
* Copyright (c) 1999 Colin Van Dyke
*
* Joystick device driver for the input 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よりお伝えします!

47 :login:Penguin:02/02/01 22:52 ID:c8Ppl2p2

#include <asm/io.h> // さぁ、ソースのほうは順調に
#include <asm/system.h> // インクルードが進んでおります。
#include <asm/segment.h> // 本日は、/usr/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> // 来ましたが、stdio.hが無いようですね?
#include <linux/poll.h> //  そういうボケはどうでもいいけど、
#include <linux/init.h> //  「カーネル」って雰囲気は満点だね。
#include <linux/smp_lock.h> // どうやらインクルードも無事終了しました。

48 :login:Penguin:02/02/01 22:53 ID:c8Ppl2p2

// さて、始めは定義の類が続きます
#define JOYDEV_MINOR_BASE 0 // サキサカさん、この_BASEって何でしょうか?
#define JOYDEV_MINORS 32 //  他のinputデバイスとメジャー番号を共有
#define JOYDEV_BUFFER_SIZE 64 //  するための工夫だね
//  でも、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; //複数デバイスが考えられる時の定番ですね
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 ID: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 ID:c8Ppl2p2
げ、ぶち切れてる。鬱死....

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

55 :login:Penguin:02/02/02 00:16 ID: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 ID: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 ID: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でお送りいたしております。
//  まだ続ける気かねぇ

60 :login:Penguin:02/02/03 00:07 ID:zajX165D
ちなみに、元祖モモナイさん達は
http://pc.2ch.net/test/read.cgi/prog/1011188426/201-300
このあたりにいらっしゃいます。
キャラ貸してくれたコメンテータさん、ありがとう!
# つーか事後承諾だったけど...


a- かなりがんばってインデントとか揃えたのに,HTML に変換したらズレまくりだな.2ch コピペブログは大変だね.

それにしても面白い.CodeReading の世界に新風を巻き起こす可能性が生まれつつある現場を見た.

過去ログ倉庫で発見.これの 215-281 が元ネタか.

お前らコメント書いてるか?

219 名前: コメントが 投稿日: 02/01/19 03:49
>>215
各方面からコメントが寄せられています。

これはソフトウェア開発の新次元だ。 Dennis Richie
これほど人を癒すコメントは見た事がない。脱帽だ。 Stallman
これほど意味不明のコメントは見た事が無い。脱力だ。 Bill Gate
驚きだ。こんなおしゃれなソフトウェア開発手法があったとは。 奥村晴彦
おっとどっこい。あっと驚くタメゴロ〜ウ! ハナ肇

220 名前: 仕様書無しさん 投稿日: 02/01/19 06:34
>>215
来週実行しようと思う俺だった。

223 名前: 215 投稿日: 02/01/19 11:06
>>217
今、この技術立国日本に一番必要なのはものは、お笑いである。

なるほど,確かに.これで若い人達の心を掴めば IT 産業も安泰!(嘘)

若い人に人気のない産業は減衰する



52 :CMまで前半:02/02/01 23:46 ID: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 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 M26E3JSLO9#`O-\18TZ]PLT!16$^#A*9UIPJ4F#PGPK,H%5JO)J
MGV@WNIA6V-^.(2KFCM43JQCZ4/(%H`86 MDH1%=5`FDN8.BJZ,<9(R#9"JHQ#Q9-@FDA] MHC$U/L;$)=$`1@MA("$:&1U24`PU>ZD,5?PWSR6A'J+P`*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;. 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?
MT MW M,ZL>3+V%DI'57CLV@]G8OK\_EF0MQY$P/R]6($`$#9S,X9A"]P6,R7>>XO3;
MOK\!N2S:AE#E)-)=?"^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[%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_` M^&"1$C-:Q"F!_4UC%$03&(Y5UHHT(Q1(UAJ,05- M%&PI\#K 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 ID: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 M=8"LVHKVL&.ROZJ^E+9
MV[&]%8K(A0$*+((:KC&@Y//61-0M 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%\-=214/8
M8D1GA+>C 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
UNIX/LinuxTB:1CM:2 このエントリーを含むはてなブックマーク | livedoorクリップ livedoorクリップ BuzzurlにブックマークBuzzurlにブックマーク newsing it!
コメント

さすがぃぬ板、5年以上前に立ったスレがまだ現役だぜ :)
ぃぬ板はあまりチェックしてないので、こういうスレがあるとは知らんかった。
きむら(K) #grGQ8zlQ|2007/11/05(月) 19:23 [ 編集 ]
> きむら さん
linux のデバイスドライバの情報を検索してたら,偶然見つけました (笑) 本当,2ch には埋もれた才能が多すぎです.
ぃぬx 板だからこそ残っていたという運命的な展開.

個人的には,『 「カーネル」って雰囲気は満点だね。』 というコメントがツボでした w
あろは #wNX6xxGw|2007/11/06(火) 02:43 [ 編集 ]
コメントの投稿

管理者にだけ表示を許可する

トラックバック
『[PC]Linuxのカーネルドライバ』
ようやく前の仕事終わって(実際は少し残ってるけど)新しい仕事へ。 今度は今話題の「アレ」関係でLinuxのデバイスドライバとの事なので、あちこち検索しては情報を収集しまくっている。 で、面白かったネタをいくつか。 2chコピペブログ始めました 元は2ch Linux板のディ
憲之助の何かの役に立つかも知れない日記|2008/02/02(土) 18:24

トラックバックURLはこちら
http://alohakun.blog7.fc2.com/tb.php/872-ecf4a345

最近のコメント

リンク

このブログをリンクに追加する

最近のトラックバック

人生の残り日数

日本人男性の平均寿命は 28700日.

RSSフィード

カテゴリー