cpu_pg
pgs = &cp->cpu_pg->pgs;
pg_cmt_t *cpu_pg;
cpd = cpu->cpu_pg;
while ((cpu_pg = group_iterate(&cpd->pgs,
if (cpu_pg->cmt_parent == pg) {
cpu_pg->cmt_parent = pg->cmt_parent;
cpu_pg->cmt_siblings = pg->cmt_siblings;
if (cpu->cpu_pg)
group_empty(&cpu->cpu_pg->cmt_pgs);
pg_cmt_t *cpu_pg;
pgd = cpu->cpu_pg;
while ((cpu_pg = group_iterate(&pgd->cmt_pgs, &iter)) != NULL) {
if (cpu_pg->cmt_parent == pg) {
cpu_pg->cmt_parent = parent;
pgs = &cp->cpu_pg->pgs;
pgs = &cp->cpu_pg->pgs;
pgs = &cp->cpu_pg->pgs;
cmt_pgs = &cp->cpu_pg->cmt_pgs;
cpu_pgs = cp->cpu_pg;
cp->cpu_pg && cp->cpu_pg->cmt_lineage ?
cp->cpu_pg->cmt_lineage->pg_id : -1;
#define PG_CPU_INIT(class, cp, cpu_pg) \
pg_classes[class].pgc_ops->cpu_init(cp, cpu_pg); \
#define PG_CPU_FINI(class, cp, cpu_pg) \
pg_classes[class].pgc_ops->cpu_fini(cp, cpu_pg); \
pg_cpu_add(pg_t *pg, cpu_t *cp, cpu_pg_t *cpu_pg)
err = group_add(&cpu_pg->pgs, pg, GRP_RESIZE);
pg_cpu_delete(pg_t *pg, cpu_t *cp, cpu_pg_t *cpu_pg)
err = group_remove(&cpu_pg->pgs, pg, GRP_RESIZE);
cpu_pg_t *cpu_pg;
cpu_pg = pg_cpu_data_alloc();
PG_CPU_INIT(i, cp, cpu_pg);
cp->cpu_pg = cpu_pg;
return (cpu_pg);
cpu_pg_t *cpu_pg;
cpu_pg = cp->cpu_pg;
if (cpu_pg == NULL || pg_cpu_is_bootstrapped(cp))
cpu_pg = cpu_pg_deferred;
PG_CPU_FINI(i, cp, cpu_pg);
pg_cpu_data_free(cpu_pg);
cp->cpu_pg = &bootstrap_pg_data;
return (cp->cpu_pg == &bootstrap_pg_data);
grp = &cp->cpu_pg->pgs;
grp = &cp->cpu_pg->pgs;
while ((pg = group_iterate(&cp->cpu_pg->pgs, &i)) != NULL) {
struct cpu_pg *cpu_pg; /* cpu's processor groups */
void (*cpu_init)(struct cpu *, struct cpu_pg *);
void (*cpu_fini)(struct cpu *, struct cpu_pg *);
for (uint_t i = 0; i < GROUP_SIZE(&cp->cpu_pg->cmt_pgs); i++) {
pg_cmt_t *pg = GROUP_ACCESS(&cp->cpu_pg->cmt_pgs, i);
pgps[id] = cp->cpu_pg;
cp->cpu_pg = pgps[id];