On Sat, 2007-11-03 at 19:16 -0600, Thayne Harbaugh wrote: > On Sat, 2007-11-03 at 20:13 +0100, Fabrice Bellard wrote: > > Thayne Harbaugh wrote: > > > On Sat, 2007-11-03 at 13:52 +0100, J. Mayer wrote: > > >> On Sat, 2007-11-03 at 01:21 +0000, Thiemo Seufer wrote: > > >> [...] > > >> But it could be great to group the syscalls by > > >> categories, or so. For example, putting all POSIX compliant syscalls in > > >> a single file and using a syscall table could make quite easy to develop > > >> a BSD-user target (I did this in the past, not in Qemu though...). POSIX > > >> compliant interfaces can mostly be shared with Linux ones and a lot of > > >> other syscalls are common to the 3 BSD flavors (Net, Open and Free..). > > >> Being able to add a BSD target sharing the same code would be a proof > > >> the code is flexible and well organized; I guess large parts of the > > >> Darwin user target could also be merged with a FreeBSD user target... > > > > > > That's a reasonable strategy as well. I've looked through some of the > > > darwin code and have considered how common code could be merged. > > > > I am strongly against such merges. > > > > Different OS emulation must be handled in different directories (and > > maybe even in different projects) as they are likely to have subtle > > differences which makes impossible to test a modification made for one > > OS without testing all the other OSes. > > Agreed.
If you take a close look, you'll find more variations between Linux ABIs for different CPUs than between all BSD implementations: common syscalls of all BSD flavors do the same thing (and have the same ABI whatever the CPU...). You'll also find very few variations between the syscalls common to BSD & Linux because most of those directly map POSIX defined functions. Then, following the given argument, we never should try to share any code between linux-user for different targets, as the Linux ABI and behavior is different for different CPUs... -- J. Mayer <[EMAIL PROTECTED]> Never organized