[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 1/1] include/uk: Add page.h
Thanks, Vlad! Reviewed-by: Costin Lupu <costin.lupu@xxxxxxxxx> On 4/24/19 2:35 PM, Vlad-Andrei BĂDOIU (78692) wrote: > 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); > > _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |