2008-05-01から1ヶ月間の記事一覧

DELL PCがグレてる件

この前、部屋をかたづけたときに DELLの PCの電源コードをはずしたままにしてたのだけど 今日、起動しようとしたら、全然起動しなくてびっくりした。 しばらく通電してから電源入れたら起動した。 コンデンサが吹っ飛んでないか、とか 片付けのせいで接触不…

セマフォ

で定義されている。 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…

twitter

遅まきながら、twitterにとうろくした。 http://twitter.com/kei_os ケータイをぽちぽちとさわるの、あんまり好きじゃなので PCからしか更新しないと思うけど というか更新するかどうかも怪しいが>< ま、はてダに what am I doing... を表示しとけば 更新…

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

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

新宿ジュンク堂

今日は、滅多に行かない新宿に行くので ジュンク堂に立ち寄ってみよう。

vimスクリプトでBrainF*ck ジャンプ命令

Vim

実装するには、いまのやり方だとダメだな。 やっぱ、磁気ヘッドとテープのモデルにしないと、だ。 いまの実装は s:bufのコピーも無駄だし。 組み込み関数を使ってみる、というのが目的ではあるけど。

vimスクリプトで BrainF*ck - 再実装編

Vim

BFの8命令すべてに対応したよ 昨日のエントリーで不完全だった「ジャンプ命令」というか [ と ] に対応してなかった件、対応してみた。 実装方針も、チューリングな感じにした。かな? vimスクリプトはこんな感じ。 bf.vim という名前で。 $ cat bf.vim " de…

vimスクリプトで BrainF*ck

Vim

言語習得には BrainF*ckだね ということで、vimスクリプトで BrainF*ckをやってみる。 BrainF*ck 言語仕様 まずは BrainF*ck の言語仕様 Brainfuck - Wikipedia によると、次のようになる。 実行可能な命令は「8つ」のみである。 1. > ポインタをインクリメ…

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

dev

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

vimスクリプトを書こう

Vim

この前、usr_41.txt を読んで vimスクリプトの全体像が見えたので スクリプトをゴリゴリ書いていこう、と思う次第。 組み込み関数 既にあるものは使う、ということで vimの組み込み関数を確認するのは、次の方法で。 :help functions 一覧が表示されるので、…

ボッサ

この GWは、ボッサギターの完成度を上げる、 というミッションがあるので、ボサボサと練習。 披露宴の余興専用ギターとなりつつあるらしい。 今回選んだ曲は、前から弾いてみたいと思ってた曲なんだけど 進行が美しくて、やっぱり弾いてて楽しい。