From owner-p4-projects@FreeBSD.ORG Sat Apr 3 08:11:34 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 71BD016A504; Sat, 3 Apr 2004 08:11:34 -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 2CC3F16A4FC for ; Sat, 3 Apr 2004 08:11:34 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0E66843D5F for ; Sat, 3 Apr 2004 08:11:34 -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 i33GBXGe089734 for ; Sat, 3 Apr 2004 08:11:33 -0800 (PST) (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i33GBXC3089724 for perforce@freebsd.org; Sat, 3 Apr 2004 08:11:33 -0800 (PST) (envelope-from julian@freebsd.org) Date: Sat, 3 Apr 2004 08:11:33 -0800 (PST) Message-Id: <200404031611.i33GBXC3089724@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 50264 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: Sat, 03 Apr 2004 16:11:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=50264 Change 50264 by julian@julian_jules1 on 2004/04/03 08:11:00 clean up allocatipon of scheduler structure extensions for proc0 Affected files ... .. //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd.c#3 edit .. //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.c#5 edit .. //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.h#3 edit Differences ... ==== //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd.c#3 (text+ko) ==== @@ -80,15 +80,6 @@ #define KSE_CAN_MIGRATE(ke) \ ((ke)->ke_thread->td_pinned == 0 && ((ke)->ke_flags & KEF_BOUND) == 0) -static struct ke_sched ke_sched; -static struct kg_sched kg_sched; -static struct td_sched td_sched; - -struct ke_sched *kse0_sched = &ke_sched; -struct kg_sched *ksegrp0_sched = &kg_sched; -struct p_sched *proc0_sched = NULL; -struct td_sched *thread0_sched = &td_sched; - static int sched_tdcnt; /* Total runnable threads in the system. */ static int sched_quantum; /* Roundrobin scheduling quantum in ticks. */ #define SCHED_QUANTUM (hz / 10) /* Default sched quantum */ @@ -849,16 +840,19 @@ { return (sizeof(struct kse) + sizeof(struct ke_sched)); } + int sched_sizeof_ksegrp(void) { return (sizeof(struct ksegrp) + sizeof(struct kg_sched)); } + int sched_sizeof_proc(void) { return (sizeof(struct proc)); } + int sched_sizeof_thread(void) { ==== //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.c#5 (text+ko) ==== @@ -31,8 +31,16 @@ #include static uma_zone_t kse_zone; + struct kse kse0; +static struct ke_sched ke_sched0; +static struct kg_sched kg_sched0; +static struct td_sched td_sched0; + static struct kse * kse_alloc(void); +static void kse_link(struct proc *p, struct kse *ke, struct ksegrp *kg); +static void kse_unlink(struct kse *ke); + extern struct mtx kse_zombie_lock; TAILQ_HEAD(, kse) zombie_kses = TAILQ_HEAD_INITIALIZER(zombie_kses); @@ -73,13 +81,14 @@ /* * Set up the scheduler specific parts of proc0. */ - kse0.ke_sched = kse0_sched; - ksegrp0.kg_sched = ksegrp0_sched; - proc0.p_sched = proc0_sched; - thread0.td_sched = thread0_sched; + kse0.ke_sched = &ke_sched0; + ksegrp0.kg_sched = &kg_sched0; + proc0.p_sched = NULL; /* XXX */ + thread0.td_sched = &td_sched0; + kse0.ke_state = KES_THREAD; + kse_link(&proc0, &kse0, &ksegrp0); kse0.ke_thread = &thread0; - kse_link(&kse0, &ksegrp0); thread0.td_kse = &kse0; /* we are running */ @@ -105,7 +114,7 @@ mtx_lock_spin(&sched_lock); thread_link(td0, td->td_ksegrp); - kse_link(ke0, td->td_ksegrp); + kse_link(td->td_proc, ke0, td->td_ksegrp); /* Bind this thread and kse together. */ td0->td_kse = ke0; @@ -171,10 +180,8 @@ * KSE is linked into kse group. */ void -kse_link(struct kse *ke, struct ksegrp *kg) +kse_link(struct proc *p, struct kse *ke, struct ksegrp *kg) { - struct proc *p = kg->kg_proc; - TAILQ_INSERT_HEAD(&kg->kg_kseq, ke, ke_kglist); kg->kg_kses++; ke->ke_state = KES_UNQUEUED; @@ -192,7 +199,7 @@ ke = kse_alloc(); if (ke) { - kse_link(ke, kg); + kse_link(p, ke, kg); td->td_kse = ke; ke->ke_thread = td; return (0); @@ -340,7 +347,7 @@ mtx_unlock_spin(&sched_lock); #endif mtx_lock_spin(&sched_lock); - kse_link(newke, kg); + kse_link(kg->kg_proc, newke, kg); sched_fork_kse(curthread, newke); /* Add engine */ kse_reassign(newke); ==== //depot/projects/nsched/sys/kern/scheduler/4bsd/sched_4bsd_kse.h#3 (text+ko) ==== @@ -129,8 +129,6 @@ void kse_free(struct kse *ke); void kse_stash(struct kse *ke); void kse_reassign(struct kse *ke); -void kse_link(struct kse *ke, struct ksegrp *kg); -void kse_unlink(struct kse *ke); void sched_fork_kse(struct thread *parenttd, struct kse *newke); void sched_exit_kse(struct proc *parent, struct thread *childtd);