書き換え中・・・中断 †
- linux-2.6.19-landisk メモ
- RTC新インタフェースへの対応
- button 仕様変更
- SH-IDEが除外されている。
- 現状、USL-5PでCFが使えない。
- linux-2.6.20のlibata(driver/ata/pata_platform.c)でサポートされるらしい。?
お試し版 †
http://eggplant.ddo.jp/www/download/kernel26/linux-2.6.19-landisk-tmp/
対応landisk-tools:
http://eggplant.ddo.jp/www/download/debian26/base/landisk-tools-20061204.tgz
button 仕様変更 †
landisk-tools-20061204.tgz の btnctrl2.cを例に簡単に説明します。
本例では、(1)デバイスファイルをオープン、(2)selectでボタンの押下イベントを監視、(3)ボタンの情報を読み、押されたボタンの判定を行う、という手順でボタンの検出を行っています。
selectを使用すると、タイムアウト処理、即ち「一定時間待ってボタンが押されなかった時の処理」を簡潔に記述できます。
- /usr/local/src/landisk-tools/btnctrl2.c
int main(int argc, char *argv[])
{
int fd;
int ret;
struct timeval tv;
fd_set rfds;
char buf[4];
int btn;
// 省略
fd = open("/dev/btnctrl2", O_RDONLY); // (1)
if(fd == -1) {
printf("/dev/btnctrl2 open error...\n");
exit(0);
}
while (1) {
FD_ZERO(&rfds);
FD_SET(fd, &rfds);
tv.tv_sec = 60;
tv.tv_usec = 0;
ret = select( fd + 1, &rfds, NULL, NULL, &tv ); // (2)
if( ret < 0 ) {
// 省略
}else if(ret > 0){
read( fd, buf, 1 ); // (3)
btn = (int)buf[0];
// 省略
}
}
}
デバイスファイルの補足事項 †
RTC等のデバイス番号は、カーネル起動時に動的に割り当てられるよう、仕様変更されています。
本来ならは、udev を実装してデバイスの動的割り当てを行うべきでしょうが、面倒なので、
下記スクリプトで代用することにします。
コメント等 †
#comment