mmap

2011-03-07 32 views
6

Linux çekirdeği 2.6 ile/proc/pid/mem dosyasında mmap'ing başarılı oldu mu? ENODEV (Böyle bir aygıt yok) hatası alıyorum. Benim çağrı şöyle görünür:mmap

char * map = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_SHARED, mem_fd, offset); 

Ve yürütme bu çağrıyı ulaştığında, ofset yığın eksi PAGE_SIZE üst kısmının değeri vardır, hata ayıklama sırasında,/proc/pid/maps dosyasına bakarak doğruladıktan . Ayrıca mmap'in ENODEV'e errno ayarladığı ptrace ile doğruladım.

cevap

17

Bkz. proc_mem_operations in /usr/src/linux/fs/proc/base.c: /proc/.../mem, mmap'u desteklemez.

+0

Çok teşekkürler! Ubuntu x86_64'ümde bu base.c dosyası var gibi görünmüyor -/usr/src dizinim boş. Hangi distro çalışıyorsun? –

+0

@Amittai: 'linux-source' paketini kurabilir veya Linux çekirdek kaynağını doğrudan kernel.org'dan alabilirsiniz. – ephemient

+0

hata 404 belirtilen bağlantılarda :( – ashish