copyinstr(9) FreeBSD 一般コマンドマニュアル

copyinstr

前のページ 上に戻る 次のページ

copyinstr


     #include <sys/systm.h>

     int
     copyin(const void *uaddr, void *kaddr, size_t len);

     int
     copyout(const void *kaddr, void *uaddr, size_t len);

     int
     copystr(const void *kfaddr, void *kdaddr, size_t len, size_t *done);

     int
     copyinstr(const void *uaddr, void *kaddr, size_t len, size_t *done);


解説

     copy 関数群は連続したデータをあるアドレスから別のアドレスへコピーするよう
     デザインされています。 copystr() 以外の関数は、ユーザー空間からカーネル空
     間へ、あるいは反対向きにデータをコピーします。

     copy 関数群は以下の機能を提供します。

     copyin()      ユーザー空間のアドレス uaddr からカーネル空間のアドレス
                   kaddrlen バイトのデータをコピーします。

     copyout()     カーネル空間のアドレス kaddr からユーザー空間のアドレス
                   uaddrlen バイトのデータをコピーします。

     copystr()     カーネル空間のアドレス kfaddr からカーネル空間のアドレス
                   kdaddr へヌル文字で終端された最大 len 文字の文字列をコピー
                   します。末尾のヌル文字を含む実際にコピーされた文字数が
                   *done に返されます。

     copyinstr()   ユーザー空間のアドレス uaddr からカーネル空間のアドレス
                   kaddr へヌル文字で終端された最大 len 文字の文字列をコピーし
                   ます。末尾のヌル文字を含む実際にコピーされた文字数が *done
                   に返されます。


戻り値

     それぞれの copy 関数は成功した時に 0 を、不正なアドレスに遭遇した時に
     EFAULT を返します。さらに、 copystr() および copyinstr() 関数は文字列が
     len バイトよりも長い時に ENAMETOOLONG を返します。


関連項目

     fetch(9), store(9)

FreeBSD 4.4                     January 7, 1996                    FreeBSD 4.4

ABELNET VPSサービス