library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


HP OpenVMS

HP OpenVMS
V8.2 新機能説明書


前へ 次へ 目次 索引


4.9 Linker ユーティリティ

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

指定されたミューテクス・オブジェクトを初期化し,呼び出し元が指定したミューテクスのタイプと名前を設定します。

形式

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 引数には,作成されるミューテクスのタイプを指定します。有効な値は,次のとおりです。

name

ミューテクスに関連付けるテキスト名。

説明

このルーチンは,呼び出し元で指定するミューテクスの typename を除き,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 の両方のシステムで使用できます。

表 4-2 RTL LIB ルーチン
ルーチン名 説明
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 の両方のシステムで使用できます。

表 4-3 RTL OTS ルーチン
ルーチン名 説明
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 で新たに追加されたシステム・サービスの概要を示します。

表 4-4 新しいシステム・サービス
システム・サービス名 説明
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 で修正されたシステム・サービスの概要を示します。

表 4-5 修正されたシステム・サービス
システム・サービス名 説明
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
AVAILABLE_PATH_COUNT
ERASE_ON_DELETE
ERROR_RESET_TIME
HARDLINKS_SUPPORTED
MOUNT_TIME
MOUNTVER_ELIGIBLE
MPDEV_AUTO_PATH_SW_CNT
MPDEV_MAN_PATH_SW_CNT
MVSUPMSG
NOCACHE_ON_VOLUME
NOHIGHWATER
NOSHARE_MOUNTED
ODS2_SUBSET0
ODS5
PATH_AVAILABLE
PATH_NOT_RESPONDING
PATH_POLL_ENABLED
PATH_SWITCH_FROM_TIME
PATH_SWITCH_TO_TIME
PATH_USER_DISABLED
PROT_SUBSYSTEM_ENABLED
SCSI_DEVICE_FIRMWARE_REV
TOTAL_PATH_COUNT
VOLUME_EXTEND_QUANTITY
VOLUME_MOUNT_GROUP
VOLUME_MOUNT_SYS
WRITETHRU_CACHE_ENABLED
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 システムの新しい動作に対応して修正


前へ 次へ 目次 索引