|
@@ -86,6 +86,51 @@ extern void *__kmalloc_track_caller(size_t, gfp_t, void*);
|
|
|
__kmalloc_track_caller(size, flags, __builtin_return_address(0))
|
|
|
#endif
|
|
|
|
|
|
+/**
|
|
|
+ * kmalloc - allocate memory
|
|
|
+ * @size: how many bytes of memory are required.
|
|
|
+ * @flags: the type of memory to allocate.
|
|
|
+ *
|
|
|
+ * kmalloc is the normal method of allocating memory
|
|
|
+ * in the kernel.
|
|
|
+ *
|
|
|
+ * The @flags argument may be one of:
|
|
|
+ *
|
|
|
+ * %GFP_USER - Allocate memory on behalf of user. May sleep.
|
|
|
+ *
|
|
|
+ * %GFP_KERNEL - Allocate normal kernel ram. May sleep.
|
|
|
+ *
|
|
|
+ * %GFP_ATOMIC - Allocation will not sleep.
|
|
|
+ * For example, use this inside interrupt handlers.
|
|
|
+ *
|
|
|
+ * %GFP_HIGHUSER - Allocate pages from high memory.
|
|
|
+ *
|
|
|
+ * %GFP_NOIO - Do not do any I/O at all while trying to get memory.
|
|
|
+ *
|
|
|
+ * %GFP_NOFS - Do not make any fs calls while trying to get memory.
|
|
|
+ *
|
|
|
+ * Also it is possible to set different flags by OR'ing
|
|
|
+ * in one or more of the following additional @flags:
|
|
|
+ *
|
|
|
+ * %__GFP_COLD - Request cache-cold pages instead of
|
|
|
+ * trying to return cache-warm pages.
|
|
|
+ *
|
|
|
+ * %__GFP_DMA - Request memory from the DMA-capable zone.
|
|
|
+ *
|
|
|
+ * %__GFP_HIGH - This allocation has high priority and may use emergency pools.
|
|
|
+ *
|
|
|
+ * %__GFP_HIGHMEM - Allocated memory may be from highmem.
|
|
|
+ *
|
|
|
+ * %__GFP_NOFAIL - Indicate that this allocation is in no way allowed to fail
|
|
|
+ * (think twice before using).
|
|
|
+ *
|
|
|
+ * %__GFP_NORETRY - If memory is not immediately available,
|
|
|
+ * then give up at once.
|
|
|
+ *
|
|
|
+ * %__GFP_NOWARN - If allocation fails, don't issue any warnings.
|
|
|
+ *
|
|
|
+ * %__GFP_REPEAT - If allocation fails initially, try once more before failing.
|
|
|
+ */
|
|
|
static inline void *kmalloc(size_t size, gfp_t flags)
|
|
|
{
|
|
|
if (__builtin_constant_p(size)) {
|
|
@@ -111,6 +156,11 @@ found:
|
|
|
|
|
|
extern void *__kzalloc(size_t, gfp_t);
|
|
|
|
|
|
+/**
|
|
|
+ * kzalloc - allocate memory. The memory is set to zero.
|
|
|
+ * @size: how many bytes of memory are required.
|
|
|
+ * @flags: the type of memory to allocate (see kmalloc).
|
|
|
+ */
|
|
|
static inline void *kzalloc(size_t size, gfp_t flags)
|
|
|
{
|
|
|
if (__builtin_constant_p(size)) {
|