2

uaccess.hで宣言されているcopy_from_user関数は、(void __user *)fromポインターを変更しますか?ポインタは関数宣言でconstとして宣言されておらず、ポインタが指す内容のみが宣言されています。

私が尋ねる理由は、copy_from_userを2回使用し、2番目のcopy_from_userを最初のcopy_from_userが終了した場所からコピーしたいからです。

私はこのようなことをすることを計画していました、それはうまくいくことが保証されていますか?

//buf is a user pointer that is already defined
copy_from_user(my_first_alloced_region, buf, some_size);
//do stuff
copy_from_user(my_second_alloced_region, buf + some_size, some_other_size);

前もって感謝します。

4

1 に答える 1

3

呼び出し先関数は、ポインター値を引数として関数に渡すだけなので、ポインター自体を変更することはできません。引数がconst型へのポインターとして宣言されている場合、呼び出し先は、ポイントされているものを変更することはできません(少なくともconst、ポインターの-nessをキャストするキャストなしでは)。呼び出し元自体のポインター値を変更する唯一の方法は、呼び出し先にポインター間型を渡すことです。

于 2012-09-18T02:59:56.440 に答える