【Linux】カーネル総合3【Kernel】at LINUX
【Linux】カーネル総合3【Kernel】 - 暇つぶし2ch522:login:Penguin
07/04/25 22:41:50 NL98Ha60
ハーフライフ一週間のとこに出てたので新しいかと思っていたら
一月の記事でしたOrz

523:login:Penguin
07/04/26 00:55:12 7guDQNuw
>>522
だから、いつも言ってるだろう!

おまえは、頭でっかちすぎる。

524:login:Penguin
07/04/26 09:52:33 +Has5Xzx
いわれてたっけ●rz

525:login:Penguin
07/04/26 17:45:24 C7VjAS8c
STR,STD...

kdump並のウルトラCが必要なのかな。

526:login:Penguin
07/04/26 20:55:58 GX2/mssv
どっちかてーとkexecじゃないすかねえ。
APMならBIOSに丸投げできたけど、ACPIはそういうわけにいかんからのう。


527:login:Penguin
07/04/27 21:53:32 8003YhUG
ちょっと質問なんですがinotifyを利用しようとちょこちょこっとサンプルを書いてみたのですが、
動作仕様がどうにも理解に苦しみます。下のように、ループでreadしてブロッキングすると、最初の一回だけはreadするのですが、2回目以降無反応になってしまいます。


/* size of the event structure, not counting name */
#define EVENT_SIZE (sizeof (struct inotify_event))
/* reasonable guess as to size of 1024 events */
#define BUF_LEN (1024 * (EVENT_SIZE + 16)
char buf[BUF_LEN];
int len, i = 0;

int fd = inotify_init();
int wd = inotify_add_watch(fd, "/usr/local/hoge", IN_ACCESS | IN_MODIFY);
while(1){
len = read (fd, buf, BUF_LEN);
}



528:login:Penguin
07/04/27 23:08:59 EZ45sIxG
>>527
とりあえずすべてのシステムコールで返り値チェックしてerrnoをしらべろ
そもそも /usr/local/hoge はファイル?ディレクトリ?
/usr/local/hoge にどんなアクセスをした?

こういうファイルに
こんなアクセスをしたら
こうなると思ったけど
こんな結果になった

くらいの情報は必要

529:login:Penguin
07/04/29 20:46:36 rZL1ahYI
URLリンク(www.linux.or.jp)
inotify_add_watch() の呼び出しが成功すると、(略)

これ以降に inotify ファイルディスクリプタから read(2) を行うと、
監視対象ディスクリプタが返される。
これらの read() を行うと、ファイルシステムイベントを示す
inotify_event 構造体が読み出される。返された監視対象ディスクリプタにより、
どのオブジェクトでそのイベントが発生したかを特定できる。

530:login:Penguin
07/04/29 21:04:08 pBG0iRqZ
>>529
それは解かるのですが、

while(1){
read(...)
}
としたときになんらかのアクションがあると上記のコードでは、
1.リードでブロッキング
2.イベントが発生
3.ブロッキングしていたreadからinofify_event構造隊のデータが返されます。
4.読めた情報を適切に処理します。
5.1へ戻る

流れとしては上記のようになると思います。問題となるのは初回の動作とn(n>=2)の時で挙動が違います。
・初回は、イベントが発生するとそのまま2以降のシーケンスに流れていきます。
・2回目以降はイベント発生してもずっとブロッキングした状態になります。つまりイベントを関知できていないということです。

それでどうしたらいいもんかなぁと思ってます。


531:login:Penguin
07/04/29 22:30:19 3LKFnPe9
>>530

>>528 で尋ねられてる情報の半分も出てないんだが?


532:login:Penguin
07/04/29 22:32:30 pBG0iRqZ
>>531
どんなファイルでもなるからやってみろよボケ
さっさとやれ。プログラム書いて動かせよ?しらねーなら
すいませんって言えよボケ

533:login:Penguin
07/04/29 22:46:35 3LKFnPe9
なんかひどい言われようだが…

==== program
#include <stdio.h>
#include <sys/inotify.h>

int main(void)
{
/* size of the event structure, not counting name */
#define EVENT_SIZE sizeof(struct inotify_event)
/* reasonable guess as to size of 1024 events */
#define BUF_LEN (1024 * (EVENT_SIZE + 16))
char buf[BUF_LEN];
int len, i = 0;

int fd = inotify_init();
printf("fd=%d.\n", fd);


534:login:Penguin
07/04/29 22:47:55 3LKFnPe9
int wd = inotify_add_watch(fd, "/tmp/foo", IN_ACCESS | IN_MODIFY);
printf("wd=%d.\n", wd);

while (1) {
struct inotify_event *ev;
len = read(fd, buf, BUF_LEN);
printf("len=%d.\n", len);
ev = (struct inotify_event *) buf;
printf("%d, %08x, %08x, %d, %s\n",
ev->wd, ev->mask, ev->cookie, ev->len, ev->name);
}

return 0;
}


535:login:Penguin
07/04/29 22:48:57 3LKFnPe9
====片方の端末
% cc -o test test.c
% ./test
fd=3.
wd=1.
len=16.
1, 00000002, 00000000, 0,
len=16.
1, 00000002, 00000000, 0,
====もう片方の端末
% echo > /tmp/foo
% echo > /tmp/foo
====
私のところでは問題ない。

linux kernel 2.6.21.1
glibc 2.5


536:login:Penguin
07/04/30 00:17:45 XIwj/Z1t
IN_MODIFY入れるとなんか変だな...

537:login:Penguin
07/04/30 11:46:20 mlJ1TH1o
>>527=>>530=>>532が謝る番では?
使い方間違ってただけなんだろ?

しかしマニュアルドキュメントがわかりにくいのは確かだな。

538:login:Penguin
07/04/30 11:57:39 bBqUiCik
>>537
うぜえ、消えろ

539:login:Penguin
07/04/30 12:02:19 JxyWDw/R
もしかして>>532=>>538なのかwwww

540:login:Penguin
07/04/30 12:09:16 I1BXKMoI
>>538
プッ

541:login:Penguin
07/04/30 12:56:29 XIwj/Z1t
ubuntu7.04だとまともに動作しないらしい...

542: ◆Zsh/ladOX.
07/04/30 18:55:59 qUPaHj6D
FedoraCore2(i386)、FedoraCore5(x86_64)でも動かん。ダメポ

543:login:Penguin
07/04/30 20:11:56 vBFiYDj4
ARM/Debian Etch (2.6.15.4)
MIPS/Debian Etch (2.6.17.13)
x86_64/RedHat EL4 (2.6.18)
x86/Gentoo (2.6.21)

で動作確認してるよ。
カーネルで inotify support の組み込み忘れてない?

544: ◆Zsh/ladOX.
07/04/30 20:20:16 qUPaHj6D
>>542のどっちも
% grep -i inotify .config
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y

(´・ω・`)

545:login:Penguin
07/04/30 20:22:57 EVyG0KCG
FC5(i686)でも動かない。

CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y

になってるけど。

546:login:Penguin
07/04/30 20:38:12 vBFiYDj4
initNGで使われてるから、ソース参考にしてみては?

glibcのヘッダではなく、
URLリンク(www.kernel.org)
の定義ではどうよ?

547:login:Penguin
07/04/30 20:38:43 1B6DUYHo
DynTickは急激に負荷がかかるとだめぽだな。
まるで2.4系に退化したみたいだ。

548:login:Penguin
07/04/30 21:20:31 XIwj/Z1t
ubuntuが腐っているようですね。どうもお騒がせしました。

一度目はどんなファイル開いてもうまく行くのですが。その後2度目以降は
無反応になってしまうようです。

FedoraとGentooで試したら問題なかったです。どうもすいませんでした。

549:login:Penguin
07/04/30 22:39:26 QckF6ZL2
すいませんって言
ったな

550:login:Penguin
07/05/01 04:35:25 g0swsIWn
UbuntuとFCの両方ともだめなのか?
もしそうなら何でそうなってるんだろうね?

551:login:Penguin
07/05/01 19:58:03 AzdFd/9E
Linux: Merging in 2.6.22
URLリンク(kerneltrap.org)

552:login:Penguin
07/05/01 23:18:23 mq8aRVBi
ubuntuがダメだFCはうまく行くときもある。よくわからん。
調査中

553:login:Penguin
07/05/08 10:58:27 XKFA94h5
バニラとmmカーネルの関係ってどんな?
mmのが先行してると思っていが
いまはバージョン番号が同じでmmはRCになってるので逆転したの?

554:login:Penguin
07/05/08 11:32:12 LH1r089h
アッシュとナタリアの関係とおなじかんじ

555:login:Penguin
07/05/08 23:03:30 tKtnVwyW
ねね、ユーザの行動完全に監視できるようなモジュールとかないですかね?
しかもrootkit的に隠れて監視しちゃう系のやつないですかね?

556:login:Penguin
07/05/08 23:05:33 W1PwRzk/
>>555
auditd

557:login:Penguin
07/05/08 23:38:29 tKtnVwyW
>>556
auditdすげー遅くないですか?1秒間にsyscall 1万回ぐらい出したぐらいで
ハングしたかと勘違いする程遅くなります。使いものになりそうもないのですが...

558:login:Penguin
07/05/09 00:58:36 Y/s6wdPq
>>557
使い方が悪い。


559:login:Penguin
07/05/09 07:38:44 JBFllK/7
良い使い方は?

560:login:Penguin
07/05/09 18:44:24 AVxUEFYS
userファイルの中に何もないんですが、
どうすれば見れるようになりますか?

561:login:Penguin
07/05/09 18:51:04 sZVL/6LE
くだ質へ逝け

562:login:Penguin
07/05/09 19:14:40 wXCiS1Vp
>>560
$ touch me

563:login:Penguin
07/05/09 22:25:24 eqA1dMQB
Debianスレで質問をしたのですが、こちらに誘導されてきました。
自分で色々試してみたのですが、どうしても解決できないので、分かる方がいましたらアドバイスお願いします。
Debian etchをインストールしたCore 2 Duo T5500マシーンでacpi-cpufreqとcpufreq-ondemandモジュールをロードして、
cpufreq-setコマンドでそれぞれのコアのgovonerをondemandにすると下記のエラーが頻繁に出るようになります。
kernel: rateup[24408]: segfault at 0000000000000000 rip 0000000000000000 rsp 00007fff36e84320 error 14
あとXも不安定になり、Xが勝手に再起動します。

試してみた事は以下の通りです。
M/B(Asus N4L-VM DH)のBIOSを最新にする。
kernel.orgから2.6.21.1を取ってきてインストール。
ondemandの代わりにpowersaveを使う。

564:login:Penguin
07/05/10 07:02:47 0+0Fk0Ga
状況がさっぱりわからないが
cpufreqを使うのをやめたら?

565:login:Penguin
07/05/10 13:43:35 YEr0RFBe
>>564
ありがとうございます。cpufreqを使わなければ何も問題は起きません。
ただPCがアイドル状態の時の消費電力をできるだけ落とすためにCPUの周波数を最低にしたいんです。
cpufreqの他に同じような機能を持つものがあるんでしょうか?

566:login:Penguin
07/05/10 22:46:42 BLWHqLav
プロセス間で共有メモリ使う時一般的にLinux回りだとPOSIXとSystemVどっちが高速?
また、POSIXのMUXTEXとSsystemVのセマフォどっちが高速(Mutexはオプション付けて)

567:login:Penguin
07/05/11 09:14:27 DFDvgY5e
>>565
以前は問題があったようだけど最近は報告されていないようなので、ほかのモジュールとの相性の問題かも。
今のバージョンのカーネルでは、タイミング制御の仕組みの大幅変更を行なったようなので、不整合を起こしているモジュールがあっても不思議はない。

CPU速度をどうしても落としたいというのなら他の方法はないと思う。
ただ、アイドル時の消費電力は比較的少ないので、ファン回転数や画面のスタンバイだけでもそこそこ効果あるでしょう。


568:login:Penguin
07/05/11 09:44:05 YfnV2Hgz
>>567
分かりました。ありがとうございます。
experimentalなモジュールを色々使ってるのでしょうがないのかもしれません。



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