Le samedi, 23 jul 2005, à 00:05 Europe/Paris, Jim C. Brown a écrit :
On Fri, Jul 22, 2005 at 08:45:16PM +0200, Gwenole Beauchesne wrote:
AFAICS, slirp code in qemu cvs and other projects works on x86_64.
Nope.
Then please provide a clear testcase. My testing limited to 32-bit
Ubuntu Live as guest on 64-bit Mandriva Linux 2005 and downloading
files from FTP performed very well. The original author of this thread
was using 0.7.0 and the patch he posted is not enough for 0.7.0
(SIZEOF_CHAR_P was not defined so sizeof(structure) were bogus).
The current implementation in CVS will work as is on x86_64 because
dynamically allocated data through malloc() and global data fit under
32-bit. The former is true because malloc()'ed data is small enough to
not use mmap() and reside in the data segment. Now, you will get
crashes if you explicitly set an M_MMAP_THRESHOLD < sizeof(structures
used in the slirp code).
A more complete solution than used in current CVS can use
qemu_{malloc,realloc,*}() instead with special provisions to returning
memory with addresses that fit under 32-bit. qemu already does this but
only for (deprecated) qemu-fast at this time.
_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel