percpu_foreach man page on NetBSD

Man page or keyword search:  
man Server   9087 pages
apropos Keyword Search (all sections)
Output format
NetBSD logo
[printable version]

PERCPU(9)		 BSD Kernel Developer's Manual		     PERCPU(9)

NAME
     percpu, percpu_alloc, percpu_free, percpu_getref, percpu_putref,
     percpu_foreach — per-CPU storage allocator

SYNOPSIS
     #include <sys/percpu.h>

     typedef void (*percpu_callback_t)(void *, void *, struct cpu_info *);

     percpu_t *
     percpu_alloc(size_t size);

     void
     percpu_free(percpu_t *pc, size_t size);

     void *
     percpu_getref(percpu_t *pc);

     void
     percpu_putref(percpu_t *pc);

     void
     percpu_foreach(percpu_t *pc, percpu_callback_t cb, void *arg);

DESCRIPTION
     The machine-independent percpu interface provides per-CPU, CPU-local mem‐
     ory reservations to kernel subsystems.  percpu_alloc(size) reserves on
     each CPU an independent memory region of size bytes that is local to that
     CPU, returning a handle (percpu_t) to those regions.  A thread may subse‐
     quently ask for a pointer, p, to the region held by the percpu_t on the
     thread's current CPU.  Until the thread relinquishes the pointer, or vol‐
     untarily sleeps, the thread may read or write the region at p without
     causing interprocessor memory synchronization.

FUNCTIONS
     percpu_alloc(size)
	      Call this in thread context to allocate size bytes of local
	      storage on each CPU.  The storage is initialized with zeroes.
	      Treat this as an expensive operation.  percpu_alloc() returns
	      NULL on failure, and a handle for the per-CPU storage on suc‐
	      cess.

     percpu_free(pc, size)
	      Call this in thread context to return to the system the per-CPU
	      storage held by pc.  size should match the size passed to
	      percpu_alloc().  When percpu_free() returns, pc is undefined.
	      Treat this as an expensive operation.

     percpu_getref(pc)
	      Disable preemption and return a pointer to the storage held by
	      pc on the local CPU.  Use percpu_getref() in either thread or
	      interrupt context.  Follow each percpu_getref() call with a
	      matching call to percpu_putref().

     percpu_putref(pc)
	      Indicate that the thread is finished with the pointer returned
	      by the matching call to percpu_getref().	Re-enables preemption.

     percpu_foreach(pc, cb, arg)
	      On each CPU, for ci the corresponding struct cpu_info * and p
	      the CPU-local storage held by pc, run (*cb)(p, arg, ci).	Call
	      this in thread context.  cb should be non-blocking and fast.  Do
	      not rely on cb to be run on the CPUs in any particular order.

CODE REFERENCES
     The percpu interface is implemented within the file
     sys/kern/subr_percpu.c.

SEE ALSO
     atomic_ops(3), kmem(9), pcq(9), pool_cache(9), xcall(9)

HISTORY
     The percpu interface first appeared in NetBSD 6.0.

AUTHORS
     YAMAMOTO Takashi ⟨yamt@NetBSD.org⟩

BSD			       January 23, 2010				   BSD
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server NetBSD

List of man pages available for NetBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net