cpuvar.h revision 100b72f4fc209355ff607a0d787aad892d8a44ed
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * CDDL HEADER START
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * The contents of this file are subject to the terms of the
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * Common Development and Distribution License (the "License").
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * You may not use this file except in compliance with the License.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * See the License for the specific language governing permissions
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * and limitations under the License.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * When distributing Covered Code, include this CDDL HEADER in each
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * If applicable, add the following below this CDDL HEADER, with the
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * fields enclosed by brackets "[]" replaced with your own identifying
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * information: Portions Copyright [yyyy] [name of copyright owner]
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * CDDL HEADER END
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * Use is subject to license terms.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc#pragma ident "%Z%%M% %I% %E% SMI"
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc#if (defined(_KERNEL) || defined(_KMEMUSER)) && defined(_MACHDEP)
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc#if defined(__GNUC__) && defined(_ASM_INLINES) && defined(_KERNEL) && \
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxcextern "C" {
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc hrtime_t lg_total; /* used to temporarily hold load totals */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc hrtime_t lg_loads[S_LOADAVG_SZ]; /* table of recorded entries */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * For fast event tracing.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxctypedef struct ftrace_data {
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * Per-CPU data.
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxctypedef struct cpu {
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc processorid_t cpu_seqid; /* sequential CPU id (0..ncpus-1) */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc volatile cpu_flag_t cpu_flags; /* flags indicating CPU state */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc kthread_t *cpu_idle_thread; /* idle thread for this CPU */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc kthread_t *cpu_pause_thread; /* pause thread for this CPU */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc struct lgrp_ld *cpu_lpl; /* pointer to this cpu's load */
e2cf88ac9d753a00c17aa235f6afdc76574fe3a6Quaker Fang int cpu_cache_offset; /* see kmem.c for details */
e2cf88ac9d753a00c17aa235f6afdc76574fe3a6Quaker Fang * Links to other CPUs. It is safe to walk these lists if
e2cf88ac9d753a00c17aa235f6afdc76574fe3a6Quaker Fang * one of the following is true:
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * - cpu_lock held
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * - preemption disabled via kpreempt_disable
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * - PIL >= DISP_LEVEL
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * - acting thread is an interrupt thread
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc * - all other CPUs are paused
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc struct cpu *cpu_next_onln; /* next online (enabled) CPU */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc struct cpu *cpu_prev_onln; /* prev online (enabled) CPU */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc struct cpu *cpu_next_lgrp; /* next CPU in latency group */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc struct cpu *cpu_prev_lgrp; /* prev CPU in latency group */
0ba2cbe97e0678a691742f98d2532caed0a2c4aaxc struct cpu *cpu_next_lpl; /* next CPU in lgrp partition */
void *cpu_vm_data;
} cpu_t;
sizeof (kmutex_t))
typedef struct cpu_core {
} cpu_core_t;
#ifdef _KERNEL
#if defined(__sparc)
typedef struct cpuset {
} cpuset_t;
int _i; \
int _i; \
int _i; \
kpreempt_enable(); \
struct zone;
void start_cpus(void);
int cpus_paused(void);
void cpu_pause_init(void);
int cpu_configure(int);
int cpu_unconfigure(int);
extern void affinity_clear(void);
extern void thread_nomigrate(void);
extern void thread_allowmigrate(void);
extern void weakbinding_stop(void);
extern void weakbinding_start(void);
} cpu_setup_t;
#ifdef __cplusplus