/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __COW_SYS_H__
#define __COW_SYS_H__

#include <kern_util.h>
#include <os.h>
#include <um_malloc.h>

static inline void *cow_malloc(int size)
{
	return uml_kmalloc(size, UM_GFP_KERNEL);
}

static inline void cow_free(void *ptr)
{
	kfree(ptr);
}

#define cow_printf printk

static inline char *cow_strdup(char *str)
{
	return uml_strdup(str);
}

static inline int cow_seek_file(int fd, __u64 offset)
{
	return os_seek_file(fd, offset);
}

static inline int cow_file_size(char *file, unsigned long long *size_out)
{
	return os_file_size(file, size_out);
}

static inline int cow_write_file(int fd, void *buf, int size)
{
	return os_write_file(fd, buf, size);
}

#endif
