]>
Commit | Line | Data |
---|---|---|
0c06db59 HS |
1 | |
2 | #include <common.h> | |
e3332e1a | 3 | #include <memalign.h> |
0c06db59 HS |
4 | #include <linux/compat.h> |
5 | ||
6 | struct p_current cur = { | |
7 | .pid = 1, | |
8 | }; | |
9 | __maybe_unused struct p_current *current = &cur; | |
10 | ||
11 | unsigned long copy_from_user(void *dest, const void *src, | |
12 | unsigned long count) | |
13 | { | |
14 | memcpy((void *)dest, (void *)src, count); | |
15 | return 0; | |
16 | } | |
17 | ||
18 | void *kmalloc(size_t size, int flags) | |
19 | { | |
6b9f9ead | 20 | void *p; |
0c06db59 | 21 | |
e3332e1a | 22 | p = malloc_cache_aligned(size); |
2ad98ab8 | 23 | if (p && flags & __GFP_ZERO) |
6b9f9ead MY |
24 | memset(p, 0, size); |
25 | ||
26 | return p; | |
0c06db59 HS |
27 | } |
28 | ||
0c06db59 HS |
29 | struct kmem_cache *get_mem(int element_sz) |
30 | { | |
31 | struct kmem_cache *ret; | |
32 | ||
33 | ret = memalign(ARCH_DMA_MINALIGN, sizeof(struct kmem_cache)); | |
34 | ret->sz = element_sz; | |
35 | ||
36 | return ret; | |
37 | } | |
38 | ||
39 | void *kmem_cache_alloc(struct kmem_cache *obj, int flag) | |
40 | { | |
e3332e1a | 41 | return malloc_cache_aligned(obj->sz); |
0c06db59 | 42 | } |
4839e868 AT |
43 | |
44 | /** | |
45 | * kmemdup - duplicate region of memory | |
46 | * | |
47 | * @src: memory region to duplicate | |
48 | * @len: memory region length | |
49 | * @gfp: GFP mask to use | |
50 | * | |
51 | * Return: newly allocated copy of @src or %NULL in case of error | |
52 | */ | |
53 | void *kmemdup(const void *src, size_t len, gfp_t gfp) | |
54 | { | |
55 | void *p; | |
56 | ||
57 | p = kmalloc(len, gfp); | |
58 | if (p) | |
59 | memcpy(p, src, len); | |
60 | return p; | |
61 | } |