__mount() - 使用可能ファイル・システムの作成

標準

標準/拡張機能 C/C++ 依存項目
z/OS®UNIX 両方 OS/390 V2R9

形式

#define _OPEN_SYS
#include <sys/stat.h>
#include <sys/mntent.h>

int __mount(struct mnte2 *mnte, char *sysname);

機能説明

ファイル・システムを階層ファイル・システムに追加します。階層ファイル・システムの複数の場所で、同じ ファイル・システムをマウントすることはできません。

ファイル・システムをマウントするには、呼び出し元が 許可プログラムであるか、あるいは該当する権限を持つユーザー用に 実行されているプログラムでなければなりません。

エレメントの説明

シスプレックス内の HFS ファイルをマウントしたり、そのマウントを変更する場合は、アプリケーションでは mnte の値を次のように設定する必要があります。

mnt2h_cbid
mnte2 制御ブロック ID。「MNT2」に初期設定する。
mnt2h_cblen
mnte2 のサイズ。構造体 mnte2 のサイズに初期設定する。
mh2_cursor
内部カーソルが格納される。この値は、はじめから 0 に設定され、その後の呼び出しでも変更されてはならない。
mnth_devno
必要に応じて、装置番号が格納される。
mh_bodylen
w_mntent2 の mnte2 サイズ。w_mntent2 本体のサイズに初期設定されなければならない。
rsvd
このフィールドはすべてゼロに設定されなければならない。
mnt2_fstype
ファイル・システムのタイプ。
mnt2_mode
ファイル・システムのマウント・モード。マウント・モードと追加のマウント・オプションを指定するフラグ・フィールド。
mntentfsaunmount
1 の場合、ファイル・システムがマウントされた後、 システムがシスプレックスを離れるときにファイル・システムはアンマウントされる。0 の場合、mntentfsnoautomove の設定が使用される。下記の mntentfsnoautomove を参照してください。__mount() を呼び出す前に、このビットを変更し、要求ビット mntentnewauto を 1 に設定することにより、ファイルのマウント後に、このオプションを変更できる。0 に変更する場合、自動移動または移動なしを指示するために mntentfsnoautomove も設定 してください。
mntentfsclient
0 の場合、このファイル・システムはシスプレックス・クライアントである。1 の場合、このファイル・システムはシスプレックス・クライアントではない。
注: mntentfsclient は入力パラメーターではないことに注意してください。
mntentfsnoautomove
0 の場合は、ファイル・システムのマウント後に、自動的に移動できる。1 の場合は、ファイル・システムのマウント後に、自動的に移動されない。__mount() を呼び出す前に、このビットを変更し、要求ビット mnte2ntnewauto を 1 に設定することにより、ファイルのマウント後に (mntentfsaunmount がゼロの場合)、もう一方のモードに変更できる。
注: このビットの設定は、mntentfsaunmount が 0 の場合にだけ適用されます。
mntentfsmodenosec
1 の場合、このファイル・システムはセキュリティー検査を強制しない。0 の場合、このファイル・システムはセキュリティー検査を強制する。
mntentfsmodeexport
0 の場合、このファイル・システムは DFS によってエクスポートされていない。1 の場合、このファイル・システムは DFS によってエクスポートされた。
mntentfsmoderdonly
0 の場合、このファイル・システムは読み取り/書き込みファイル・システムとしてマウントされる。1 の場合、このファイル・システムは読み取り専用ファイル・システムとしてマウントされる。
mntentfsmodenosuid
1 の場合、このファイル・システムに常駐するプログラムに対する SETUID および SETGID モード・フラグが無視される。0 の場合、このファイル・システムに常駐するプログラムに対する SETUID および SETGID モード・フラグが強制される。この情報は関数として戻されるが、変更してはならない。
mnt2_dev
このファイル・システム内のすべてのファイルに対して stat が戻されるデバイスの番号。__mount() への入力時には設定しない。
mnt2_parentdev
親ファイル・システムの st_dev。__mount() への入力時には設定しない。
mnt2_rootino
マウント・ポイントの ino。__mount() への入力時には設定しない。
mnt2_status
ファイル・システムの状況。このフィールドは入力パラメーターではない。要求が正常に処理されたあと、出力時にテストできる。
mnt2_ddname
マウント時に指定された DD 名。1 ~ 8 文字が許可されている。
mnt2_fstname
FILESYS ステートメントで指定されたファイル・システム・タイプの名前。 マウントを実行するファイル・システムの名前。この 8 文字の名前は、このファイル・システム用 の BPXPRMxx parmlib メンバーに ある FILESYSTYPE ステートメントの TYPE オペランドと 一致しなければならない。1 ~ 8 文字が許可されている。
mnt2_fsname
マウントされるファイル・システムの名前。これは、システム内で固有の名前にする必要がある。階層ファイル・システム (HFS) データ・セットの場合、この名前は、すべて大文字で指定する 1 ~ 44 文字の MVS™ データ・セット名である。 この名前は NULL 文字で終了する。
mnt2_pathlen
マウント・ポイント・パスの長さ。
mnt2_mountpoint
ファイル・システムがマウントされるディレクトリーの名前。1 ~ 1023 文字が許可されている。ファイル・システムがマウントされているマウント・ポイント・ディレクトリーも参照する。
mnt2_parmoffset
mnt2_fstype からのマウント・パラメーター mnt2_parmreturn のオフセット。マウントを実行する物理ファイル・システムに渡されるパラメーターも参照する。このパラメーターが不要な場合もある。パラメーターの形式と内容は、物理ファイル・システムで判別される。階層ファイル・システム (HFS) のデータ・セットには、パラメーターは必要ない。
mnt2_parmlen
サイズが mnt2_parmreturn であるマウント・パラメーターの長さ。パラメーター引数の長さを参照することもある。最大長は 1024 文字。階層ファイル・システムのデータ・セットには、パラメーターは必要ない。
mnt2_sysname
ターゲット・システムの名前。1 ~ 8 文字が許可されている。ターゲット・システムの変更は、必ず sysname で指定する。ほかの呼び出しの場合は、必ず、sysname に NULL を指定する。NULL を指定しないと、ターゲット名が変更される。sysname を指定するとき、マウント関数を呼び出す場合は mnte2ntchange フラグをオフに設定し、変更マウント関数を呼び出す場合は mnte2ntchange フラグをオンに設定する。マウント時にシステムを指定すると、ファイルがそのシステムにマウントされ、マウント変更時にシステムを指定すると、現在そのシステムにマウントされている位置からファイル・システムが移動される。
mnt2_qsystem
静止システムの名前。1 ~ 8 文字が許可されている。ただし、ブランクが埋め込まれ、NULL 終了文字は含まれない。このフィールドは、getmntent() からの出力専用フィールドである。
mnt2_fromsys
ファイル・システムが移動されたシステムの名前。
mnt2_flags
要求フラグを格納するフィールド。既存のマウント済みファイル・システムの変更を指定するフラグ・フィールド。
mnte2ntnewauto
このフラグは、mnte2ntfsnoautomove に設定された値に応じて automove 状態に影響するモードを変更させる。 mnte2ntfsnoautomove の説明を参照。
mnte2ntchange
この w_mntent 内の要求は、既存状況またはモードの変更である。すべての変更マウント要求において、このフラグはオンに設定されなければならない。w_mntent 構造体は、mnte2ntfsname フィールドまたは mnte2ntmountpoint フィールド、および mnte2ndpathlen フィールドを変更する必要がある。ディレクトリーのマウントを要求する場合は、このフラグをオフに設定しなければならない。
mnt2_status2
ファイル・システムの状況の拡張。
mnt2_success
このフィールドには、ファイル・システムのコレクションの移動時に、正常に移動されたファイル・システムの数が戻される。ほかの目的で使用されることはない。
parm_point
このフィールドには、ファイル・システムのマウント時に使用されるマウント・ポイント・パラメーターが格納される。mnte2 構造体の個別のフィールドであり、w_mnte2 本体に続けて割り振られる。mnt2_parmoffset フィールドには、parm_point の開始までのオフセットが格納される。
mnt2_syslistlength
システム・リストの長さ。
mnt2_syslistoffset
システム・リストのオフセット。
mnt2_aggnamelength
mnt2_aggname の中の集合名の長さ。この長さは、ヌル終了文字を含まず、mnt2_aggnameoffset がゼロ以外の値を持つ場合にのみ有効。
mnt2_aggnameoffset
mnt2_aggname の w_mntent からのオフセット。この値が 0 の場合、集合名は戻されません。

mnte3 構造体を mnte2 構造体の 代わりに使用することもできます。以下の mnte3 フィールドは、 対応する mnte2 のフィールドと等価です。ただし、mnte3 構造体の使用を指定するために、 ヘッダー・フィールドに適切な変更が加えられています。

mnt3h_cbid
mnte3 制御ブロック ID。 「MNT3」に初期設定する。
mnt3h_cblen
mnte3 サイズ。構造体 mnte3 のサイズに初期設定する。
mh3_cursor
mh3_devno
mh_bodylen
w_mntent3 の mnte3 サイズ。w_mntent3 本体のサイズに 初期設定されなければならない。
rsvd
mnt3_fstype
mnt3_mode
mnt3_dev
mnt3_parentdev
mnt3_rootino
mnt3_status
mnt3_ddname
mnt3_fstname
mnt3_fsname
mnt3_pathlen
mnt3_mountpoint
mnt3_parmoffset
mnt3_parmlen
mnt3_sysname
mnt3_qsysname
mnt3_fromsys
mnt3_flags
mnt3_status2
mnt3_success

戻り値

正常に実行された場合、__mount() は 0 を戻します。

__mount() が非同期的に進行している場合は、1 が戻されます。

正常に実行されなかった場合、__mount() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EBUSY
指定されたファイル・システムが使用できません。
EINVAL
パラメーターが間違って指定されました。filesystypemtm が正しいかを確認してください。このエラーに考えられるほかの理由として、マウント・ポイントがファイル・システムのルートであること、あるいはファイル・システムが既にマウント済みであることが あります。
EIO
入出力エラーが発生しました。
ELOOP
ループがシンボリック・リンクに存在しています。pathname の解決 で POSIX_SYMLOOP (limits.h ヘッダー・ファイルで 定義) を超えるシンボリック・リンクが検出されると、このエラーが 発行されます。
ENOENT
マウント・ポイントが存在しません。
ENOMEM
このファイル・システムに必要な情報を保管するのに 使用できる十分なストレージがありません。
ENOTDIR
マウント・ポイントがディレクトリーではありません。
EPERM
マウントを発行するには権限が必要です。

関連情報