MOUNT(2) — NEWS-OS Programmer’s Manual
名称
mount − ファイルシステムをマウントする
形式
#include <sys/mount.h>
int mount(type, dir, M_NEWTYPE|flags, data)
char ∗type;
char ∗dir;
int flags;
caddr_t data;
解説
mount() は、ディレクトリにファイルシステムを付加します。処理 が正常に終了した後では、ディレクトリ dir への参照は、新たにマウントされたファイルシステム上のルート ディレクトリを参照します。 ディレクトリ dir は、パス名を含みナルで終了する文字列を示すポインタです。 dir は、既に存在していなければならなく、 ディレクトリでなければなりません。 そのディレクトリのマウントされる前の内容は、ファイルシステム がマウントされている間はアクセスすることはできません。 スーパユーザのみ mount() を起動できます。 引数 flags は、以下のビットの論理値 OR で得られます。 (デフォルトは、 <sys/mount.h> で定義。)
M_RDONLY
リードオンリのファイルシステムをマウントする。
M_NOSUID
実行時に set-uid ビットを無視する。
M_NEWTYPE
このフラグは、常にセットされていなければいけない。
M_GRPID
BSD ファイルクリエーションセマンティックスを使用する ( open(2) を参照)。
M_REMOUNT
現在マウントしているマウントのオプションを変更する。
M_NOSUB
このファイルシステムの下へのマウントを禁止する。
物理的に書き込み 保護されている場合や、磁気テープのファイルシステムは 読み出し専用でマウントしなければなりません。そうで なければ、明示的な書き込みが行われたかどうかに かかわらず、アクセス時刻が更新された時に エラーが発生します。 type 文字列は、ファイルシステムのタイプを示します。 data は、マウント する特殊なタイプの引数を含む構造体を示すポインタです。 以下に、 サポートされているファイルシステムのタイプと、 その各々の特殊なタイプの引数を示します。
"4.3"
struct ufs_args {
char∗fspec;/∗ マウントするブロックスペシャルファイル ∗/
};
"nfs"
#include <nfs/nfs.h>
#include <netinet/in.h>
struct nfs_args {
struct sockaddr_in ∗addr; /∗ ファイルサーバアドレス ∗/
fhandle_t∗fh;/∗ マウントすべきファイルハンドル ∗/
intflags;/∗ フラグ ∗/
intwsize;/∗ 書き込むバイトサイズ ∗/
intrsize;/∗ 読み出すバイトサイズ ∗/
inttimeo;/∗ 0.1 秒単位でのイニシャルタイムアウト ∗/
intretrans;/∗ リトライ送信回数∗/
char∗hostname;/∗ サーバのホスト名 ∗/
intacregmin;/∗ attr キャッシュファイル 最小時間 (秒) ∗/
intacregmax;/∗ attr キャッシュファイル 最大時間 (秒) ∗/
intacdirmin;/∗ attr キャッシュディレクトリ 最小時間 (秒) ∗/
intacdirmax;/∗ attr キャッシュディレクトリ 最大時間 (秒) ∗/
char∗netname;/∗ サーバのネット名 ∗/
};
リターン値
正常に終了した場合には 0 を返します。 そうでない場合は、 −1 の値が返され、 エラーを示す errno がセットされます。
エラー
以下に示されている項目のうち 1 つが発生すると、 mount() は失敗します。
EPERM 呼び出しユーザがスーパーユーザではない。
ENODEV type で指定されたファイルシステムのタイプが 有効でない、または、システムに組み込まれていない。
ENAMETOOLONG dir のパス名の構成要素の長さが 255 キャラクタを超過、又は dir の全体のパス名の長さが 1023 キャラクタを超過。
ENOENT dir の構成要素が存在しない。
EACCES dir のパスプレフィックスの構成要素に 対する検索を抑制する。
ENOTDIR dir に指定されたファイルがディレクトリではない。
EBUSY 別のプロセスが現在 dir を参照している。
EFAULT dir がプロセスの割り当てられたアドレススペース以外を指す。
ELOOP dir のパス名の処理で遭遇した シンボリックリンクの数が多すぎる。 4.2 ファイルシステムに関しては、 以下に示されている項目のうち 1 つが発生すると、 mount() は失敗します。
ENOTBLK fspec がブロック型のデバイスではない。
ENXIO fspec のメジャーデバイス番号が範囲外である (これは、対応する ハードウェアのためのデバイスドライバが存在していないことを示す)。
EMFILE マウントテーブルにスペースが残っていない。
EINVAL ファイルシステムのスーパブロックが 誤ったマジック番号を持っていた、あるいは、 ブロックサイズの範囲外であった。
ENOMEM ファイルシステムのシリンダグループ情報を読み出すのに、 十分なメモリがない。
ENOTDIR fspec のパスプレフィックスの構成要素がディレクトリではない。
ENAMETOOLONG fspec のパス名の構成要素の長さが 255 キャラクタを超過、又は fspec の全体のパス名の長さが 1023 キャラクタを超過。
ENOENT fspec の構成要素がない。
EACCES fspec のパスプレフィックスの 構成要素に対する検索を抑制する。
EFAULT fspec がプロセスの割り当てられたアドレススペース以外を指す。
ELOOP fspec のパス名の処理で遭遇した シンボリックリンクの数が多すぎる。
EIO ファイルシステムからの読み出し、 ファイルシステムへの書き込みの間に 入出力エラーが発生した。
関連事項
バグ
エラーコードの中には、もっと明瞭なメッセージを出力するよう 変更する必要があるものもあります。
NEWS-OSRelease 4.2.1R