Low-level coding
Saulius Krasuckas
saulius2 at ar.fi.lt
Mon Sep 11 03:43:50 CDT 2006
* On Sun, 10 Sep 2006, Aaron Slunt wrote:
> I was interested in starting to play with wine and maybe even build a
> few functions for it...but then I realized that it's low-level coding,
> something I'm not familiar with (higher level is more of my expertise).
> Correct me if I'm wrong, I could be looking at the wrong files :S.
You are welcome! :)
Can you refer to exact file names your were looking at?
> Does anyone have any good places to go to to learn about low-level
> coding, and afterwards coding for wine specifically?
For me Wine embraces libs for quite wide spectra of functions and not so
few ioctls:
$ grep -rI "ioctl[^a-zA-Z0-9]*(" dlls/ | wc -l
276
$ grep -rIc "ioctl[^a-zA-Z0-9]*(" dlls/ | grep -v :0
dlls/avicap32/avicap32_main.c:4
dlls/dinput/joystick_linux.c:10
dlls/dinput/joystick_linuxinput.c:7
dlls/dinput/effect_linuxinput.c:2
dlls/iphlpapi/ifenum.c:9
dlls/kernel/comm.c:4
dlls/kernel/sync.c:1
dlls/kernel/oldconfig.c:1
dlls/ntdll/cdrom.c:57
dlls/ntdll/directory.c:7
dlls/ntdll/file.c:1
dlls/ntdll/serial.c:10
dlls/ntdll/tape.c:11
dlls/qcap/v4l.c:17
dlls/winedos/int13.c:1
dlls/winedos/ppdev.c:8
dlls/winmm/joystick/joystick.c:4
dlls/winmm/wineaudioio/audio.c:6
dlls/winmm/wineoss/audio.c:61
dlls/winmm/wineoss/dscapture.c:11
dlls/winmm/wineoss/dsrender.c:15
dlls/winmm/wineoss/midi.c:5
dlls/winmm/wineoss/mixer.c:17
dlls/winmm/wineoss/mmaux.c:3
dlls/wnaspi32/aspi.c:2
dlls/ws2_32/socket.c:2
As for me, low level coding is writing a device driver for linux kernel
:-] and using it from the Wine code.
But there is also a bunch of hardware platform specific issues also, like
advanced signal handling which may be needed for example to make remote
process operations work [1] or to implement ntoskrnl and make safedisc
work [2].
All that stuff needs knowledge of glibc programming at least, I guess.
So maybe you should read recent libc.pdf if you are interested into this
area?
Also, some guys are working on DCOM/OLE stuff [3] which seems to be quite
low level for me sometimes (wire-protocol compatibility).
Going further (upper?) most of Wine code tries to use WinAPI, which I
doubt should be considered as low-level. To get into basic Wine coding it
may be usefull to review Janitorial Projects [4] and maybe to hang on one
of it? :)
Without naming exact Wine component or functionality you are interested in
I doubt someone will answer you more specifically :-P
[1] http://wiki.winehq.org/RemoteProcessOperations
[2] http://wiki.winehq.org/VitaliyMargolen
[3] http://wiki.winehq.org/RobShearman
[4] http://wiki.winehq.org/JanitorialProjects
More information about the wine-devel
mailing list