copyout(9)
|
FreeBSD 一般コマンドマニュアル
|
copyout
copyout
#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 からカーネル空間のアドレス
kaddr へ len バイトのデータをコピーします。
copyout() カーネル空間のアドレス kaddr からユーザー空間のアドレス
uaddr へ len バイトのデータをコピーします。
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