示例#1
0
void *
percpu_getref(percpu_t *pc)
{

    KPREEMPT_DISABLE(curlwp);
    return percpu_getptr_remote(pc, curcpu());
}
示例#2
0
void *
percpu_getref(percpu_t *pc)
{

	kpreempt_disable();
	return percpu_getptr_remote(pc, curcpu());
}
示例#3
0
/*
 * percpu_foreach: call the specified callback function for each cpus.
 *
 * => called in thread context.
 * => caller should not rely on the cpu iteration order.
 * => the callback function should be minimum because it is executed with
 *    holding a global lock, which can block low-priority xcalls.
 *    eg. it's illegal for a callback function to sleep for memory allocation.
 */
void
percpu_foreach(percpu_t *pc, percpu_callback_t cb, void *arg)
{
    CPU_INFO_ITERATOR cii;
    struct cpu_info *ci;

    percpu_traverse_enter();
    for (CPU_INFO_FOREACH(cii, ci)) {
        (*cb)(percpu_getptr_remote(pc, ci), arg, ci);
    }
    percpu_traverse_exit();
}