dev

curlをもっと使おう、っと

dev

今まで curlは使ってなかったけど vimとの連携が快適なのに気づいたので もっと使っていこう、 という気運が、勝手に高まっている。 カイシャからは hatena.vimも vimtwitter.vimも proxyオプションの -x 使ってみたけど うまくいかなかった>< こーゆーと…

vimtwitter.vimでラクラク書き込み

dev

vimから twitterに書き込みvimスクリプト、ありますねー。 いいっすねー。 ダウンロード http://www.vim.org/scripts/script.php?script_id=2124 最新のスクリプトを取得しました。 script version : 5.0 date : 2008-03-28 Vim version : 7.0 基本設定 runt…

hatena.vim うまくいった!

dev

4月20日のエントリー hatena.vim導入しよう (1) - kei-os2007 against the machine!! で、うまくいかない、って書いていた hatena.vimの件だけど 今日やってみて、うまくいった。 hatena.vimのバージョンとか うまくいかない状況を、もっときちんと記してお…

ChangeLog収集スクリプトにしたよ (i wrote a tiny zsh script to get Linux kernel 2.6.x ChangeLog)

サーバに無駄なアクセスをしない、という zsh連番生成をワンライナで書けない悔しさもあるし 車輪を再発明してるかもしれないけど スクリプト(っていっても、ただのコマンドの羅列)にしました。 #!/bin/zsh CHANGELOG_2_6="http://www.kernel.org/pub/linu…

ChangeLog集めはzsh連番生成 + wgetでキマリ! (to get ChangeLog, it's good to use zsh + wget)

コンパイルが通るはずが通らないときに いちいち調べるのもめんどいなぁ、と思って ChangeLogの形式が決まってるんだから 収集しておいて、自分でインデクシングしてトレースしてけばいい? って思ったので、Linuxカーネルの ChangeLogを 全部取り込むことに…

ChangeLogを集めとこ (Let's get ChangeLog(s)!!)

http://www.kernel.org/pub/linux/kernel/

2.6.0の tty_structには flipがあった (I found flip in tty_struct, Linux kernel 2.6.0.)

Linuxカーネル 2.6.0 の tty_structには、flipメンバがあった。 やっぱ最近消えたのかなぁ...。 I found flip member in tty_struct (tty.h) in Linux kernel 2.6.0 source codes. Was flip member deleted recently...??

Linux Device Drivers, Third Edition

we can obtain "Linux Device Drivers, Third Edition" in PDF format, for free. http://www.oreilly.com/catalog/linuxdrive3/book/index.csp 英語ですが、オライリーのサイトで Linuxデバイスドライバ 第3版を PDFで入手できます。

kernel BUG at include/linux/timer.h:83!

while executing tty-open method, I encountered a kernel BUG message. This message seems to be reported in BUG_ON() in add_timer() function. I should learn about Linux's timer mechanism. If I could not resolve this problem, I would write ab…

tty_struct構造体の flipってどこへ? (where did "flip" in tty_structure go?)

Linuxデバイスドライバ 第3版の TTYドライバサンプルをコンパイルすると tty_struct構造体の flipってメンバはないよ、っておこられる。 TTYドライバ側からユーザ空間にデータをコピーするために使う ピンポンバッファのようなのだけど。 Linuxカーネル 2.6.…

/lib/modules/`uname -r`/build

シンボリックリンクになっていて カーネルソースのディレクトリを指している。 Makefileをワンライナにするなら obj-m := hoge_module.o とだけ書いておいて $ make -C /lib/modules/`uname -r`/build M=`pwd` modules を実行すればよい。

セマフォ

で定義されている。 struct semaphore型の変数を操作する。 セマフォを初期化する void sema_init(struct semaphore *sem, int val); val : セマフォに割り当てる初期値 セマフォを取得する セマフォを取得する関数は、3種類ある。 void down(struct semapho…

カーネル空間とユーザ空間のデータ転送

で定義されている関数を使う。 unsigned long copy_to_user(void __user *to, const void *from, unsigned long count); unsigned long copy_from_user(void *to, const void __user *from, unsigned long count);

read と write

ssize_t read(struct file *filp, char __user *buff, size_t count, loff_t *offp); ssize_t write(struct file *filp, const char __user *buff, size_t count, loff_t *offp); ・引数 filp : ファイルポインタ buff : 書き込むデータを保持しているユーザ…

登録した ttyドライバが制御するデバイスを登録する

void tty_register_device(struct tty_driver *driver, unsigned index, struct device *dev); driverには、登録した ttyドライバのポインタ変数を使う。 index は、デバイスのマイナー番号。 devは、このデバイスが関連づけられる struct deviceへのポイン…

ttyドライバを ttyコアに登録する

次の関数を使って、ttyドライバを ttyコアに登録する。 int tty_register_driver(struct tty_driver *driver);

tty_operations構造体

ttyドライバを操作する関数ポインタの構造体。 struct tty_operations { int (*open)(struct tty_struct * tty, struct file * filp); void (*close)(struct tty_struct * tty, struct file * filp); int (*write)(struct tty_struct * tty, const unsigned …

tty_driverを作成する

次の関数を使って、tty_driverを作成する。 struct tty_driver *alloc_tty_driver(int lines); 引数linesには、このドライバがサポートする ttyデバイス数を指定する。 作成に失敗したら、NULLが返るのでエラー処理すること。

ttyドライバで使う構造体

を使う。 このヘッダファイルで定義されている struct tty_driverがメインの構造体。

シリアルポート固有の情報を確認

root権限でアクセスできるファイル /proc/tty/driver/serial を見る。 # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 1: uart:16550A port:000002F8 irq:3 tx:0 rx:0 CTS|DSR 2: uart:unknown …

ttyドライバのリストを確認

$ cat /proc/tty/drivers /dev/tty /dev/tty 5 0 system:/dev/tty /dev/console /dev/console 5 1 system:console /dev/ptmx /dev/ptmx 5 2 system /dev/vc/0 /dev/vc/0 4 0 system:vtmaster serial /dev/ttyS 4 64-95 serial pty_slave /dev/pts 136 0-1048…

新宿のジュンク堂にいってみた

ほぇー、すごい品揃え!! SICPがあんなに積まれている光景、はじめてみた。 すげぇな、ジュンク堂。なかなか感動した。 で、むかいの紀伊國屋書店で、買いました。 (ってそういうオチか!) ジュンク堂に行く前に入った紀伊國屋で 見つかったので買ったの…

4-6月に重点的にやること

dev

1-3月の棚卸をしたときに書いたと思ったけど 書いてなかったっぽい、4-6月に重点的にやること。 Linuxデバイスドライバ コンパイラの勉強 開発環境の改善 (webブラウザ、スクリプト環境) リアル(デバイス)との接続をしっかりやること。 コンパイラはちょ…

G/Wの作業はリビングで

奥さんと子供が、実家に帰って楽しんでいて (子供は、じぃじ、ばぁばを喜ばせていて 奥さんも、日頃の子育ておつかれさま、ということで ゆっくりしてもらっていたり) 自分は G/W終盤までは、やることがいろいろあるので残っていて その間、リビングを作業…

は からインクルードされていて コマンド番号の設定を助けるマクロを定義している。 たとえば... __IO(type,nr) 引数なしのコマンド用 _IOR(type,nr,datatype) ドライバからのデータ読み出し用 _IOW(type,nr,datatype) データ書き込み用 _IOWR(type,nr,datat…

1000speakersを初めてUst

dev

いまからはじまるのか。わくわく。 http://www.ustream.tv/channel/1000speakers おもしろかった 元薬剤師の方の発表がすごくうまい! BrainF*ck (BF)が流行っていた。 Erlangも動いてた。 ゆとりの人、 RTL書いたら面白いことになりそうだけどなぁ。 Ust配…

G/W突入

休みま〜す、って宣言して G/Wに突入した。 ベストを尽くしている。 悪条件だけど、なんとかドローにもちこんでいる。 ノープロブレム。 先月、自チームで選手交代があったけど よいチームになってきている。休み明けに後悔しないように、自分を律していく。

詳解 Linuxカーネル 第3版

Linuxデバイスドライバの学習を進めていて メモリ操作の仕組みとか、プロセススケジューリングのあたりを しっかりおさえたい、ということで購入。 どんどん進もう。 詳解 Linuxカーネル 第3版作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水…

TTYドライバ

Linuxデバイスドライバ 第3版 最終章がTTYドライバなんだけど あんまり複雑なことをしなくても サックリと試せて、導入にはいいかも、と 朝の通勤電車で読んでみて思った。 実際に動かすのが楽しくて、勉強しやすいし。 仮想デバイスで printk( )を使って 出…

キャラクタ型デバイス

メモ register_chrdev_region() alloc_chrdev_region() unregister_chrdev_region() MKDEV() MAJOR() MINOR() cdev_init() cdev_add() cdev_del() cdev_alloc() デバイス番号の割り当てと解放 ソース (hoge_chrdev.c) とりあえずこんな感じ。 #include <linux/init.h> #inc</linux/init.h>…