Low-level coding
Aaron Slunt
tonglebeak at gmail.com
Mon Sep 11 15:42:51 CDT 2006
Saulius Krasuckas wrote:
> * 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
>
>
Thanks all for the replies. I took note to the JanitorialProjects page,
and found the DllCanUnloadNow project.
I wrote a patch for the dinput.c one, to start with getting familiar
with wine's code, and it compiles fine, but I have no way (at least know
of a way) of testing if the implementation actually works or not. It
looks like it should, and it compiles, but I don't know for sure how to
test it out...I've skimmed through the wiki, but I need some human help
as well :(
And I guess I really meant "lower-level" coding, C looks scary as I'm
not familiar with it and it looks more complex than other languages like
Java, but the same syntax makes it a lot easier :O
Thanks for the support, makes things much easier :)
More information about the wine-devel
mailing list