Come per il design linux su x86 e ppc, lo spazio di indirizzi virtuali 4g è diviso in 3: 1. Gli indirizzi virtuali degli utenti sono fino a 3g.Perché è richiesto copy_to/from_user?
Ora se l'app utente esegue un ioctl passando un puntatore al buffer, il modulo del kernel, può eseguire direttamente una memcpy, ho provato e ha funzionato. => Perché abbiamo quindi bisogno di un utente copy_to/copy_from.
Nota: se la pagina viene sostituita, il gestore di pagine del kernel restituisce tale elemento ed è invisibile al modulo del kernel.
bisogno di idee yr ... commenti
ok, quindi il motivo principale è la gestione degli indirizzi ** bad **. – mSO
e se gli indirizzi sono validi (diciamo il caso migliore, nessuno sta facendo del male) la memcpy dovrebbe funzionare. – mSO
@Manish: Non è necessariamente "malizia", potrebbe semplicemente essere un semplice vecchio bug in userspace - tali bug dovrebbero essere gestiti con garbo dal kernel. E il 'memcpy()' funzionerà solo su alcune architetture. – caf