pcpu
void pcpu(const KINFO *, const struct varent *);
{"%cpu", "%CPU", NULL, 0, pcpu, NULL, 4, 0, 0, NULL, NULL},
struct pcpu *cd_pcpu;
struct pcpu *pc;
struct bufpcpu *pcpu;
pcpu = &bufpcpu[bp->b_qcpu];
spin_lock(&pcpu->spin);
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
TAILQ_INSERT_HEAD(&pcpu->bufqueues[bp->b_qindex],
TAILQ_INSERT_HEAD(&pcpu->bufqueues[bp->b_qindex],
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
spin_unlock(&pcpu->spin);
struct bufpcpu *pcpu;
pcpu = &bufpcpu[bp->b_qcpu];
spin_lock(&pcpu->spin);
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
spin_unlock(&pcpu->spin);
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
spin_unlock(&pcpu->spin);
struct bufpcpu *pcpu;
pcpu = &bufpcpu[nqcpu];
spin_lock(&pcpu->spin);
nbp = TAILQ_FIRST(&pcpu->bufqueues[BQUEUE_EMPTY]);
nbp = TAILQ_FIRST(&pcpu->bufqueues[BQUEUE_CLEAN]);
TAILQ_REMOVE(&pcpu->bufqueues[qindex],
TAILQ_INSERT_TAIL(&pcpu->bufqueues[qindex],
if ((nbp = TAILQ_FIRST(&pcpu->bufqueues[BQUEUE_CLEAN])))
spin_unlock(&pcpu->spin);
spin_unlock(&pcpu->spin);
spin_unlock(&pcpu->spin);
spin_unlock(&pcpu->spin);
struct bufpcpu *pcpu;
pcpu = &bufpcpu[marker->b_qcpu];
spin_lock(&pcpu->spin);
TAILQ_INSERT_HEAD(&pcpu->bufqueues[q], marker, b_freelist);
TAILQ_REMOVE(&pcpu->bufqueues[q], marker, b_freelist);
TAILQ_INSERT_AFTER(&pcpu->bufqueues[q], bp, marker, b_freelist);
spin_unlock(&pcpu->spin);
spin_lock(&pcpu->spin);
spin_unlock(&pcpu->spin);
spin_unlock(&pcpu->spin);
spin_lock(&pcpu->spin);
TAILQ_INSERT_TAIL(&pcpu->bufqueues[q], bp, b_freelist);
spin_unlock(&pcpu->spin);
spin_lock(&pcpu->spin);
spin_lock(&pcpu->spin);
TAILQ_REMOVE(&pcpu->bufqueues[q], marker, b_freelist);
spin_unlock(&pcpu->spin);
struct bufpcpu *pcpu;
pcpu = &bufpcpu[i];
spin_init(&pcpu->spin, "bufinit");
TAILQ_INIT(&pcpu->bufqueues[j]);
pcpu = &bufpcpu[i];
TAILQ_INSERT_TAIL(&pcpu->bufqueues[bp->b_qindex],
pcpu = &bufpcpu[i];
struct bufpcpu *pcpu = &bufpcpu[bp->b_qcpu];
TAILQ_REMOVE(&pcpu->bufqueues[bp->b_qindex], bp, b_freelist);
struct bufpcpu *pcpu = &bufpcpu[bp->b_qcpu];
spin_lock(&pcpu->spin);
spin_unlock(&pcpu->spin);
struct pcpu_ncache *pcpu;
pcpu = pcpu_ncache;
if (ncmount_cache_enable == 0 || pcpu == NULL) {
pcpu += mycpu->gd_cpuid;
if (__predict_true(spin_trylock(&pcpu->umount_spin))) {
spinlk = &pcpu->umount_spin;
struct pcpu_ncache *pcpu;
pcpu = pcpu_ncache;
if (pcpu == NULL)
spin_lock(&pcpu[i].umount_spin);
spin_unlock(&pcpu[i].umount_spin);
struct in_rtq_pcpu *pcpu = &in_rtq_pcpu[mycpuid];
struct radix_node_head *rnh = pcpu->rnh;
callout_reset(&pcpu->timo_ch, tvtohz_high(&atv), in_rtqtimo, NULL);
in_rtqdrain_oncpu(struct in_rtq_pcpu *pcpu)
pcpu->lastdrain = time_uptime;
struct in_rtq_pcpu *pcpu = &in_rtq_pcpu[mycpuid];
in_rtqdrain_oncpu(pcpu);
pcpu->draining = 0;
struct in_rtq_pcpu *pcpu = &in_rtq_pcpu[cpu];
if (pcpu->draining || pcpu->lastdrain == time_uptime) {
pcpu->draining = 1;
struct in_rtq_pcpu *pcpu;
pcpu = &in_rtq_pcpu[cpuid];
pcpu->rnh = rnh;
callout_init_mp(&pcpu->timo_ch);
netmsg_init(&pcpu->timo_nmsg, NULL, &netisr_adone_rport, MSGF_PRIORITY,
netmsg_init(&pcpu->drain_nmsg, NULL, &netisr_adone_rport, MSGF_PRIORITY,
#define IPFLOW_INSERT(pcpu, bucket, ipf) \
LIST_INSERT_HEAD(&(pcpu)->ipf_list, (ipf), ipf_list); \
ipflow_lookup(struct ipflow_pcpu *pcpu, const struct ip *ip)
LIST_FOREACH(ipf, &pcpu->ipf_table[hash], ipf_hash) {
ipflow_free(struct ipflow_pcpu *pcpu, struct ipflow *ipf)
KKASSERT(pcpu->ipf_inuse > 0);
pcpu->ipf_inuse--;
ipflow_reap(struct ipflow_pcpu *pcpu)
LIST_FOREACH(ipf, &pcpu->ipf_list, ipf_list) {
struct ipflow_pcpu *pcpu = ipflow_pcpu_data[mycpuid];
LIST_FOREACH_MUTABLE(ipf, &pcpu->ipf_list, ipf_list, next_ipf) {
ipflow_free(pcpu, ipf);
callout_reset(&pcpu->ipf_timeo, IPFLOW_TIMEOUT, ipflow_timeo, pcpu);
struct ipflow_pcpu *pcpu = xpcpu;
struct netmsg_base *nm = &pcpu->ipf_timeo_netmsg;
struct ipflow_pcpu *pcpu = ipflow_pcpu_data[mycpuid];
ipf = ipflow_lookup(pcpu, ip);
if (pcpu->ipf_inuse == IPFLOW_MAX) {
ipf = ipflow_reap(pcpu);
pcpu->ipf_inuse++;
IPFLOW_INSERT(pcpu, &pcpu->ipf_table[hash], ipf);
struct ipflow_pcpu *pcpu = ipflow_pcpu_data[mycpuid];
while ((ipf = LIST_FIRST(&pcpu->ipf_list)) != NULL) {
ipflow_free(pcpu, ipf);
struct ipflow_pcpu *pcpu = ipflow_pcpu_data[mycpuid];
LIST_FOREACH_MUTABLE(ipf, &pcpu->ipf_list, ipf_list, next_ipf) {
ipflow_free(pcpu, ipf);
struct ipflow_pcpu *pcpu;
pcpu = kmalloc(sizeof(*pcpu), M_IPFLOW, M_WAITOK | M_ZERO);
netmsg_init(&pcpu->ipf_timeo_netmsg, NULL, &netisr_adone_rport,
callout_init_mp(&pcpu->ipf_timeo);
OID_AUTO, oid_name, CTLFLAG_RD, &pcpu->ipf_inuse, 0,
ipflow_pcpu_data[cpuid] = pcpu;
callout_reset(&pcpu->ipf_timeo, IPFLOW_TIMEOUT, ipflow_timeo, pcpu);
pcpu = malloc(ncpus * sizeof(*pcpu));
kkread(kd, Nl[1].n_value, pcpu, ncpus * sizeof(*pcpu));
printf("%p %d\n", pcpu, ncpus);
scan = &pcpu[i];
struct usched_dfly_pcpu *pcpu;