tail head cat sleep
QR code linking to this page

manページ  — COPY

名称

copy, copyin, copyout, copystr, copyinstr – カーネルコピー関数

内容

書式

#include <sys/types.h>
#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 に返されます (, done NULL ではない場合)。
copyinstr()
  ユーザ空間のアドレス uaddr からカーネル空間のアドレス kaddr へヌル文字で終端された最大 len 文字の文字列をコピーします。 末尾のヌル文字を含む実際にコピーされた文字数が *done に返されます (, done NULL ではない場合)。

戻り値

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

関連項目

fetch(9), store(9)

COPY (9) January 7, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

What is this horrible fascination with Unix? The operating system of the 1960s, still gaining in popularity in the 1990s.
— Donald A. Norman