RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
プロセス 間 同 期The following operation commands (flags) can be used:IPC_NOWAITSEM_UNDO配郤 列 内 のどのような 操 作 でも 設 定 することが 可 能 です。もしIPC_NOWAITが 設 定 されているどのような 操 作 もうまく 実 行 できない 場 合 、セマフォの 値 を 少 しも 変 更 することなくシステムコールは 失敗 して 戻 ります。セマフォの 現 在 の 値 よりもデクリメントしようとする 時 、そうではなくセマフォをゼロと 等 しくするためにテストをする時 にシステムコールは 失 敗 します。プロセスが 終 了 する 時 に 自 動 的 にプロセスのセマフォの 変 更 を 元 に戻 すことをシステムに 指 示 し、これはプロセスがデッドロック 問 題 を回 避遪 することを 可 能 にします。この 機 能 を 実 装 するため、システム 内のプロセス 毎 のエントリを 含 むテーブルをシステムは 維 持 します。 各エントリはプロセスに 使 用 される 各 セマフォのためのアンドゥ 構 造造体 の 集 合 を 指 し 示 します。システムは 最 終 的 な 変 更 を 記 録 します。条 件 同 期 5postwaitシステムコール5以 下 のセクションでは、 協 同 プロセスを 操 作 するために 使 用 することが 可 能 なpostwait(2),server_block/server_wake(2)の 各 システムコールを 説 明 します。postwait(2)ファンクションは 協 同 グループのスレッド 間 で 使 用 する 高 速 で 効 果 的 なスリープ/ウェイクアップ/タイマーのメカニズムです。スレッドは 同 じプロセスのメンバーである 必 要 はありません。概 要#include #include #include int pw_getukid(ukid_t *ukid);int pw_wait(struct timespec *t, struct resched_var *r);int pw_post(ukid_t ukid, struct resched_var *r);int pw_postv(int count, ukid_t targets[], int errors[], structresched_var *r );int pw_getvmax(void);gcc [options] file -lccur_rt ...スリープ 状 態 にするため、スレッドはpw_wait()を 呼 び 出 します。スレッドは 次 の 時 に 起 き 上 がります:• タイマーが 終 了 する• スレッドが、pw_wait 中 スレッドのukid によるpw_post()またはpw_postv()の 呼 び 出 しで 他のスレッドよりポストされる• 呼 び 出 しが 割 り 込 まれる5-37