#include #include #include #include #include struct p_current cur = { .pid = 1, }; __maybe_unused struct p_current *current = &cur; unsigned long copy_from_user(void *dest, const void *src, unsigned long count) { memcpy((void *)dest, (void *)src, count); return 0; } void *kmalloc(size_t size, int flags) { void *p; p = malloc_cache_aligned(size); if (p && flags & __GFP_ZERO) memset(p, 0, size); return p; } struct kmem_cache *get_mem(int element_sz) { struct kmem_cache *ret; ret = memalign(ARCH_DMA_MINALIGN, sizeof(struct kmem_cache)); ret->sz = element_sz; return ret; } void *kmem_cache_alloc(struct kmem_cache *obj, int flag) { return malloc_cache_aligned(obj->sz); } /** * kmemdup - duplicate region of memory * * @src: memory region to duplicate * @len: memory region length * @gfp: GFP mask to use * * Return: newly allocated copy of @src or %NULL in case of error */ void *kmemdup(const void *src, size_t len, gfp_t gfp) { void *p; p = kmalloc(len, gfp); if (p) memcpy(p, src, len); return p; }