if (th->th_unique == NULL) return TD_OK;
td_thr_validate (const td_thrhandle_t *th){  struct pthread_handle_struct *handles = th->th_ta_p->handles;  int pthread_threads_max = th->th_ta_p->pthread_threads_max;  int cnt;  LOG ("td_thr_validate");  /* Now get all descriptors, one after the other.  */  for (cnt = 0; cnt < pthread_threads_max; ++cnt, ++handles)    {      struct pthread_handle_struct phc;      if (ps_pdread (th->th_ta_p->ph, handles, &phc,		     sizeof (struct pthread_handle_struct)) != PS_OK)	return TD_ERR;	/* XXX Other error value?  */      if (phc.h_descr != NULL && phc.h_descr == th->th_unique)	{	  struct _pthread_descr_struct pds;	  if (ps_pdread (th->th_ta_p->ph, phc.h_descr, &pds,			 th->th_ta_p->sizeof_descr) != PS_OK)	    return TD_ERR;	/* XXX Other error value?  */	  /* XXX There should be another test using the TID but this is	     currently not available.  */	  return pds.p_terminated != 0 ? TD_NOTHR : TD_OK;	}    }  return TD_ERR;}