Print this page
5513 KM_NORMALPRI should be documented in kmem_alloc(9f) and kmem_cache_create(9f) man pages
14465 Present KM_NOSLEEP_LAZY as documented interface
Change-Id: I002ec28ddf390650f1fcba1ca94f6abfdb241439

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man9f/kmem_alloc.9f.man.txt
          +++ new/usr/src/man/man9f/kmem_alloc.9f.man.txt
↓ open down ↓ 22 lines elided ↑ open up ↑
  23   23  INTERFACE LEVEL
  24   24         Architecture independent level 1 (DDI/DKI).
  25   25  
  26   26  PARAMETERS
  27   27         size
  28   28                 Number of bytes to allocate.
  29   29  
  30   30  
  31   31         flag
  32   32                 Determines whether caller can sleep for memory. Possible flags
  33      -               are KM_SLEEP to allow sleeping until memory is available, or
  34      -               KM_NOSLEEP to return NULL immediately if memory is not
  35      -               available.
       33 +               are KM_SLEEP to allow sleeping until memory is available,
       34 +               KM_NOSLEEP to return NULL if memory is not available even after
       35 +               some reclamation attempts, and KM_NOSLEEP_LAZY to return NULL
       36 +               without reclamation attempts.  KM_NOSLEEP_LAZY is actually two
       37 +               flags combined: (KM_NOSLEEP | KM_NORMALPRI), the latter flag
       38 +               indicating not to attempt reclamation before giving up and
       39 +               returning NULL.  If any mention of KM_NOSLEEP appears in this
       40 +               man page by itself, it applies equally to KM_NOSLEEP_LAZY as
       41 +               well.
  36   42  
  37   43  
  38   44         buf
  39   45                 Pointer to allocated memory.
  40   46  
  41   47  
  42   48  DESCRIPTION
  43   49         The kmem_alloc() function allocates size bytes of kernel memory and
  44   50         returns a pointer to the allocated memory. The allocated memory is at
  45   51         least double-word aligned, so it can hold any C data structure. No
  46   52         greater alignment can be assumed. flag determines whether the caller
  47   53         can sleep for memory.  KM_SLEEP allocations may sleep but are
  48      -       guaranteed to succeed.  KM_NOSLEEP allocations are guaranteed not to
  49      -       sleep but may fail (return NULL) if no memory is currently available.
  50      -       The initial contents of memory allocated using kmem_alloc() are random
  51      -       garbage.
       54 +       guaranteed to succeed.  KM_NOSLEEP and KM_NOSLEEP_LAZY allocations are
       55 +       guaranteed not to sleep but may fail (return NULL) if no memory is
       56 +       currently available. KM_NOSLEEP will first attempt to aggressively
       57 +       reclaim memory from otherwise unused blocks, while KM_NOSLEEP_LAZY will
       58 +       not attempt any reclamation. The initial contents of memory allocated
       59 +       using kmem_alloc() are random garbage.
  52   60  
  53   61  
  54   62         The kmem_zalloc() function is like kmem_alloc() but returns zero-filled
  55   63         memory.
  56   64  
  57   65  
  58   66         The kmem_free() function frees previously allocated kernel memory. The
  59   67         buffer address and size must exactly match the original allocation.
  60   68         Memory cannot be returned piecemeal.
  61   69  
↓ open down ↓ 49 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX