カーネル・サービスのコピー
目的
ユーザー・メモリーとカーネル・メモリーの間でデータをコピーします。
構文
#include <sys/types.h>
#include <sys/errno.h>
int copyin (uaddr, kaddr, count)
char *uaddr;
char *kaddr;
int count;パラメーター
| 項目 | 説明 |
|---|---|
| ユーザー・アドレス | ユーザー・データのアドレスを指定します。 |
| カドル | カーネル・データのアドレスを指定します。 |
| カウント | コピーするバイト数を指定します。 |
説明
コピーイン カーネル・サービスは、指定されたバイト数をユーザー・メモリーからカーネル・メモリーにコピーします。 このサービスは、システム・コールおよびデバイス・ドライバーの上位半分のルーチンがユーザー・データに安全にアクセスできるようにするために提供されています。 コピーイン サービスは、ユーザーがデータにアクセスするための適切な権限を持っていることを確認します。 また、システムのクラッシュの原因となるページング入出力エラーからのリカバリーも提供します。
コピーイン サービスは、ユーザー・プロセスでカーネル・モードで実行している場合にのみ呼び出す必要があります。
実行環境
コピーイン カーネル・サービスは、 プロセス環境 からのみ呼び出すことができます。
戻り値
| 項目 | 説明 |
|---|---|
| 0 | 操作が成功したことを示します。 |
| EFAULT | ユーザーがデータにアクセスするための十分な権限を持っていないか、または ユーザー・アドレス パラメーターに指定されたアドレスが無効であることを示します。 |
| EIO | データの参照中に永続入出力エラーが発生したことを示します。 |
| ENOMEM | 必要なページング操作のためのメモリーが不足していることを示します。 |
| ENOSPC | ファイル・システムまたはページング・スペースが不十分であることを示します。 |