Date: Fri, 29 Jul 2005 20:32:39 +0200 From: "jean-marc DETREZ" <jm.detrez@cegetel.net> To: <barner@FreeBSD.org>, <wine-devel@winehq.com>, <emulation@freebsd.org> Subject: TR: wine on FreeBSD with patch Message-ID: <20050729183247.2DC011A44F2@smtp.cegetel.net>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
------=_NextPart_000_0012_01C5947C.AB54E3D0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
=20
=20
_____ =20
De : jean-marc DETREZ [mailto:jm.detrez@cegetel.net]=20
Envoy=E9 : vendredi 29 juillet 2005 20:28
=C0 : 'Alexandre Julliard'
Cc : 'barner@FreeBSD.org'; 'wine-devel@winehq.com'; =
'emulation@freebsd.org';
'Dmitry Timoshkov'; 'Gerald Pfeifer'
Objet : TR: wine on FreeBSD with patch
=20
=20
=20
_____ =20
De : jean-marc DETREZ [mailto:jm.detrez@cegetel.net]=20
Envoy=E9 : vendredi 29 juillet 2005 20:18
=C0 : 'Alexandre Julliard'
Cc : 'barner@FreeBSD.org'; 'Gerald Pfeifer'; 'wine-devel@winehq.com';
'emulation@freebsd.org'; 'Dmitry Timoshkov'
Objet : wine on FreeBSD
=20
Hi,=20
=20
With the differents mails i receive from users or wine=92s developers, =
i
think that:
=20
- Dislike OpenBSD or SRV4, mincore did=92nt fail if the =
page is
not mapped no [ENOMEM] error condition.
=20
- the FreeBSD man pages say that mmap would fail with [ENOMEM]
error condition if address is in use but in the reality it seems always
return the start address.
=20
So for to use wine on FreeBSD before doing a more clean patch i propose =
to
add this to mmap . I know that it would map memory pages without verify
before that the pages is=92nt already map but the man pages say it must =
failed
so I=92m just verify that the result is equal to start address the mmap =
call
asking for.
=20
=20
I do that only when creating System heap because requesting =
mmap
for 0x800000 start address (without MAP_FIXED) always fail and prevent =
wine
running on FreeBSD.
=20
I=92ll do more test to implement a try_mmap_fixed function =
working
on FreeBSD like this done for SRV4,NetBSD and DARWIN.
=20
Jean-marc
=20
=20
=20
=20
------=_NextPart_000_0012_01C5947C.AB54E3D0
Content-Type: application/octet-stream;
name="mmap.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="mmap.patch"
--- mmap.orig Mon Jun 20 13:43:47 2005=0A=
+++ mmap.c Fri Jul 29 18:57:55 2005=0A=
@@ -207,7 +207,13 @@ void *wine_anon_mmap( void *start, size_=0A=
#elif defined(__svr4__) || defined(__NetBSD__) || defined(__APPLE__)=0A=
if ( try_mmap_fixed( start, size, prot, flags, fdzero, 0 ) )=0A=
return start;=0A=
-#endif=0A=
+#elif defined(__FreeBSD__)=0A=
+ if (start =3D=3D (void *)0x80000000) =0A=
+ { /* assume that was not very clean to do that but mincore didnt =
work to test if page is mapped in FreeBSD */=0A=
+ if (mmap (start, size, prot, flags | MAP_FIXED, fdzero, 0) =
=3D=3D start)=0A=
+ return start;=0A=
+ }=0A=
+#endif =0A=
}=0A=
return mmap( start, size, prot, flags, fdzero, 0 );=0A=
#else=0A=
------=_NextPart_000_0012_01C5947C.AB54E3D0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050729183247.2DC011A44F2>
