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
next.

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.

-- 
--
<a href="http://lkcl.net">http://lkcl.net</a>
--



More information about the wine-devel mailing list