sys_parm サブルーチン

目的

カーネル・ランタイム・チューナブル・パラメーターを検査または設定するためのサービスを提供します。

ライブラリー

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

構文

#include <sys/types.h>
#include <sys/var.h>

int sys_parm ( cmd,  parmflag,  parmp)
int cmd;
int parmflag;
struct vario *parmp;

説明

sys_parm サブルーチンは、ランタイム・オペレーティング・システム・パラメーターを照会またはカスタマイズ (あるいはその両方) するために使用されます。

注: これは、 var 構造体の情報の照会または変更に関する sysconfig の代替サービスです。 audit サブルーチンまたはコマンドは、 var 構造体に対する変更を監査するために使用できます。

sys_parm サブルーチンは、次のことを行います。

  • 32 ビット・プラットフォームと 64 ビット・プラットフォームの両方で機能します。
  • 使用するには適切な特権が必要です。

以下の操作がサポートされます。

項目 説明
SYSP_GET (SYSP_GET) var 構造体で検出された、指定されたランタイム・パラメーターの現行値を含む構造体を戻します。
SYSP_SET (SYSP_SET) 指定されたランタイム・パラメーターの値を設定します。

返されるか設定される可能性のあるランタイム・パラメーターは、 var.h で定義されている var 構造体にあります。

パラメーター

項目 説明
cmd SYSP_GET または SYSP_SET 関数を指定します。
パラメーター・フラグ 関数が実行されるパラメーターを指定します。
パラメーター システム・パラメーター値のコピー元またはコピー先となるユーザー指定の構造を指します。 parmp は、 var.hで定義されている vario 型の構造体を指します。

vario 構造体は、各フィールドがサイズ不変である var 構造体のさまざまなフィールドを抽象化したものです。 データのサイズは、カーネルの実行環境が 32 ビットまたは 64 ビットであるか、呼び出し側アプリケーションが 32 ビットまたは 64 ビットであるかに依存しません。

  1. v.v_iostrun の値を調べます (ディスク使用量統計を収集します)。
    #include <sys/var.h>
    #include <stdio.h>
    struct vario myvar;
    rc=sys_parm(SYSP_GET,SYSP_V_IOSTRUN,&myvar);
    if(rc==0)
            printf("v.v_iostrun is set to %d\n",myvar.v.v_iostrun.value);
  2. v.v_iostrun の値を変更する (ディスク使用状況統計を収集する)。
    #include <sys/var.h>
    #include <stdio.h>
    struct vario myvar;
    myvar.v.v_iostrun.value=0; /* initialize to false */
    rc=sys_parm(SYSP_SET,SYSP_V_IOSTRUN,&myvar);
    if(rc==0)
            printf("disk usage statistics are not being collected\n");

その他のパラメーターは、parmflag パラメーターを変更することによって検査または設定することができます。

戻り値

これらの操作は、サブルーチンの正常終了時に値 0 を戻します。 そうでなければ-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

項目 説明
EACCES 呼び出しプロセスに必要な特権がありません。
EINVAL 次の1つが起こっています。
  • コマンドが SYSP_GET でも SYSP_SET でもない
  • parmflag は、 var.h に定義されているパラメーターの範囲外です。
  • parmp パラメーターに指定された値は、 parmflag パラメーターによって示されたフィールドに有効な値ではありません。
EFAULT parmp パラメーターによって無効なアドレスが指定されました。

ファイル

項目 説明
sys/var.h 構造体定義が入っています。