cpuextintr_ctl サブルーチン

目的

CPU に対する中央演算処理装置 (CPU) 外部割り込み制御関連の操作を実行します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <sys/intr.h>

int cpuextintr_ctl(command,cpuset,flags)
extintrctl_t command;
rsethandle_t cpuset;
uint flags;

説明

cpuextintr_ctl サブルーチンは、CPU リソース・セットによって記述された CPU 上の外部割り込み状態を使用可能化、使用不可化、および照会する手段を提供します。 CPU の外部割り込みを使用可能または使用不可にすると、CPU への外部割り込み送達に影響します。 通常、複数 CPU システムでは、外部割り込みは実行中の任意の CPU に送信することができ、CPU 間の分散は事前定義された方式によって決定されます。 ある CPU への外部割り込みの送達が可能となるのは、外部割り込みの割り込み優先順位が、CPU の現在の外部割り込み優先順位よりも高い場合のみです。 このインターフェースを介して外部割り込みを使用不可にすると、INTMAX より優先度の低い外部割り込み優先度は、割り込みが再び使用可能になるまでブロックされます。 cpuextintr_ctl サブルーチンは、選択的なハードウェア・タイプにのみ適用できます。

注: このサブルーチンは外部割り込みの送達方法を変更するため、システム・パフォーマンスが影響を受ける可能性があります。 このサービスは、すべての外部割り込みを処理するために少なくとも 1 つのオンライン CPU が使用可能であることを保証します。 操作がこのような規則に違反すると、CPU DLPAR の除去は失敗します。 入出力制約のシステムでは、すべての外部割り込みを処理するには 1 つの CPU では不十分な場合があります。 外部割り込みを処理するために使用できる CPU が不足しているため、パフォーマンスが低下します。

パラメーター

項目 説明
command
CPU リソース・セットによって指定された CPU に対する操作を指定します。 <sys/intr.h> ファイルに定義されている以下のいずれかの値を使用できます。
EXTINTDISABLE (拡張使用不可)
CPU リソース・セットによって指定された CPU で外部割り込みを使用不可にします。
EXTINTENABLE (拡張可能)
CPU リソース・セットによって指定された CPU で外部割り込みを有効にします。
QUERYEXTINTDISABLE (照会エクステント・アイドル)
外部割り込みが使用不可になっている CPU を持つ CPU リソース・セットを返します。
QUERYEXTINTENABLE
外部割り込みが有効になっている CPU を持つ CPU リソース・セットを返します。
cpuset (cpuset)

CPU リソース・セットへの参照。 このカーネル・サービスから正常に戻ると、外部割り込み制御操作が完了した CPU が CPU リソース・セットに設定されます。

cpuset パラメーターによって指定される CPU は、論理 CPU ID です。

flags

常に 0 に設定するか、または EINVAL が戻されます。

セキュリティー

呼び出し側は、 CAP_NUMA_ATTACH 機能または RBAC 環境の PV_KER_CONF 特権を持つ root 権限を持っている必要があります。

戻り値

正常終了すると、 cpuextintr_ctl サブルーチンは、コマンドが正常に完了した CPU の数を戻します。 失敗した場合は-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

項目 説明
EINVAL

コマンドが無効であるか、 cpuset が NULL を参照しているか、 cpuset が空であるか、またはフラグ値が不明です。

EFAULT

渡された cpuset バッファーが有効ではありません。

ENOSYS

この機能はプラットフォームには実装されていません。

EPERM

呼び出し元には、要求された操作を実行するための十分な特権がありません。

注: 戻り値 success は、必ずしも、指定されたすべての CPU で外部割り込みが有効または無効になっていることを示しているわけではありません。 例えば、CPU がオンラインでない場合、使用可能または使用不可の操作はその CPU では実行されません。 呼び出し元は、戻された cpuset を検査して、CPU 上でのこの操作の完了を検証する必要があります。 k_cpuextintr_ctl カーネル・サービスは、システム・コールの期間中は DR CPU の追加または削除操作をブロックしません。