Sha256: f828d407c1894fd6ad8f1f8bcc03e30d06c0a5f86af732a1ddcd52aef9cb88db

Contents?: true

Size: 987 Bytes

Versions: 26

Compression:

Stored size: 987 Bytes

Contents

/* SPDX-License-Identifier: MIT */

#ifndef CONFIG_NOLIBC
#error "This file should only be compiled for no libc build"
#endif

#include "lib.h"
#include "syscall.h"

void *__uring_memset(void *s, int c, size_t n)
{
	size_t i;
	unsigned char *p = s;

	for (i = 0; i < n; i++) {
		p[i] = (unsigned char) c;

		/*
		 * An empty inline ASM to avoid auto-vectorization
		 * because it's too bloated for liburing.
		 */
		__asm__ volatile ("");
	}

	return s;
}

struct uring_heap {
	size_t		len;
	char		user_p[] __attribute__((__aligned__));
};

void *__uring_malloc(size_t len)
{
	struct uring_heap *heap;

	heap = __sys_mmap(NULL, sizeof(*heap) + len, PROT_READ | PROT_WRITE,
			  MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
	if (IS_ERR(heap))
		return NULL;

	heap->len = sizeof(*heap) + len;
	return heap->user_p;
}

void __uring_free(void *p)
{
	struct uring_heap *heap;

	if (uring_unlikely(!p))
		return;

	heap = container_of(p, struct uring_heap, user_p);
	__sys_munmap(heap, heap->len);
}

Version data entries

26 entries across 26 versions & 3 rubygems

Version Path
uringmachine-0.5.1 vendor/liburing/src/nolibc.c
uringmachine-0.5 vendor/liburing/src/nolibc.c
uringmachine-0.4 vendor/liburing/src/nolibc.c
uringmachine-0.3 vendor/liburing/src/nolibc.c
uringmachine-0.2 vendor/liburing/src/nolibc.c
uringmachine-0.1 vendor/liburing/src/nolibc.c
iou-0.2 vendor/liburing/src/nolibc.c
iou-0.1 vendor/liburing/src/nolibc.c
polyphony-1.6 vendor/liburing/src/nolibc.c
polyphony-1.5 vendor/liburing/src/nolibc.c
polyphony-1.4 vendor/liburing/src/nolibc.c
polyphony-1.3 vendor/liburing/src/nolibc.c
polyphony-1.2.1 vendor/liburing/src/nolibc.c
polyphony-1.2 vendor/liburing/src/nolibc.c
polyphony-1.1.1 vendor/liburing/src/nolibc.c
polyphony-1.1 vendor/liburing/src/nolibc.c
polyphony-1.0.2 vendor/liburing/src/nolibc.c
polyphony-1.0.1 vendor/liburing/src/nolibc.c
polyphony-1.0 vendor/liburing/src/nolibc.c
polyphony-0.99.6 vendor/liburing/src/nolibc.c