From owner-p4-projects@FreeBSD.ORG Sun Apr 10 03:38:38 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6875316A4D0; Sun, 10 Apr 2005 03:38:38 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 43CC516A4CE for ; Sun, 10 Apr 2005 03:38:38 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1625143D4C for ; Sun, 10 Apr 2005 03:38:38 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j3A3cbvI005271 for ; Sun, 10 Apr 2005 03:38:37 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j3A3cbGT005268 for perforce@freebsd.org; Sun, 10 Apr 2005 03:38:37 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 10 Apr 2005 03:38:37 GMT Message-Id: <200504100338.j3A3cbGT005268@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 74828 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Apr 2005 03:38:39 -0000 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