STFD(3) — NEWS-OS Programmer’s Manual
名称
stfd − シンボルテーブルのファイルごとのディスクリプタセクションとの アクセスを提供するルーチン
形式
#include <syms.h>
long st_currentifd ()
long st_ifdmax ()
void st_setfd (ifd)
long ifd;
long st_fdadd (filename)
char ∗filename;
long st_symadd (iss, value, st, sc, freloc, index)
long iss;
long value;
long st;
long sc;
long freloc;
long index;
long st_auxadd (aux)
AUXU aux;
long st_stradd (cp)
char ∗cp;
long st_lineadd (line)
long line;
long st_pdadd (isym)
long isym;
long st_ifd_pcfd (pcfd1)
pCFDR pcfd1;
pCFDR st_pcfd_ifd (ifd)
long ifd;
pSYMR st_psym_ifd_isym (ifd, isym)
long ifd;
long isym;
pAUXU st_paux_ifd_iaux (ifd, iaux)
long ifd;
long iaux;
pAUXU st_paux_iaux (iaux)
long iaux;
char ∗st_str_iss (iss)
long iss;
char ∗st_str_ifd_iss (ifd, iss)
long ifd;
long iss;
pPDR st_ppd_ifd_isym (ifd, isym)
long ifd;
long isym;
char ∗ st_malloc (ptr, psize, itemsize, baseitems)
char ∗ptr;
long ∗size;
long itemsize;
long baseitems;
解説
stfd ルーチンは、ファイルごとのディスクリプタ(または fd)レベル上で処理される オブジェクト(たとえば、ローカルシンボル、補助、ローカル文字列、行番号、 最適化エントリ、プロシージャディスクリプタエントリおよびファイル ディスクリプタ)とのインタフェースを提供します。 これらのルーチンは、 FDR 構造体中のフィールドに対応するオブジェクトを処理するので、 グループを構成します。
fd は、現存の fd をメモリに読み込むか、または新しい fd を作成することに より起動されます。 翻訳ユニットルーチン st_readbinary および st_readst は、ファイルディスクリプタとそれらの構成部分を、ディスク上のシンボル テーブルからメモリに読み込みます。
st_fdadd は、ファイルディスクリプタをファイルディスクリプタのリストへ追加します。 lang フィールドは、symconst.h 中の言語に対し指定された定数へ 設定されるべきユーザ指定のグローバルな st_lang から初期化されます。 fMerge フィールドは、ファイルをロード時の識別ファイルとマージできる属性で 開始するか否かを指定するユーザ指定のグローバルな st_merge から 初期化されます。 fBigendian フィールドは、gethostsex(3) ルーチンにより初期化され、 ファイルに対する補助および行番号エントリの永久的なバイトの 順序付けを決定します。
st_fdadd は、ナル文字列を、issNull(0) 定数によりアクセスできる新しいファイル 文字列テーブルに追加します。 これは、ファイル名に文字列テーブルも追加し、 rss フィールドを設定します。 最後に、現在のファイルは、新しく追加されたファイルに設定されるので、 後の呼び出しは、そのファイル上で行われます。
fd レベルのオブジェクトに対するすべてのルーチンは、 ファイルインデックスが指定されない限り、現在のファイルだけを処理します。 現在のファイルは、 st_setfd でも設定することができます。
プログラムは、 st_currentifd を呼び出すことにより、現在のファイルを見つけることができ、 現在のインデックスを返します。 プログラムは、 st_ifdmax を呼び出すことにより、ファイル数を見つけます。 fd ルーチンは、ほとんどのことを行うのに、インデックスを扱うことだけしか 要求しません。 これらは、ユーザに、ファイルごとのテーブル(ディスクファイルで使用する インデックスやオフセットではなく)を指すメモリポインタを含んだコンパイル 時のファイルディスクリプタ (CFDR) を得ることを許すことにより、より 徹底的な操作を許します。 ユーザは希望するファイルに対するインデックスをもつ st_pcfd_ifd を呼び出すことにより、CFDR を指すポインタを検索することができます。 同様に、逆マッピング st_ifd_pcfd も存在します。
fd の構成部分のそれぞれは、add ルーチンの st_symadd、 st_stradd、 st_lineadd、 st_pdadd および st_auxadd をもちます。 add ルーチンのパラメタは、追加されたオブジェクトのフィールドに対応します。 pdadd ルーチンは、ユーザに isym フィールドだけをフィルさせます。 より詳細な情報は、直接プロシージャディスクリプタエントリをアクセスする ことにより追加することができます。
add ルーチンは、次のルーチンのうちの 1 つをもつ、 希望するオブジェクトの部分を指すポインタを検索するために 使用できるインデックスを返します。 st_psym_isym、 st_str_iss および st_paux_iaux 。 注意: これらのルーチンは、現在のファイル内のオブジェクトだけを返します。 次のルーチンを、ファイル指定に使用することができます。 st_psym_ifd_isym、 st_aux_ifd_iaux および st_str_ifd_iss 。
st_ppd_ifd_isym は、それらが生じるファイルのファイルインデックスおよびプロシージャに 対するローカルシンボルを指すエントリの isym フィールドを介した プロシージャへのアクセスを許します。
st_symadd からのリターンインデックッスを使用して、 dense 番号を得るべきです(stcu(3) 参照)。 この番号は、シンボルが記述するオブジェクトに対する ucode のブロック番号 でなければなりません。
著者
Mark I. Himelstein
関連事項
バグ
インタフェースは、必要に応じ増分で追加されます。
NEWS-OSRelease 4.2.1R