From owner-p4-projects@FreeBSD.ORG Sat Apr 3 22:48:35 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 94BFC16A4D0; Sat, 3 Apr 2004 22:48:35 -0800 (PST) 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 6E48F16A4CE for ; Sat, 3 Apr 2004 22:48:35 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4D45B43D4C for ; Sat, 3 Apr 2004 22:48:35 -0800 (PST) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i346mZGe011250 for ; Sat, 3 Apr 2004 22:48:35 -0800 (PST) (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i346mYjj011247 for perforce@freebsd.org; Sat, 3 Apr 2004 22:48:34 -0800 (PST) (envelope-from julian@freebsd.org) Date: Sat, 3 Apr 2004 22:48:34 -0800 (PST) Message-Id: <200404040648.i346mYjj011247@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to julian@freebsd.org using -f From: Julian Elischer To: Perforce Change Reviews Subject: PERFORCE change 50315 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, 04 Apr 2004 06:48:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=50315 Change 50315 by julian@julian_jules1 on 2004/04/03 22:48:02 rethink when teh sched specific regions get cleared. probably needs more thought. Affected files ... .. //depot/projects/nsched/sys/kern/init_main.c#4 edit .. //depot/projects/nsched/sys/kern/kern_thread.c#4 edit Differences ... ==== //depot/projects/nsched/sys/kern/init_main.c#4 (text+ko) ==== ==== //depot/projects/nsched/sys/kern/kern_thread.c#4 (text+ko) ==== @@ -169,6 +169,7 @@ td->td_state = TDS_INACTIVE; td->td_oncpu = NOCPU; td->td_critnest = 1; + sched_newthread(td); } /* @@ -235,6 +236,7 @@ td->td_sleepqueue = sleepq_alloc(); td->td_turnstile = turnstile_alloc(); td->td_sched = (struct td_sched *)&td[1]; + } /* @@ -252,6 +254,18 @@ } /* + * Prepare a ksegrp for use. + */ +static void +thread_ctor(void *mem, int size, void *arg) +{ + struct ksegrp *kg; + + ke = (struct ksegrp *)mem; + sched_newkseg(kg); +} + +/* * Initialize type-stable parts of a ksegrp (when newly created). */ static void @@ -279,7 +293,6 @@ kg->kg_numthreads = 0; kg->kg_runnable = 0; kg->kg_numupcalls = 0; - sched_newkseg(kg); /* link it in now that it's consistent */ p->p_numksegrps++; TAILQ_INSERT_HEAD(&p->p_ksegrps, kg, kg_ksegrp); @@ -369,6 +382,8 @@ ksegrp_link(kg, p); thread_link(td, kg); + sched_newthread(td); + sched_newkseg(kg); } #ifndef _SYS_SYSPROTO_H_ @@ -601,7 +616,7 @@ p = td->td_proc; td2 = NULL; ku = NULL; - /* KSE-enabled processes only, please. */ + /* kSE-enabled processes only, please. */ if (!(p->p_flag & P_SA)) return (EINVAL); PROC_LOCK(p); @@ -827,7 +842,7 @@ tid_zone = uma_zcreate("TID", sizeof(struct tid_bitmap_part), NULL, NULL, NULL, NULL, UMA_ALIGN_CACHE, 0); ksegrp_zone = uma_zcreate("KSEGRP", sched_sizeof_ksegrp(), - NULL, NULL, ksegrp_init, NULL, + ksegrp_ctor, NULL, ksegrp_init, NULL, UMA_ALIGN_CACHE, 0); upcall_zone = uma_zcreate("UPCALL", sizeof(struct kse_upcall), NULL, NULL, NULL, NULL, UMA_ALIGN_CACHE, 0); @@ -1320,7 +1335,6 @@ td->td_proc = p; td->td_ksegrp = kg; td->td_flags = 0; - sched_newthread(td); LIST_INIT(&td->td_contested); callout_init(&td->td_slpcallout, CALLOUT_MPSAFE); @@ -1442,6 +1456,7 @@ bcopy(&td->td_startcopy, &td2->td_startcopy, (unsigned) RANGEOF(struct thread, td_startcopy, td_endcopy)); thread_link(td2, ku->ku_ksegrp); + sched_newthread(td2); /* inherit blocked thread's context */ cpu_set_upcall(td2, td); /* Let the new thread become owner of the upcall */