mirror of https://github.com/seL4/seL4_libs.git
52 lines
1.7 KiB
C
52 lines
1.7 KiB
C
/*
|
|
* Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <autoconf.h>
|
|
#include <sel4/types.h>
|
|
#include <allocman/utspace/utspace.h>
|
|
#include <vka/cspacepath_t.h>
|
|
#include <assert.h>
|
|
|
|
/* This is an untyped manager that is vaguely related to the twinkle allocator.
|
|
This means it does a simple progressive allocation of untypeds and doesn't
|
|
support free. */
|
|
|
|
struct utspace_twinkle_ut {
|
|
cspacepath_t path;
|
|
size_t offset;
|
|
size_t size_bits;
|
|
};
|
|
|
|
typedef struct utspace_twinkle {
|
|
size_t num_uts;
|
|
struct utspace_twinkle_ut *uts;
|
|
} utspace_twinkle_t;
|
|
|
|
void utspace_twinkle_create(utspace_twinkle_t *twinkle);
|
|
int _utspace_twinkle_add_uts(struct allocman *alloc, void *_twinkle, size_t num, const cspacepath_t *uts, size_t *size_bits, uintptr_t *paddr, int utType);
|
|
|
|
seL4_Word _utspace_twinkle_alloc(struct allocman *alloc, void *_twinkle, size_t size_bits, seL4_Word type, const cspacepath_t *slot, uintptr_t paddr, bool canBeDev, int *error);
|
|
void _utspace_twinkle_free(struct allocman *alloc, void *_twinkle, seL4_Word cookie, size_t size_bits);
|
|
|
|
static inline uintptr_t _utspace_twinkle_paddr(void *_twinkle, seL4_Word cookie, size_t size_bits) {
|
|
assert(!"not implemented");
|
|
return ALLOCMAN_NO_PADDR;
|
|
}
|
|
|
|
static inline struct utspace_interface utspace_twinkle_make_interface(utspace_twinkle_t *twinkle) {
|
|
return (struct utspace_interface) {
|
|
.alloc = _utspace_twinkle_alloc,
|
|
.free = _utspace_twinkle_free,
|
|
.add_uts = _utspace_twinkle_add_uts,
|
|
.paddr = _utspace_twinkle_paddr,
|
|
.properties = ALLOCMAN_DEFAULT_PROPERTIES,
|
|
.utspace = twinkle
|
|
};
|
|
}
|
|
|