1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "thread_dbP.h"
- td_err_e
- td_thr_getgregs (const td_thrhandle_t *th, prgregset_t regset)
- {
- psaddr_t cancelhandling, tid;
- td_err_e err;
- LOG ("td_thr_getgregs");
-
- err = DB_GET_FIELD (cancelhandling, th->th_ta_p, th->th_unique, pthread,
- cancelhandling, 0);
- if (err != TD_OK)
- return err;
-
- if (((int) (uintptr_t) cancelhandling) & TERMINATED_BITMASK)
- memset (regset, '\0', sizeof (*regset));
-
- else
- {
- err = DB_GET_FIELD (tid, th->th_ta_p, th->th_unique, pthread, tid, 0);
- if (err != TD_OK)
- return err;
- if (ps_lgetregs (th->th_ta_p->ph, (uintptr_t) tid, regset) != PS_OK)
- return TD_ERR;
- }
- return TD_OK;
- }
|