HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
Linker ユーティリティの情報は 第 7 章 を参照してください。
4.10 HP OpenVMS Migration Software
バイナリ・トランスレータとも呼ばれる HP OpenVMS Migration Software for Alpha to Integrity (OMSAI) は, OpenVMS Alpha イメージを OpenVMS I64 で動作する機能的に同等なイメージに変換し,OpenVMS Alpha アプリケーションを OpenVMS I64 システムへ移行するのを容易にします。 OpenVMS I64 で,変換後のイメージを実行する際には,あたかも OpenVMS Alpha システム上で実行しているかのような環境が透過的にサポートされます。 OMSAI は,Alpha Environment Software Translator (AEST) ユーティリティと変換プロセスを容易にするよう設計されたプログラムやコマンド・ファイル群で構成されています。
この機能のリリース状況については,次の Web サイトで確認してください。
http://h71000.www7.hp.com/openvms/products/omsva/omsais.html
4.11 POSIX スレッド機能
以降の項では, POSIX スレッド・ライブラリに追加された新機能について説明します。
4.11.1 /NAMES=AS_IS でコンパイルするための小文字のシンボル名
POSIX スレッド・ライブラリ PTHREAD$RTL.EXE は,多くのシンボル名 (pthread API ルーチン,定義済みの例外オブジェクトなど) をエクスポートします。以前のリリースでは,これらのシンボルの英字はすべて大文字でした。 OpenVMS Version 8.2 では,既存の大文字シンボルのバージョンに加えて小文字シンボルのバージョンが提供されます。これらのシンボルにより,多くの HP コンパイラ製品に含まれている /NAMES=AS_IS 修飾子の使用が簡単になります。
4.11.2 プロセス共用型のミューテクスと条件変数のサポート
POSIX スレッド・ライブラリでは,プロセス共用型のミューテクスと条件変数をサポートするようになりました。これまでは,これらの機能は UNIX システムでのみサポートされていました。 (プロセス共用型の読み書きロック機能は,今でも,UNIX システムでのみサポートされています。) OpenVMS Version 8.2 で,次に示す pthread ルーチンがサポートされるようになりました。
4.11.3 SET コマンドと SHOW コマンドの機能拡張 (I64 のみ)
OpenVMS I64 システムでは,DCL コマンドの SET と SHOW が機能拡張され,メイン・イメージのヘッダ・フラグ (UPCALLS と MKTHREADS の 2 つ) の照会や変更が可能になりました。さらに,Alpha システムと I64 システムの両方で, SET IMAGE コマンドと SHOW IMAGE コマンドを使って I64 イメージのみの設定や表示が可能になりました。
DCL コマンドの THREADCP は,引き続き OpenVMS Alpha システムで使用可能です。
4.11.4 Thread Independent Services API に追加された新しいルーチン
Thread Independent Services API (TIS) に,新しいルーチン tis_mutex_init_typeが追加されました。このルーチンは,既存のルーチン tis_mutex_initと似ています。
指定されたミューテクス・オブジェクトを初期化し,呼び出し元が指定したミューテクスのタイプと名前を設定します。
tis_mutex_init_type (mutex,type,name):
| 引数 | データ型 | アクセス |
|---|---|---|
| mutex | opaque pthread_mutex_t | 書き込み |
| データ型 | integer | 読み取り |
| name | char | 読み取り |
C バインディング
#include <tis.h>
int
tis_mutex_init_type (
pthread_mutex_t *mutex,
int type,
const char *name );
|
mutex
初期化するミューテクス・オブジェクトへのポインタ (参照渡し)。type
ミューテクスのタイプ属性の値。 type 引数には,作成されるミューテクスのタイプを指定します。有効な値は,次のとおりです。
- PTHREAD_MUTEX_NORMAL
- PTHREAD_MUTEX_DEFAULT
- PTHREAD_MUTEX_RECURSIVE
- PTHREAD_MUTEX_ERRORCHECK
name
ミューテクスに関連付けるテキスト名。
このルーチンは,呼び出し元で指定するミューテクスの type と name を除き,DECthreads のデフォルトのミューテクス属性で,ミューテクス・オブジェクトを初期化します。ミューテクスは,複数のスレッドが共用データへのアクセスをシリアル化するために使用する,同期用のオブジェクトです。ミューテクス・オブジェクトは初期化されて,アンロックの状態になります。ミューテクスのタイプについては,『Guide to POSIX Threads Library』を参照してください。
ミューテクスの name 引数は,C 言語の文字列であり, DECthreads マルチスレッド・アプリケーションのデバッグを行なう際に意味のある識別子です。 name 文字列は,文字列リテラル,またはミューテクスが存続している間存在する記憶域のいずれかである必要があります。文字列の内容は,ミューテクスの初期化では,コピーされません。
エラーが発生すると,このルーチンはエラーの種類を示す整数値を返します。ミューテクスは初期化されず,ミューテクスの内容は不定です。戻り値は,以下のとおりです。
0 正常終了。 [EAGAIN] ミューテクスを初期化するために必要なシステムのリソースが不足している。 [EBUSY] すでに初期化されていて,破棄されていない ミューテクスを再度初期化しようとした。 [EINVAL] mutex で指定した値が正しいミューテクスではない,または type で指定したタイプが正しいミューテクス・タイプではない。 [ENOMEM] ミューテクスを初期化するためのメモリが不足している。 [EPERM] この操作を行うための権限が呼び出し元にない。
関連ルーチン
tis_mutex_destroy()
tis_mutex_init()
tis_mutex_lock()
tis_mutex_trylock()
tis_mutex_unlock()
4.12 新しい RTL LIB ルーチン
表 4-2 に,OpenVMS 8.2 Version 8.2 で用意された新しいルーチンの一覧を示します。これらのルーチンは,特に断らない限り OpenVMS Alpha と OpenVMS I64 の両方のシステムで使用できます。
| ルーチン名 | 説明 |
|---|---|
| LIB$CVTS_FROM_INTERNAL_TIME | 内部時刻を外部時刻に変換 (S-floating 値) |
| LIB$CVTS_TO_INTERNAL_TIME | 外部時刻を内部時刻に変換 (S-floating 値) |
| LIB$EMODS | 拡張乗算を実行し,S-floating 値を整数化 |
| LIB$EMODT | 拡張乗算を実行し,T-floating 値を整数化 |
| LIB$I64_CREATE_INVO_CONTEXT | 呼び出しコンテキスト・ブロックの割り当てと初期化 (I64 のみ) |
| LIB$I64_FREE_INVO_CONTEXT | 呼び出しコンテキスト・ブロックの割り当て解除 (I64 のみ) |
| LIB$I64_GET_INVO_CONTEXT | 任意のアクティブ・プロシージャの呼び出しコンテキストを取得 (I64 のみ) |
| LIB$I64_GET_CURR_INVO_CONTEXT | 任意のアクティブ・プロシージャの現在の呼び出しコンテキストを取得 (I64 のみ) |
| LIB$I64_GET_CURR_INVO_HANDLE | 現在の呼び出しハンドルを取得 (I64 のみ) |
| LIB$I64_GET_FR | 浮動小数点レジスタの値を取得 (I64 のみ) |
| LIB$I64_GET_GR | 汎用レジスタの値を取得 (I64 のみ) |
| LIB$I64_GET_INVO_HANDLE | 呼び出しハンドルを取得 (I64 のみ) |
| LIB$I64_GET_PREV_INVO_CONTEXT | 直前の呼び出しコンテキストを取得 (I64 のみ) |
| LIB$I64_GET_PREV_INVO_HANDLE | 直前の呼び出しハンドルを取得 (I64 のみ) |
| LIB$I64_GET_UNWIND_HANDLER_FV | 指定された pc_value に対して,条件ハンドラの関数値 (プロシージャ記述子のアドレス) を探し,見つかった場合は,それを handler_fv に書き込む (I64 のみ) |
| LIB$I64_INIT_INVO_CONTEXT | 割り当て済みの呼び出しコンテキスト・ブロックを初期化 (I64 のみ) |
| LIB$GET_UIB_INFO | unwind 情報ブロックの情報を返す |
| LIB$I64_GET_GR | 汎用レジスタの値を取得 (I64 のみ) |
| LIB$I64_GET_UNWIND_LSDA | unwind 情報ブロックの言語固有のデータのアドレスを見つける (I64 のみ) |
| LIB$I64_GET_UNWIND_OSSD | unwind 情報ブロックのオペレーティング・システム固有領域のアドレスを見つける (I64 のみ) |
| LIB$I64_IS_AST_DISPATCH_FRAME | 指定された PC 値が AST かどうかを判定する (I64 のみ) |
| LIB$I64_IS_EXC_DISPATCH_FRAME | 指定された PC 値が例外ディスパッチ・フレームかどうかを判定する (I64 のみ) |
| LIB$I64_PREV_INVO_END | unwind 記述子を処理するために使用したメモリを解放 (I64 のみ) |
| LIB$I64_PUT_INVO_REGISTERS | 呼び出しレジスタを設定 (I64 のみ) |
| LIB$I64_SET_FR | 呼び出しコンテキスト・ブロックのコンテキストを書き込む (I64 のみ) |
| LIB$I64_SET_GR | 呼び出しブロックの汎用レジスタの値を書き込む (I64 のみ) |
| LIB$I64_SET_PC | 呼び出しコンテキスト・ブロックの pc_copy 値を書き込む (I64 のみ) |
| LIB$LOCK_IMAGE | イメージをプロセス・ワーキング・セット内にロックする |
| LIB$MULTS_DELTA_TIME | デルタ時間に S-floating のスカラー値を掛ける |
| LIB$POLYS | 多項式を評価する (S-floating 値) |
| LIB$POLYT | 多項式を評価する (T-floating 値) |
| LIB$UNLOCK_IMAGE | プロセス・ワーキング・セットからイメージをアンロックする |
詳細は,『OpenVMS RTL Library (LIB$) Manual』を参照してください。
4.12.1 LIB$GETDVI ルーチンの変更 (I64 のみ)
OpenVMS I64 システム用に,RTL LIB ルーチン LIB$GETDVI に新しい引数 pathname が追加されました。詳細は,『OpenVMS RTL Library (LIB$) Manual』を参照してください。
4.13 新しい RTL OTS ルーチン
表 4-3 に,新しい OTS ルーチンの一覧を示します。これらのルーチンは,特に断らない限り OpenVMS Alpha と OpenVMS I64 の両方のシステムで使用できます。
| ルーチン名 | 説明 |
|---|---|
| OTS$CNVOUT_S | S-floating 値を文字列に変換 |
| OTS$CNVOUT_T | T-floating 値を文字列に変換 |
| OTS$CVT_T_S | 数値テキストを S-floating 値に変換 |
| OTS$CVT_T_T | 数値テキストを T-floating 値に変換 |
| OTS$DIVCS_R3 | 複素数の除算の結果の S-floating 複素数を返す |
| OTS$DIVCT_R3 | 複素数の除算の結果の T-floating 複素数を返す |
| OTS$MULCT_R3 | 2 つの複素数値から複素数の積を計算し,T-floating 複素数を返す |
| OTS$POWCSCS_R3 | 複素数の基底を,S-floating 複素数の指数に上げる |
| OTS$POWCSCT_R3 | 複素数の基底を,T-floating 複素数の指数に上げる |
| OTS$POWCSJ | S-floating 複素数の基底を整数の指数に上げた結果の複素数を返す |
| OTS$POWCTJ | T-floating 複素数の基底を整数の指数に上げた結果の複素数を返す |
| OTS$POWSJ | S-floating の基底を,ロングワードの指数に上げる |
| OTS$POWSLU | S-floating の基底を,符号なしロングワードに上げる |
| OTS$POWSS | S-floating の基底を,S-floating またはロングワード整数の指数に上げる |
| OTS$POWTLU | T-floating の基底を,符号なしロングワードに上げる |
| OTS$POWTJ | T-floating の基底を,ロングワード整数の指数に上げる |
| OTS$POWTT | T-floating の基底を,T-floating またはロングワード整数の指数に上げる |
詳細は,『OpenVMS RTL General Purpose (OTS$) Manual』を参照してください。
4.14 パッチ・ユーティリティが OpenVMS Alpha と OpenVMS I64 で使用可能
これまでは OpenVMS VAX システムでのみ使用可能だったパッチ・ユーティリティが OpenVMS Alpha および OpenVMS I64 システムでも使用できるようになりました。デフォルトで PATCH/ABSOLUTE が含まれます。PATCH/ABSOLUTE は絶対仮想アドレスでファイルにパッチをあてます。 PATCH/ABSOLUTE と関連パラメータの詳細は,『OpenVMS DCL ディクショナリ』を参照してください。パッチ・ユーティリティの説明は,『OpenVMS VAX Patch Utility Manual』にも記載されています。このドキュメントは,OpenVMS Documentation Web サイトの [Archived documents] またはパッチ・ユーティリティに付属のオンライン・ヘルプにあります。
4.15 新しいシステム・サービスと改訂されたシステム・サービス
表 4-4 に,OpenVMS Version 8.2 で新たに追加されたシステム・サービスの概要を示します。
| システム・サービス名 | 説明 |
|---|---|
| SYS$CLEAR_UNWIND_TABLE | アンワインド・テーブル (UT) 情報をクリアする |
| SYS$GET_UNWIND_ENTRY_INFO | I64 システムで,修正されたアンワインド・エントリ情報を取得する |
| SYS$GOTO_UNWIND_64 | Alpha システムと I64 システムで,コール・スタックをアンワインドする |
| SYS$IEEE_SET_PRECISION_MODE | I64 システムで,IEEE 精度モードを変更し,オプションで,以前の値を返す |
| SYS$IEEE_SET_ROUNDING_MODE | I64 システムで,IEEE 丸めモードを変更し,オプションで,以前の値を返す |
| SYS$RPCC_64 | Alpha システムと I64 システムで,64 ビット,プロセス・ベースの高精度時刻カウンタを返す |
| SYS$SET_RETURN_VALUE | Alpha システムと I64 システムで,アーキテクチャとは独立に, Mechanism Array に戻り値または条件コードを設定する |
| SYS$SET_UNWIND_TABLE | I64 システムで,アンワインド・テーブル (UT) 情報を登録する,または拡張する |
詳細は,『OpenVMS System Services Reference Manual』を参照してください。 UNWIND システム・サービス・ルーチンについての詳細は,『OpenVMS Calling Standard』を参照してください。
表 4-5 に,OpenVMS Version 8.2 で修正されたシステム・サービスの概要を示します。
| システム・サービス名 | 説明 |
|---|---|
| SYS$CHECK_FEN | I64 システムで,ビットマスクに 2 つのビットが用意された (下位浮動小数点バンクに対応するビット 0 と,上位浮動小数点バンクに対応するビット 1) |
| SYS$CREATE_GPFN | SEC$M_UNCACHED フラグは I64 システムの場合にのみ有効 |
| SYS$CRELNT | LNM$M_NO_ALIAS はクラスタ単位の論理名テーブルでは使用不可 |
| SYS$CREMBX | prmflg の値を変更 |
| SYS$CRMPSC_GDZRO_64 | SS$_INSF_SHM_REG の状態値を追加 |
| SYS$CRMPSC_GPFN_64 | Alpha システムと I64 システムの新しい動作に対応して修正 |
| SYS$CRMPSC_PFN_64 | SEC$M_UNCACHED フラグは I64 システムの場合にのみ有効 |
| SYS$DEQ | 拡張ロック値ブロック情報を追加 |
| SYS$ENQ | 拡張ロック値ブロック情報を追加 |
| SYS$GETLKI | 拡張ロック値ブロック情報を追加 |
| SYS$GETDVI | 以下に示す新しい項目コードを追加
ACCESSTIMES_RECORDED |
| SYS$GETRMI | 多くのバッファ長フィールドを 8 バイトに変更 |
| SYS$IEEE_SET_FP_CONTROL | Alpha システムと I64 システムの新しい動作に対応して修正 |
| SYS$INIT_VOL | 新しいアイテム・コード INIT$_ERASE_ON_DELETE,INIT$_ERASE_ON_INIT, INIT$_VOLUME_LIMIT を追加 |
| SYS$LKWSET | Alpha システムと I64 システムの新しい動作に対応して修正 |
| SYS$LKWSET_64 | Alpha システムと I64 システムの新しい動作に対応して修正 |
| SYS$MGBLSC_GPFN_64 | SEC$M_UNCACHED フラグは I64 システムでは無視される |
| SYS$MOUNT | アイテム・コード $MNT$_DENSITY を修正 |
| SYS$SETFLT | FLT$M_EXECUTABLE の軽微な変更 |
| SYS$SETFLT_64 | FLT$M_EXECUTABLE の軽微な変更 |
| SYS$SETRWN | 追加されたシステム・リソースとプロセス制限は,リソースの待ち状態モードの影響を受ける |
| SYS$SET_DEVICE | SDV$_MP_SWITCH_PATH に対して返される新しい状態値を追加 |
| SYS$ULWSET | Alpha システムと I64 システムの新しい動作に対応して修正 |
| SYS$ULWSET_64 | Alpha システムと I64 システムの新しい動作に対応して修正 |
| 前へ | 次へ | 目次 | 索引 |