関連する構造は次のようになります。struct node {int a; int b; }
struct ioctl_node {
struct node **ptr;
int count; //Stores the no of pointers this ptr is pointing to.
};
ユーザースペースでは、ioctl_nodeの構造に。を入力しましたcount = 3
。そしてptr[0]
、ptr[2]
はノード型の2つの構造体を指していますが、ptr[1]
はNULL
です。これをカーネルに渡してほしい。この情報をユーザースペースからカーネルスペースに渡すためにioctl呼び出しを発行しました。
私はカーネル空間で次のことをしました。
struct ioctl_node k_node;
copy_from_user(&k_node, arg, sizeof(struct ioctl_node)) //arg is the source
//k_node.count is showing the right value what I have set in the user space.
struct node *tmp = NULL;
それから私はそうしました、copy_from_user(&tmp, k_node.ptr, sizeof(struct node *)
そしてこの呼びかけも成功を返しています。**ptr
しかし、カーネル空間にコンテンツ全体を適切にコピーするのに苦労しています。誰か助けてください、どうすればそれができますか?次のcopy_from_userを実行して、すべてのコンテンツをコピーするにはどうすればよいですか。試しましたが、コピーエラーが発生しました。