freedce-win32 - progress!
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Thu Sep 29 05:51:58 CDT 2005
i am making the "amateur" version of progress: i just had
echo_server.exe run for the first time on win32: echo_client.exe
has been running successfully since this morning.
rpcd.exe - the endpoint mapper - just crashed :)
hmmm... recv_state_timer is indicating Ping timeout, sending "Orphan
timeout", and then bombing out... hmmm...
this despite echo_server.exe happily running.
i don't really know enough to say what's going on here -
other than to consider quite cheerfully disabling the ping
rpc timer code with a _huge_ manic grin on my face :)
i have had to disable TCP (ncacn_ip_tcp) for now, and will try that
i've refrained from notifying wine-devel of status reports until i
actually had something working. for your benefit:
* i am using pthreads-win32, from sourceware.org, with pthread_self.c
patched to set sp->implicit = 0 instead of 1.
this gets the dcethreads test programs to work: whether this is
a good thing remains to be seen...
* i have removed the awfulness that is linux-specific (system call
wrapping) which previously made dcethreads non-portable to win32:
instead, you now must #define sys_pthread_create pthd4_create because
dcethreads provides pthd4_xxx.
* the dcethreads exception emulation library still uses setjmp and
longjmp and to my surprise and horror it actually works.
* i have tracked down an implementation of gettimeofday, and liberally
sprinkled it across the code, statically, instead of providing a
nice library routine
* i have provided a win32_winsock.c "wrapper" set of code to divorce
the #including of <windows.h> and <winsock.h> from everything else.
no, it is _not_ appropriate to put #include <windows.h> in the
freedce header files.
there are too many conflicts for that to be suitable. HANDLE,
handle_t, UUID, uuid_t rpc_binding_t ain't the half of it.
* i could not be arsed to write yet another version of uuid_create()
and the uuid_create() function in freedce conforms to the RFC - grabs
networking MAC address etc. etc.
therefore, rather than rip wine code from UuidCreate(), i decided
to call UuidCreate() - via a wrapper function.
this _could_ therefore get interesting, if someone decides to make
rpcrt4.dll utilise uuid_create() ... :)
* i have NOT done any proper file locking stuff - yet - in rpcd.exe.
there's a database that really needs to be locked: i aim to grab
APR's apr_open(), apr_flock() etc. etc. and utilise those because
i _so_ cannot be bothered to reinvent the wheel.
wine-devel team: you now have a partially-working and therefore
proof-of-concept port of freedce to win32.
there are many next steps that can be taken from here.
More information about the wine-devel