Bir çeşit karakter aygıtı uygulamam ve copy_ from_user işleviyle ilgili yardıma ihtiyacım var. Ben kullanıcı uzayında da başlatmak ve 'yazma' fonksiyonunu kullanarak karakter aygıtına my_struct için işaretçi geçmesiLinux Kernel: copy_from_user - işaretçilerle yapı
struct my_struct{
int a;
int *b;
};
:
Ben bir yapı var. Kernel'in Uzay karakterindeki 'yazma' fonksiyonunda, onu bir “char” dan bu yapıya çevirdim. Kmalloc kullanarak bir yapı için biraz bellek ayırdım ve copy_from_user
'u buna giriyorum.
Basit 'int a' için iyidir, ancak b değeriyle değil, b değerinin yalnızca işaretçisini (adres) kopyalar, bu yüzden şimdi Kernel Space'de çalışıyorum ve işaret eden bir işaretçi ile çalışıyorum. Bir kullanıcı alanı belleği. Bu yanlış mı ve ben doğrudan kullanıcı alanı işaretçisi erişmem gerekir ve copy_from_user
benim her bir işaretçi benim yapı ve copy_to_user
işlevini kullanarak "Oku" işlevinde her işaretçi geri kopyalamak zorunda?
Ayrıca, içlerinde işaretçi içeren yapıları alan herhangi bir syscalls veya ioctls düşünemiyorum. Dizeleri olanların bile, yapıda bir dizi char grubu olacaktır. Her işaretçi üyesi için bunu yapmak için kod yazmak oldukça can sıkıcı olması, bununla ilgili bir şey olabilir. :-) – asveikau
@asveikau: 'readv()' ve 'writev()'? – caf