Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/sched_ule.c
Show First 20 Lines • Show All 1,418 Lines • ▼ Show 20 Lines | |||||
#ifdef KTR | #ifdef KTR | ||||
snprintf(tdq->tdq_loadname, sizeof(tdq->tdq_loadname), | snprintf(tdq->tdq_loadname, sizeof(tdq->tdq_loadname), | ||||
"CPU %d load", (int)TDQ_ID(tdq)); | "CPU %d load", (int)TDQ_ID(tdq)); | ||||
#endif | #endif | ||||
} | } | ||||
#ifdef SMP | #ifdef SMP | ||||
static void | static void | ||||
sched_format_topo(struct sbuf *sb, char cpusetbuf[__min_size(CPUSETBUFSIZ)], | |||||
int level, const struct cpu_group *cg) | |||||
{ | |||||
int i, children; | |||||
sbuf_printf(sb, "%*scount %d, children %d, level %d, flags 0x%02x, " | |||||
"cpuset %s\n", level * 4, "", cg->cg_count, (int)cg->cg_children, | |||||
(int)cg->cg_level, (int)cg->cg_flags, | |||||
cpusetobj_strprint(cpusetbuf, &cg->cg_mask)); | |||||
children = cg->cg_children; | |||||
for (i = 0, cg = cg->cg_child; i < children; cg++, i++) | |||||
sched_format_topo(sb, cpusetbuf, level + 1, cg); | |||||
} | |||||
static void | |||||
sched_print_topo(void) | |||||
{ | |||||
#ifndef PRINTF_BUFR_SIZE | |||||
#define PRINTF_BUFR_SIZE 64 | |||||
#endif | |||||
char cpusetbuf[CPUSETBUFSIZ]; | |||||
char bufr[PRINTF_BUFR_SIZE]; | |||||
struct sbuf sb, *sbp __unused; | |||||
sbp = sbuf_new(&sb, bufr, sizeof(bufr), SBUF_FIXEDLEN); | |||||
KASSERT(sbp != NULL, ("sbuf_new misused?")); | |||||
sbuf_set_drain(&sb, sbuf_printf_drain, NULL); | |||||
sbuf_cat(&sb, "Sched CPU Groups:\n"); | |||||
sched_format_topo(&sb, cpusetbuf, 0, cpu_top); | |||||
sbuf_nl_terminate(&sb); | |||||
sbuf_finish(&sb); | |||||
sbuf_delete(&sb); | |||||
} | |||||
static void | |||||
sched_setup_smp(void) | sched_setup_smp(void) | ||||
{ | { | ||||
struct tdq *tdq; | struct tdq *tdq; | ||||
int i; | int i; | ||||
cpu_top = smp_topo(); | cpu_top = smp_topo(); | ||||
if (bootverbose) | |||||
sched_print_topo(); | |||||
CPU_FOREACH(i) { | CPU_FOREACH(i) { | ||||
tdq = DPCPU_ID_PTR(i, tdq); | tdq = DPCPU_ID_PTR(i, tdq); | ||||
tdq_setup(tdq, i); | tdq_setup(tdq, i); | ||||
tdq->tdq_cg = smp_topo_find(cpu_top, i); | tdq->tdq_cg = smp_topo_find(cpu_top, i); | ||||
if (tdq->tdq_cg == NULL) | if (tdq->tdq_cg == NULL) | ||||
panic("Can't find cpu group for %d\n", i); | panic("Can't find cpu group for %d\n", i); | ||||
} | } | ||||
PCPU_SET(sched, DPCPU_PTR(tdq)); | PCPU_SET(sched, DPCPU_PTR(tdq)); | ||||
▲ Show 20 Lines • Show All 1,689 Lines • Show Last 20 Lines |