Date: Sun, 10 Apr 2005 03:38:37 GMT From: David Xu <davidxu@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 74828 for review Message-ID: <200504100338.j3A3cbGT005268@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=74828 Change 74828 by davidxu@davidxu_tiger on 2005/04/10 03:38:01 allow libpthread debugger and libc_r debugger to continue. sync with libthr debugging code. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread_db/libc_r_db.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread_db/libpthread_db.c#7 edit .. //depot/projects/davidxu_thread/src/lib/libthread_db/libthr_db.c#10 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread_db/libc_r_db.c#2 (text+ko) ==== @@ -58,7 +58,7 @@ static td_err_e libc_r_db_ta_clear_event(const td_thragent_t *ta, td_thr_events_t *ev) { - return (TD_ERR); + return (0); } static td_err_e @@ -160,7 +160,7 @@ static td_err_e libc_r_db_ta_set_event(const td_thragent_t *ta, td_thr_events_t *ev) { - return (TD_ERR); + return (0); } static td_err_e @@ -192,13 +192,13 @@ static td_err_e libc_r_db_thr_clear_event(const td_thrhandle_t *th, td_thr_events_t *ev) { - return (TD_ERR); + return (0); } static td_err_e libc_r_db_thr_event_enable(const td_thrhandle_t *th, int oo) { - return (TD_ERR); + return (0); } static td_err_e @@ -281,7 +281,7 @@ static td_err_e libc_r_db_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *ev) { - return (TD_ERR); + return (0); } static td_err_e ==== //depot/projects/davidxu_thread/src/lib/libthread_db/libpthread_db.c#7 (text+ko) ==== @@ -428,7 +428,7 @@ pt_ta_event_addr(const td_thragent_t *ta, td_event_e event, td_notify_t *ptr) { TDBG_FUNC(); - return (TD_NOEVENT); + return (TD_ERR); } static td_err_e @@ -821,21 +821,21 @@ pt_thr_event_enable(const td_thrhandle_t *th, int en) { TDBG_FUNC(); - return (TD_ERR); + return (0); } static td_err_e pt_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *setp) { TDBG_FUNC(); - return (TD_ERR); + return (0); } static td_err_e pt_thr_clear_event(const td_thrhandle_t *th, td_thr_events_t *setp) { TDBG_FUNC(); - return (TD_ERR); + return (0); } static td_err_e ==== //depot/projects/davidxu_thread/src/lib/libthread_db/libthr_db.c#10 (text+ko) ==== @@ -70,9 +70,10 @@ int thread_max_keys; int thread_off_key_allocated; int thread_off_key_destructor; + int thread_off_report_events; + int thread_off_event_mask; int thread_state_zoombie; int thread_state_running; - int thread_off_enable_event; struct pt_map *map; int map_len; }; @@ -217,7 +218,9 @@ LOOKUP_VAL(ph, "_thread_off_key_destructor", &ta->thread_off_key_destructor); LOOKUP_VAL(ph, "_thread_state_running", &ta->thread_state_running); LOOKUP_VAL(ph, "_thread_state_zoombie", &ta->thread_state_zoombie); - LOOKUP_VAL(ph, "_thread_off_enable_event", &ta->thread_off_enable_event); + LOOKUP_VAL(ph, "_thread_off_report_events", + &ta->thread_off_report_events); + LOOKUP_VAL(ph, "_thread_off_event_mask", &ta->thread_off_event_mask); dbg = getpid(); /* * If this fails it probably means we're debugging a core file and @@ -450,16 +453,16 @@ pt_ta_set_event(const td_thragent_t *ta, td_thr_events_t *events) { int ret; - int mask; + td_thr_events_t mask; TDBG_FUNC(); ret = ps_pread(ta->ph, ta->thread_event_mask_addr, &mask, - sizeof(int)); + sizeof(mask)); if (ret != 0) return (P2T(ret)); mask |= *events; ret = ps_pwrite(ta->ph, ta->thread_event_mask_addr, &mask, - sizeof(int)); + sizeof(mask)); return (P2T(ret)); } @@ -467,16 +470,16 @@ pt_ta_clear_event(const td_thragent_t *ta, td_thr_events_t *events) { int ret; - int mask; + td_thr_events_t mask; TDBG_FUNC(); ret = ps_pread(ta->ph, ta->thread_event_mask_addr, &mask, - sizeof(int)); + sizeof(mask)); if (ret != 0) return (P2T(ret)); mask &= ~*events; ret = ps_pwrite(ta->ph, ta->thread_event_mask_addr, &mask, - sizeof(int)); + sizeof(mask)); return (P2T(ret)); } @@ -672,7 +675,7 @@ int ret; TDBG_FUNC(); - ret = ps_pwrite(ta->ph, th->th_thread + ta->thread_off_enable_event, + ret = ps_pwrite(ta->ph, th->th_thread + ta->thread_off_report_events, &en, sizeof(int)); return (P2T(ret)); } @@ -680,15 +683,33 @@ static td_err_e pt_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *setp) { + const td_thragent_t *ta = th->th_ta; + td_thr_events_t mask; + int ret; + TDBG_FUNC(); - return (TD_ERR); + ret = ps_pread(ta->ph, th->th_thread + ta->thread_off_event_mask, + &mask, sizeof(mask)); + mask |= *setp; + ret = ps_pwrite(ta->ph, th->th_thread + ta->thread_off_event_mask, + &mask, sizeof(mask)); + return (P2T(ret)); } static td_err_e pt_thr_clear_event(const td_thrhandle_t *th, td_thr_events_t *setp) { + const td_thragent_t *ta = th->th_ta; + td_thr_events_t mask; + int ret; + TDBG_FUNC(); - return (TD_ERR); + ret = ps_pread(ta->ph, th->th_thread + ta->thread_off_event_mask, + &mask, sizeof(mask)); + mask &= ~*setp; + ret = ps_pwrite(ta->ph, th->th_thread + ta->thread_off_event_mask, + &mask, sizeof(mask)); + return (P2T(ret)); } static td_err_e
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200504100338.j3A3cbGT005268>