Table Of Contents
| 1. | Portability | ||
| 2. | Process creation | ||
| 3. | Overlapped I/O | ||
| 4. | Bleem! |
Introduction
This is the sixteenth release of the Wine's kernel cousin publication. It's main goal is to distribute widely what's going on around Wine (the Un*x windows emulator). Wine 991114 has been released. The major improvements are:Mailing List Stats For This Week
We looked at 116 posts in 500K.
There were 31 different contributors. 19 posted more than once. 18 posted last week too.
The top posters of the week were:
1. Portability
Archive Link: "Portability"
People: Alexandre Julliard, , Patrik Stridval
Patrik Stridval kept enhancing his winapi_check tool (which is Wine home grown tool for checking coherency in various files - .spec / .h / .c) and came into some problems with portability issues and theHAVE_xxx macros. Wine (like many other Unix programs)
uses configure to determine, before compiling, which include files,
functions... are available on the target platform.
When a function (say gethostbyname) is to be used, it is
tested by configure, and if found, a HAVE_GETHOSTBYNAME
macro is defined.
Latest version of wineapi_check reports some incoherence between the
known HAVE_XXX macros and the effectively used
functions.
A discussion ensued between Patrik and Alexandre Julliard. The
output, and the general rule of thumb for handling this type of
function, is to:
HAVE_XXX macros for functions
in the main code, but just add a stub (possibly returning error
condition) in misc/port.c when the HAVE_XXX macro is not
defined (this could also be added to another .c file if the function
is only used in this place)
#ifdef /
#endif pairs all over the place, which degrades both
readability and maintenability.
2. Process creation
Archive Link: "Process creation"
People: Uwe Bonnes, Ove Kåven, Alexandre Julliard, , Ulrich Weigand, Peter Hunnisett
Peter Hunnisett while toying with WineLib, reported two issues. The first one was that CreateProcess implementation didn't use theCREATE_SUSPENDED flag, and thus made some
trouble. Alexandre Julliard and Ulrich Weigand discussed a bit the
implementation of such a feature and Alexandre provided the patch.
Basically, when a new process is created, several things have to be
taken into account:
3. Overlapped I/O
Archive Link: "Overlapped I/O"
People: Ove Kåven,
Moshe Vainer, while trying to let CodeBase 6.x work under Wine, pointed out that Wine doesn't correctly support overlapped I/O. Ove Kåven (at Moshe's request) gave some more information on this:4. Bleem!
Archive Link: "Bleem!"
People: , Ulrich Weigand, Ian Schmidt
Ian Schmidt, while trying to make Bleem! work under Wine, needed to emulate some more calls to the virtual memory manager VxD (which are by the way also needed by Internet Explorer). After some fights with Microsoft documentation, some fixes on VirtualAlloc, things went better (read: it ran further before crashing) until some explanation from Ulrich Weigand boiled the thing down to bad news: some tricky Bleem! code calls MapLS/UnMapLS in a certain way to get back the LDT base address, and then modify it for getting access to ring-0, and then create its own threads inside the VMM. This is certainly a very bad way of writing applications, and a sign of Windows 9x not being protected (as an OS). The conclusion is that it will be nearly impossible to let Bleem! (and other badly written applications) run under Wine. This type of behavior will not be permitted under NT, and some discussion went on for implementation of type of direct LDT access under Wine, but did not go very far.
Sharon And Joy
Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0. |