fs/ntfs/malloc.h
Source file repositories/reference/linux-study-clean/fs/ntfs/malloc.h
File Facts
- System
- Linux kernel
- Corpus path
fs/ntfs/malloc.h- Extension
.h- Size
- 2314 bytes
- Lines
- 78
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
Dependency Surface
linux/vmalloc.hlinux/slab.hlinux/highmem.h
Detected Declarations
function Copyrightfunction ntfs_free
Annotated Snippet
#ifndef _LINUX_NTFS_MALLOC_H
#define _LINUX_NTFS_MALLOC_H
#include <linux/vmalloc.h>
#include <linux/slab.h>
#include <linux/highmem.h>
/**
* __ntfs_malloc - allocate memory in multiples of pages
* @size: number of bytes to allocate
* @gfp_mask: extra flags for the allocator
*
* Internal function. You probably want ntfs_malloc_nofs()...
*
* Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
* returns a pointer to the allocated memory.
*
* If there was insufficient memory to complete the request, return NULL.
* Depending on @gfp_mask the allocation may be guaranteed to succeed.
*/
static inline void *__ntfs_malloc(unsigned long size, gfp_t gfp_mask)
{
if (likely(size <= PAGE_SIZE)) {
BUG_ON(!size);
/* kmalloc() has per-CPU caches so is faster for now. */
return kmalloc(PAGE_SIZE, gfp_mask & ~__GFP_HIGHMEM);
/* return (void *)__get_free_page(gfp_mask); */
}
if (likely((size >> PAGE_SHIFT) < totalram_pages()))
return __vmalloc(size, gfp_mask);
return NULL;
}
/**
* ntfs_malloc_nofs - allocate memory in multiples of pages
* @size: number of bytes to allocate
*
* Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
* returns a pointer to the allocated memory.
*
* If there was insufficient memory to complete the request, return NULL.
*/
static inline void *ntfs_malloc_nofs(unsigned long size)
{
return __ntfs_malloc(size, GFP_NOFS | __GFP_HIGHMEM);
}
/**
* ntfs_malloc_nofs_nofail - allocate memory in multiples of pages
* @size: number of bytes to allocate
*
* Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
* returns a pointer to the allocated memory.
*
* This function guarantees that the allocation will succeed. It will sleep
* for as long as it takes to complete the allocation.
*
* If there was insufficient memory to complete the request, return NULL.
*/
static inline void *ntfs_malloc_nofs_nofail(unsigned long size)
{
return __ntfs_malloc(size, GFP_NOFS | __GFP_HIGHMEM | __GFP_NOFAIL);
}
static inline void ntfs_free(void *addr)
{
kvfree(addr);
}
#endif /* _LINUX_NTFS_MALLOC_H */
Annotation
- Immediate include surface: `linux/vmalloc.h`, `linux/slab.h`, `linux/highmem.h`.
- Detected declarations: `function Copyright`, `function ntfs_free`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.