okay, it's not time to get totally excited yet, but i have successfully compiled - and run, and confirmed as working on ros - some of the test programs from dcethreads (http://sf.net/projects/freedce) when cross-compiled with mingw32 and linked with pthreads-win32.
this is _very_ significant because it means that there is a good chance of replicating entegrity's work - PC-DCE - with zero modifications to the freedce source code.
i've cut out entirely the dcethreads "emulation" stuff, which means that dcethreads posix draft 4 compliance - including the ability to pass on thread cancellation across an RPC client/server app boundary, and including the ability to pass on signals across an RPC client/server app boundary - are completely out the window...
... but i don't care.
so.
the bits "remaining" in my hacked-together-version of dcethreads is _just_ the exception handling - exc_handling.c and exc_handling.h pretty much.
that means that the DCE "TRY", "RAISE", "CATCH" and "EXCEPT" macros are all there.
it's early days, but this is good news.
now. here's what i don't want to hear from anyone:
q)
"why in hell's name are you doing this? why can't you just remove all references to posix threads and all references to DCE/RPC exception handling?"
a)
lkcl@highfield:~/sf/freedce/freedce$ find . | xargs grep pthread | wc 770 3965 64010 lkcl@highfield:~/sf/freedce/freedce$ find . -name "*.[ch]" | xargs grep ENDTRY | wc 105 248 4490 lkcl@highfield:~/sf/freedce/freedce$ find . -name "*.[ch]" | xargs grep RAISE | wc 202 731 12799 lkcl@highfield:~/sf/freedce/freedce$ find . -name "*.[ch]" | xargs grep CATCH | wc 217 685 12392
in short: modifying several thousand lines of code, by hand, is something that microsoft can happily pay some donut code-dunker to do (and did, probably back in 1990-1993) but i sure as hell ain't doing it for a proof-of-concept bit of work.
q) "why are you doing this and doing it to _us_? go away!!"
a) you are inflicting much pain upon yourselves, even though you probably don't know it. don't like what i'm doing, don't like what i have to say? tough - get over it: i don't have time or money to waste to stroke egos. i'll give you what time i can and what facts i can and also i will present you with an opinion: if you don't like that opinion or the way it's presented, that is your choice. live with it, deal with it or ignore it - i'll pretend i don't care which.
i give you information, present you with choices: where you go from there - as neo says as the end of matrix 1....
l.
Luke Kenneth Casson Leighton wrote:
lkcl@highfield:~/sf/freedce/freedce$ find . | xargs grep pthread | wc 770 3965 64010 lkcl@highfield:~/sf/freedce/freedce$ find . -name "*.[ch]" | xargs grep ENDTRY | wc 105 248 4490 lkcl@highfield:~/sf/freedce/freedce$ find . -name "*.[ch]" | xargs grep RAISE | wc 202 731 12799 lkcl@highfield:~/sf/freedce/freedce$ find . -name "*.[ch]" | xargs grep CATCH | wc 217 685 12392
how many uses of FINALLY? I'm a lot more worried about those. For the rest: mail me a quick explaination of the API, I'll cook you up a really simple implementation that doesn't involve SEH at all (since you aren't going for binary compatibility, why complicate things unnecessarily?). Be fully aware this is throwaway work, keep your hopes down