VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
a1d312de7780e (Thomas Gleixner    2019-05-22 09:51:42 +0200  1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  2) /*
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  3)  * malloc.h - NTFS kernel memory handling. Part of the Linux-NTFS project.
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  4)  *
f6098cf449b81 (Anton Altaparmakov 2005-09-19 09:41:39 +0100  5)  * Copyright (c) 2001-2005 Anton Altaparmakov
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  6)  */
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  7) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  8) #ifndef _LINUX_NTFS_MALLOC_H
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  9) #define _LINUX_NTFS_MALLOC_H
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 10) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 11) #include <linux/vmalloc.h>
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 12) #include <linux/slab.h>
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 13) #include <linux/highmem.h>
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 14) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 15) /**
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 16)  * __ntfs_malloc - allocate memory in multiples of pages
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 17)  * @size:	number of bytes to allocate
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 18)  * @gfp_mask:	extra flags for the allocator
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 19)  *
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 20)  * Internal function.  You probably want ntfs_malloc_nofs()...
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 21)  *
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 22)  * Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 23)  * returns a pointer to the allocated memory.
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 24)  *
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 25)  * If there was insufficient memory to complete the request, return NULL.
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 26)  * Depending on @gfp_mask the allocation may be guaranteed to succeed.
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 27)  */
29b8990513b07 (Anton Altaparmakov 2005-10-11 14:54:42 +0100 28) static inline void *__ntfs_malloc(unsigned long size, gfp_t gfp_mask)
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 29) {
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 30) 	if (likely(size <= PAGE_SIZE)) {
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 31) 		BUG_ON(!size);
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 32) 		/* kmalloc() has per-CPU caches so is faster for now. */
89ecf38c7aee6 (Anton Altaparmakov 2005-09-12 15:43:03 +0100 33) 		return kmalloc(PAGE_SIZE, gfp_mask & ~__GFP_HIGHMEM);
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 34) 		/* return (void *)__get_free_page(gfp_mask); */
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 35) 	}
ca79b0c211af6 (Arun KS            2018-12-28 00:34:29 -0800 36) 	if (likely((size >> PAGE_SHIFT) < totalram_pages()))
88dca4ca5a93d (Christoph Hellwig  2020-06-01 21:51:40 -0700 37) 		return __vmalloc(size, gfp_mask);
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 38) 	return NULL;
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 39) }
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 40) 
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 41) /**
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 42)  * ntfs_malloc_nofs - allocate memory in multiples of pages
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 43)  * @size:	number of bytes to allocate
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 44)  *
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 45)  * Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 46)  * returns a pointer to the allocated memory.
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 47)  *
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 48)  * If there was insufficient memory to complete the request, return NULL.
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 49)  */
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 50) static inline void *ntfs_malloc_nofs(unsigned long size)
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 51) {
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 52) 	return __ntfs_malloc(size, GFP_NOFS | __GFP_HIGHMEM);
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 53) }
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 54) 
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 55) /**
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 56)  * ntfs_malloc_nofs_nofail - allocate memory in multiples of pages
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 57)  * @size:	number of bytes to allocate
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 58)  *
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 59)  * Allocates @size bytes of memory, rounded up to multiples of PAGE_SIZE and
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 60)  * returns a pointer to the allocated memory.
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 61)  *
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 62)  * This function guarantees that the allocation will succeed.  It will sleep
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 63)  * for as long as it takes to complete the allocation.
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 64)  *
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 65)  * If there was insufficient memory to complete the request, return NULL.
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 66)  */
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 67) static inline void *ntfs_malloc_nofs_nofail(unsigned long size)
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 68) {
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 69) 	return __ntfs_malloc(size, GFP_NOFS | __GFP_HIGHMEM | __GFP_NOFAIL);
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 70) }
06d0e3cf3d527 (Anton Altaparmakov 2005-09-08 16:28:25 +0100 71) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 72) static inline void ntfs_free(void *addr)
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 73) {
b0cbeee72f889 (Pekka Enberg       2015-06-24 16:54:48 -0700 74) 	kvfree(addr);
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 75) }
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 76) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 77) #endif /* _LINUX_NTFS_MALLOC_H */