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