プロが教える店舗&オフィスのセキュリティ対策術

google検索をすると、以下のサンプルがありました。
---------------------------------------
#include <asm/system.h>
cli();
/*重要なコード*/
sti();
---------------------------------------
又は、
#include <asm/system.h>
#include <sysio.h>
#include <unistd.h>
unsigned long flags;
iopl(3);
save_flags(flags);

cli();
/*重要なコード*/
sti();
---------------------------------------
ソース中に上記を組み込むと、cli()でエラーを吐きました。
また、上記のソースだけで実行してみるとコアダンプします。
これはどういうことなのでしょうか?
どうすれば割り込み禁止にして排他処理ができるか教えて下さい。

A 回答 (1件)

上のコードそのままなら、特権不足に跳ねられるでしょうし、下のコードでもrootじゃなければ、iopl()が失敗して同様です。



man 2 iopl
を参照して、ちゃんとエラー処理をしましょう。
    • good
    • 0
この回答へのお礼

どちらのコードもrootでコンパイル・実行していますが、fprintf(stderr,"number")を使うと、cli()でエラーが出てしまいます。
上のコードそのままだと特権不足というのは、
書き足す必要のあるコードがあるのですか?

お礼日時:2003/12/01 07:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!