Wine kernel acceleration module?
Francois Gouget
fgouget at free.fr
Sun Jan 19 22:04:32 CST 2003
On Sun, 19 Jan 2003, Shachar Shemesh wrote:
> Francois Gouget wrote:
>
> >So you're better of with the kernel module if the bug is in the
> >application, and you're better of with shm if the bug is in the server.
> >Then it's a matter of which one is more likely.
> >
> I'm not in front of the sources at the moment. How big is the wineserver
> at the moment?
>
> If it's rather big (and I rather suspect it is), then it seems obvious
> which one is more likely.
$ find server -name "*.[ch]" | xargs cat | wc -l
22452
$ find . -name "*.[ch]" | xargs cat | wc -l
1237362
$ find dlls files graphics if1632 library loader memory misc miscemu
msdos objects ole relay32 scheduler win32 windows -name "*.[ch]" | xargs
cat | wc -l
861271
So depending how you count the server represents between 1.8% and 2.6%
of the Wine code. That's far from being a big portion of Wine.
> The windows apps are released apps that were working on Windows NT.
> The wineserver, on the other hand, is a piece of Alpha software that
> has not seen too much pounding into. I think that a bug in the server
> is MUCH MUCH MUCH more likely to happen.
That's not supported by the above, and especially not by experience. How
often have you seen applications crash in Wine? Me i see them crash
every day (but of course being a Wine developper I am only interested by
applications that crash). But most of the time it is the application
that crashed, not the Wine server. In fact, I have not had a Wine server
crash in at least a month.
The thing is that yes, applications may be stable when they run on
Windows NT, but they are running in Wine and make heavy use of the Wine
libraries (~70% of the code). And in fact, I forgot the most important
line in my table. Here it is duely corrected:
| Current | Kernel | Shm
------------------+---------------+----------------+--------------------
Bug in a Wine | Process | Process | Wine
library | | |
------------------+---------------+----------------+--------------------
Bug in a Windows | Process | Process | Wine
application | | |
------------------+---------------+----------------+--------------------
Bug in the server | Wine | Machine | Wine
> I think the best approach is a hybrid one. We have a kernel module that
> does only the bare minimum required in the kernel. Everything else is
> done using user-mode processes.
There I completely agree with you. Only the speed-critical items should
be handled by the kernel module. Ideally it would only provide a couple
of concepts (e.g. HANDLE <-> fd mapping) that would allow us to have
good performance while only doing a minimum in the kernel (e.g. not
doing the Windows <-> Unix path conversions). But that's probably easier
said than done and the above handle and file descriptor example should
be taken more as an illustration than as a hard and fast recommendation
on the way to do it :-)
[...]
> 4. Rebooting wine does not require rebooting the kernel (machine), or
> even unloading and reloading the kernel module.
Whatever the scenario I am not sure there is anything forcing us to
restart the Wine server for 'rebooting' the Wine environment. The only
thing requiring a Wine server restart would be upgrades. But even a with
a kernel module, unloading and reloading the module should be enough.
--
Francois Gouget fgouget at free.fr http://fgouget.free.fr/
Avoid the Gates of Hell - use Linux.
More information about the wine-devel
mailing list