[sane-devel] strange thread code?
m. allan noah
Tue, 6 Jan 2004 10:15:12 -0500 (EST)
On Fri, 2 Jan 2004, Jaeger, Gerhard wrote:
> On Mittwoch, 31. Dezember 2003 18:10, m. allan noah wrote:
> > i am converting the fujitsu backend to use sanei_thread instead of fork.
> okay - good ;-)
> > in reading the threading code, i found something that i dont understand,
> > and was hoping someone who knows a bit more could explain it to me:
> let's try.
> > in the function sanei_thread_waitpid(), the #ifdef PTHREAD section always
> > returns pid (around line 354). but farther down, in the #else section, the
> > return val from the waitpid() call is returned (which is the pid on
> > success, but 0 or -1 otherwise)
> > so if you are calling sanei_thread_waitpid() and there is an error, you
> > might, or might not, get a negative return value?
> The idea is, that sanei_thread_waitpid should be some replacement for waitpid,
> and if this waitpid fails, you should get back exactly the code it delivers...
> Only the case ECHILD is handled different (guess it was because of some
> internals in the plustek backend ;-) )
ok, i understand this, sanei_thread_waitpid should mimic waitpid()
> In case of the pthread_join stuff, there's no proper replacement for waitpid,
> and that's why this part always returns the pid (maybe this can also be
> done better, but currently I don't see any problems there)
ok, so sanei_thread_waitpid does not mimic waitpid, in the case of
> So you can use sanei_thread_waitpid the same way you have used it in
> your backend...
unless threading is used, cause i cant use the return val in that case,
instead i must use the status pointer?
seems like this abstraction layer is not quite abstracted enough...
> > am i not reading this code correctly?
> no, you're reading it correctly...
> Hope this helps a bit,
thanks for the tips, thought i was missing something...
"so don't tell us it can't be done, putting down what you don't know.
money isn't our god, integrity will free our souls" - Max Cavalera