[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [PATCH 17/40] mini-os: implement the memmove/memchr
Hello, Huang Shijie, on ven. 03 nov. 2017 03:11:54 +0000, wrote: > This patch is split from the Chen Baozi's old patch: > > "This activates the ARM code added in the previous patches. On > ARM, Mini-OS will boot and display some output on the console. Tested with:" > > Note: this code is BSD copyright, and the code is originally come from > NLnet Labs. Which BSD? There are several variants, we are not allowed to confuse them. C-codewise, Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > Change-Id: Ife7830d4ba6a8b6e3e93622e1a469ae1cf620c39 > Jira: ENTOS-247 > Signed-off-by: Huang Shijie <shijie.huang@xxxxxxx> > --- > Makefile | 1 + > lib/memmove.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > lib/string.c | 12 ++++++++++++ > 3 files changed, 57 insertions(+) > create mode 100644 lib/memmove.c > > diff --git a/Makefile b/Makefile > index 88315c4..43075e1 100644 > --- a/Makefile > +++ b/Makefile > @@ -61,6 +61,7 @@ src-y += lib/math.c > src-y += lib/printf.c > src-y += lib/stack_chk_fail.c > src-y += lib/string.c > +src-y += lib/memmove.c > src-y += lib/sys.c > src-y += lib/xmalloc.c > src-$(CONFIG_XENBUS) += lib/xs.c > diff --git a/lib/memmove.c b/lib/memmove.c > new file mode 100644 > index 0000000..28f2706 > --- /dev/null > +++ b/lib/memmove.c > @@ -0,0 +1,44 @@ > +/* > + * memmove.c: memmove compat implementation. > + * > + * Copyright (c) 2001-2008, NLnet Labs. All rights reserved. > + * > + * See COPYING for the license. > +*/ > +#include <os.h> > +#include <mini-os/lib.h> > + > +#ifndef HAVE_LIBC > + > +void *memmove(void *dest, const void *src, size_t n) > +{ > + uint8_t* from = (uint8_t*) src; > + uint8_t* to = (uint8_t*) dest; > + > + if (from == to || n == 0) > + return dest; > + if (to > from && to-from < (int)n) { > + /* to overlaps with from */ > + /* <from......> */ > + /* <to........> */ > + /* copy in reverse, to avoid overwriting from */ > + int i; > + for(i=n-1; i>=0; i--) > + to[i] = from[i]; > + return dest; > + } > + if (from > to && from-to < (int)n) { > + /* to overlaps with from */ > + /* <from......> */ > + /* <to........> */ > + /* copy forwards, to avoid overwriting from */ > + size_t i; > + for(i=0; i<n; i++) > + to[i] = from[i]; > + return dest; > + } > + memcpy(dest, src, n); > + return dest; > +} > + > +#endif > diff --git a/lib/string.c b/lib/string.c > index 8b24146..c96ca41 100644 > --- a/lib/string.c > +++ b/lib/string.c > @@ -225,4 +225,16 @@ int ffs(int i) > return 0; > } > > +void *memchr(const void *s, int c, size_t n) > +{ > + if (n != 0) { > + const unsigned char *p = s; > + > + do { > + if (*p++ == (unsigned char)c) > + return ((void *)(uintptr_t)(p - 1)); > + } while (--n != 0); > + } > + return (NULL); > +} > #endif > -- > 2.7.4 > > > _______________________________________________ > Minios-devel mailing list > Minios-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel -- Samuel <S> KK1 a 1 conseil de comment s'attaquer a du code java ou ya plus de 50 classes ? par kel bout ? <B> le troisième -+- #ens-mim en stage -+- _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |