[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 1/1] include/uk: Add page.h
This patch introduces 'page.h' which contains page related operations. For now it contains only the page_pgup() and page_pgdown() macros. The patch also fixes the page alignment macro which was defined and used by vfscore, replacing it with our macro instead. Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx> --- include/uk/page.h | 51 ++++++++++++++++++++++++++++++ lib/ramfs/ramfs_vnops.c | 6 ++-- lib/ukallocbbuddy/bbuddy.c | 4 +-- lib/vfscore/include/vfscore/prex.h | 2 -- 4 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 include/uk/page.h diff --git a/include/uk/page.h b/include/uk/page.h new file mode 100644 index 00000000..48ae9602 --- /dev/null +++ b/include/uk/page.h @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Authors: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx> + * + * Copyright (c) 2019, NEC Europe Ltd., NEC Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. + */ + +#ifndef __UK_PAGE_H__ +#define __UK_PAGE_H__ + +#include <uk/essentials.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define round_pgup(a) ALIGN_UP((a), __PAGE_SIZE) +#define round_pgdown(a) ALIGN_DOWN((a), __PAGE_SIZE) + +#ifdef __cplusplus +} +#endif + +#endif /* __UK_PAGE_H__ */ diff --git a/lib/ramfs/ramfs_vnops.c b/lib/ramfs/ramfs_vnops.c index 58f78c00..95d6d35b 100644 --- a/lib/ramfs/ramfs_vnops.c +++ b/lib/ramfs/ramfs_vnops.c @@ -44,7 +44,7 @@ #include <string.h> #include <stdlib.h> -#include <vfscore/prex.h> +#include <uk/page.h> #include <vfscore/vnode.h> #include <vfscore/mount.h> #include <vfscore/uio.h> @@ -354,7 +354,7 @@ ramfs_truncate(struct vnode *vp, off_t length) } } else if ((size_t) length > np->rn_bufsize) { /* TODO: this could use a page level allocator */ - new_size = round_page(length); + new_size = round_pgup(length); new_buf = malloc(new_size); if (!new_buf) return EIO; @@ -469,7 +469,7 @@ ramfs_write(struct vnode *vp, struct uio *uio, int ioflag) if (end_pos > (off_t) np->rn_bufsize) { // XXX: this could use a page level allocator - size_t new_size = round_page(end_pos); + size_t new_size = round_pgup(end_pos); void *new_buf = malloc(new_size); if (!new_buf) diff --git a/lib/ukallocbbuddy/bbuddy.c b/lib/ukallocbbuddy/bbuddy.c index 13a7942b..eb47e391 100644 --- a/lib/ukallocbbuddy/bbuddy.c +++ b/lib/ukallocbbuddy/bbuddy.c @@ -45,6 +45,7 @@ #include <uk/arch/limits.h> #include <uk/print.h> #include <uk/assert.h> +#include <uk/page.h> typedef struct chunk_head_st chunk_head_t; typedef struct chunk_tail_st chunk_tail_t; @@ -79,9 +80,6 @@ struct uk_bbpalloc { struct uk_bbpalloc_memr *memr_head; }; -#define round_pgup(a) ALIGN_UP((a), __PAGE_SIZE) -#define round_pgdown(a) ALIGN_DOWN((a), __PAGE_SIZE) - /********************* * ALLOCATION BITMAP * One bit per page of memory. Bit set => page is allocated. diff --git a/lib/vfscore/include/vfscore/prex.h b/lib/vfscore/include/vfscore/prex.h index bfa95655..1ba8f969 100644 --- a/lib/vfscore/include/vfscore/prex.h +++ b/lib/vfscore/include/vfscore/prex.h @@ -43,8 +43,6 @@ #define DO_RDWR 0x2 -#define round_page(x) (((x) + __PAGE_MASK) & ~__PAGE_MASK) - size_t strlcat(char *dst, const char *src, size_t siz); size_t strlcpy(char *dst, const char *src, size_t siz); -- 2.20.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |