[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: threading troubles on OSF Alpha v3.2 (ITS#89)



Kurt D. Zeilenga writes:
> This is draft 4 behavior.  I assume HAVE_PTHREADS_D4 is defined
> and HAVE_PTHREADS_FINAL is not?
> 
>> Can we put it back, this time in libldap_r/thr_posix.c?
> 
> Yes.
> 
> s/PTHREAD_STRUCT_ARGUMENTS/HAVE_PTHREAD_D4/

OK, will do.   (Well, HAVE_PTHREAD!S!_D4 actually.)


But more is coming up though:

* pthread_yield() returns void, not int.  Is that D4 too?
  If so I could add this in ldap_pvt_thread_yield:

	 #ifdef HAVE_SCHED_YIELD
	        return sched_yield();
	+#elif HAVE_PTHREAD_YIELD && HAVE_PTHREADS_D4
	+       pthread_yield();
	+       return 0;
	 #elif HAVE_PTHREAD_YIELD
	        return pthread_yield();
	 #elif HAVE_THR_YIELD
	        return thr_yield();

  Or I could change ldap_pvt_thread_yield to return void; its return
  value isn't used anywhere in the ldap source anyway.


* _r functions:

  (Should I reopen the old ITS reports and repost this report there?)

  ctime_r on OSF1 v3.2 returns an int status (-1 or 0) instead of the
  buffer.  We have no configure test which detects that, or detects that
  ctime_r doesn't work as expected.
  

  gethostby{name,addr}_r take a 'struct hostent_data *' argument
  instead of the bunch of extra arguments used elsewhere.
  It must be zero-filled before its _first_ access by gethostby*_r.
  (I'm not sure what that means: per thread or per process or what.)

  I still think it's better to turn off HAVE_GETHOSTBYNAME_R & co
  instead of aborting compilation if we bump into an implementation we
  don't know how to handle.  (That doesn't mean I object to another
  configure test of course, but if this is a "private solution" I
  suspect we'll keep bumping into more private soutions.)

-- 
Hallvard