diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..6dfcae4 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,278 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "UbixOS V2" +PROJECT_NUMBER = 2.0 +OUTPUT_DIRECTORY = /usr/home/reddawg/source/ubix2/doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /usr/home/reddawg/source/ubix2/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = YES +SORT_BY_SCOPE_NAME = YES +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /usr/home/reddawg/source/ubix2/src/sys/ +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox \ + *.s \ + *.S +RECURSIVE = YES +EXCLUDE = /usr/home/reddawg/source/ubix2/src/sys/sde \ + /usr/home/reddawg/source/ubix2/src/lib/objgfx40 +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = YES +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = YES +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = ubix2.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff --git a/doc/html/bcopy_8c-source.html b/doc/html/bcopy_8c-source.html new file mode 100644 index 0000000..be07adc --- /dev/null +++ b/doc/html/bcopy_8c-source.html @@ -0,0 +1,175 @@ + + +UbixOS V2: src/sys/lib/bcopy.c Source File + + + + +
+
+
+
+ +

bcopy.c

Go to the documentation of this file.
00001 /*-
+00002  * Copyright (c) 1990, 1993
+00003  *      The Regents of the University of California.  All rights reserved.
+00004  *
+00005  * This code is derived from software contributed to Berkeley by
+00006  * Chris Torek.
+00007  *
+00008  * Redistribution and use in source and binary forms, with or without
+00009  * modification, are permitted provided that the following conditions
+00010  * are met:
+00011  * 1. Redistributions of source code must retain the above copyright
+00012  *    notice, this list of conditions and the following disclaimer.
+00013  * 2. Redistributions in binary form must reproduce the above copyright
+00014  *    notice, this list of conditions and the following disclaimer in the
+00015  *    documentation and/or other materials provided with the distribution.
+00016  * 3. All advertising materials mentioning features or use of this software
+00017  *    must display the following acknowledgement:
+00018  *      This product includes software developed by the University of
+00019  *      California, Berkeley and its contributors.
+00020  * 4. Neither the name of the University nor the names of its contributors
+00021  *    may be used to endorse or promote products derived from this software
+00022  *    without specific prior written permission.
+00023  *
+00024  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+00025  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00026  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00027  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+00028  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00029  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00030  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00031  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00032  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00033  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00034  * SUCH DAMAGE.
+00035  *
+00036  * $ID: $
+00037  */
+00038 
+00039 #include <ubixos/types.h>
+00040 
+00041 /*
+00042  * sizeof(word) MUST BE A POWER OF TWO
+00043  * SO THAT wmask BELOW IS ALL ONES
+00044  */
+00045 typedef int word;               /* "word" used for optimal copy speed */
+00046 typedef u_int32_t uintptr_t;
+00047 
+00048 #define wsize   sizeof(word)
+00049 #define wmask   (wsize - 1)
+00050 
+00051 /*
+00052  * Copy a block of memory, handling overlap.
+00053  * This is the routine that actually implements
+00054  * (the portable versions of) bcopy, memcpy, and memmove.
+00055  */
+00056 #if defined(MEMCOPY) || defined(MEMMOVE)
+00057 #include <string.h>
+00058 
+00059 void *
+00060 #ifdef MEMCOPY
+00061 memcpy
+00062 #else
+00063 memmove
+00064 #endif
+00065 (void *dst0, const void *src0, size_t length)
+00066 #else
+00067 #include <strings.h>
+00068 
+00069 void
+00070 bcopy(const void *src0, void *dst0, size_t length)
+00071 #endif
+00072 {
+00073         char *dst = dst0;
+00074         const char *src = src0;
+00075         size_t t;
+00076 
+00077         if (length == 0 || dst == src)          /* nothing to do */
+00078                 goto done;
+00079 
+00080         /*
+00081          * Macros: loop-t-times; and loop-t-times, t>0
+00082          */
+00083 #define TLOOP(s) if (t) TLOOP1(s)
+00084 #define TLOOP1(s) do { s; } while (--t)
+00085 
+00086         if ((unsigned long)dst < (unsigned long)src) {
+00087                 /*
+00088                  * Copy forward.
+00089                  */
+00090                 t = (uintptr_t)src;     /* only need low bits */
+00091                 if ((t | (uintptr_t)dst) & wmask) {
+00092                         /*
+00093                          * Try to align operands.  This cannot be done
+00094                          * unless the low bits match.
+00095                          */
+00096                         if ((t ^ (uintptr_t)dst) & wmask || length < wsize)
+00097                                 t = length;
+00098                         else
+00099                                 t = wsize - (t & wmask);
+00100                         length -= t;
+00101                         TLOOP1(*dst++ = *src++);
+00102                 }
+00103                 /*
+00104                  * Copy whole words, then mop up any trailing bytes.
+00105                  */
+00106                 t = length / wsize;
+00107                 TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
+00108                 t = length & wmask;
+00109                 TLOOP(*dst++ = *src++);
+00110         } else {
+00111                 /*
+00112                  * Copy backwards.  Otherwise essentially the same.
+00113                  * Alignment works as before, except that it takes
+00114                  * (t&wmask) bytes to align, not wsize-(t&wmask).
+00115                  */
+00116                 src += length;
+00117                 dst += length;
+00118                 t = (uintptr_t)src;
+00119                 if ((t | (uintptr_t)dst) & wmask) {
+00120                         if ((t ^ (uintptr_t)dst) & wmask || length <= wsize)
+00121                                 t = length;
+00122                         else
+00123                                 t &= wmask;
+00124                         length -= t;
+00125                         TLOOP1(*--dst = *--src);
+00126                 }
+00127                 t = length / wsize;
+00128                 TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);
+00129                 t = length & wmask;
+00130                 TLOOP(*--dst = *--src);
+00131         }
+00132 done:
+00133 #if defined(MEMCOPY) || defined(MEMMOVE)
+00134         return (dst0);
+00135 #else
+00136         return;
+00137 #endif
+00138 }
+

Generated on Tue Dec 5 11:01:15 2006 for UbixOS V2 by  + +doxygen 1.4.7
+ + diff --git a/doc/html/bcopy_8c.html b/doc/html/bcopy_8c.html new file mode 100644 index 0000000..399acc8 --- /dev/null +++ b/doc/html/bcopy_8c.html @@ -0,0 +1,220 @@ + + +UbixOS V2: src/sys/lib/bcopy.c File Reference + + + + +
+
+
+
+ +

bcopy.c File Reference

#include <ubixos/types.h>
+#include <strings.h>
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + +

Defines

#define TLOOP(s)   if (t) TLOOP1(s)
#define TLOOP1(s)   do { s; } while (--t)
#define wmask   (wsize - 1)
#define wsize   sizeof(word)

Typedefs

typedef u_int32_t uintptr_t
typedef int word

Functions

void bcopy (const void *src0, void *dst0, size_t length)
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define TLOOP (  )    if (t) TLOOP1(s)
+
+
+ +

+ +

+Referenced by bcopy(). +

+

+ +

+
+ + + + + + + + + +
#define TLOOP1 (  )    do { s; } while (--t)
+
+
+ +

+ +

+Referenced by bcopy(). +

+

+ +

+
+ + + + +
#define wmask   (wsize - 1)
+
+
+ +

+ +

+Definition at line 49 of file bcopy.c. +

+Referenced by bcopy(), and memset(). +

+

+ +

+
+ + + + +
#define wsize   sizeof(word)
+
+
+ +

+ +

+Definition at line 48 of file bcopy.c. +

+Referenced by bcopy(), and memset(). +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef u_int32_t uintptr_t
+
+
+ +

+ +

+Definition at line 46 of file bcopy.c. +

+

+ +

+
+ + + + +
typedef int word
+
+
+ +

+ +

+Definition at line 45 of file bcopy.c. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void bcopy (const void *  src0,
void *  dst0,
size_t  length 
)
+
+
+ +

+ +

+Definition at line 70 of file bcopy.c. +

+References done, TLOOP, TLOOP1, wmask, and wsize. +

+

+


Generated on Tue Dec 5 11:01:18 2006 for UbixOS V2 by  + +doxygen 1.4.7
+ + diff --git a/doc/html/memcpy_8c-source.html b/doc/html/memcpy_8c-source.html new file mode 100644 index 0000000..7dde43c --- /dev/null +++ b/doc/html/memcpy_8c-source.html @@ -0,0 +1,39 @@ + + +UbixOS V2: src/sys/lib/memcpy.c Source File + + + + +
+
+
+
+ +

memcpy.c

Go to the documentation of this file.
00001 #define MEMCOPY
+00002 #include "bcopy.c"
+

Generated on Tue Dec 5 11:01:15 2006 for UbixOS V2 by  + +doxygen 1.4.7
+ + diff --git a/doc/html/memcpy_8c.html b/doc/html/memcpy_8c.html new file mode 100644 index 0000000..1c36448 --- /dev/null +++ b/doc/html/memcpy_8c.html @@ -0,0 +1,64 @@ + + +UbixOS V2: src/sys/lib/memcpy.c File Reference + + + + +
+
+
+
+ +

memcpy.c File Reference

#include "bcopy.c"
+ +

+Go to the source code of this file. + + + + +

Defines

#define MEMCOPY
+


Define Documentation

+ +
+
+ + + + +
#define MEMCOPY
+
+
+ +

+ +

+Definition at line 1 of file memcpy.c. +

+

+


Generated on Tue Dec 5 11:01:18 2006 for UbixOS V2 by  + +doxygen 1.4.7
+ + diff --git a/doc/xml/bcopy_8c.xml b/doc/xml/bcopy_8c.xml new file mode 100644 index 0000000..4da151d --- /dev/null +++ b/doc/xml/bcopy_8c.xml @@ -0,0 +1,312 @@ + + + + bcopy.c + ubixos/types.h + strings.h + string.h + src/sys/lib/memcpy.c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TLOOP + s + if (t) TLOOP1(s) + + + + + + + + bcopy + + + TLOOP1 + s + do { s; } while (--t) + + + + + + + + bcopy + + + wmask + (wsize - 1) + + + + + + + + bcopy + memset + + + wsize + sizeof(word) + + + + + + + + bcopy + memset + + + + + u_int32_t + typedef u_int32_t uintptr_t + + uintptr_t + + + + + + + + + + int + typedef int word + + word + + + + + + + + + + + + void + void bcopy + (const void *src0, void *dst0, size_t length) + bcopy + + const void * + src0 + + + void * + dst0 + + + size_t + length + + + + + + + + + done + TLOOP + TLOOP1 + wmask + wsize + + + + + + + +/*- +*Copyright(c)1990,1993 +*TheRegentsoftheUniversityofCalifornia.Allrightsreserved. +* +*ThiscodeisderivedfromsoftwarecontributedtoBerkeleyby +*ChrisTorek. +* +*Redistributionanduseinsourceandbinaryforms,withorwithout +*modification,arepermittedprovidedthatthefollowingconditions +*aremet: +*1.Redistributionsofsourcecodemustretaintheabovecopyright +*notice,thislistofconditionsandthefollowingdisclaimer. +*2.Redistributionsinbinaryformmustreproducetheabovecopyright +*notice,thislistofconditionsandthefollowingdisclaimerinthe +*documentationand/orothermaterialsprovidedwiththedistribution. +*3.Alladvertisingmaterialsmentioningfeaturesoruseofthissoftware +*mustdisplaythefollowingacknowledgement: +*ThisproductincludessoftwaredevelopedbytheUniversityof +*California,Berkeleyanditscontributors. +*4.NeitherthenameoftheUniversitynorthenamesofitscontributors +*maybeusedtoendorseorpromoteproductsderivedfromthissoftware +*withoutspecificpriorwrittenpermission. +* +*THISSOFTWAREISPROVIDEDBYTHEREGENTSANDCONTRIBUTORS``ASIS''AND +*ANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THE +*IMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSE +*AREDISCLAIMED.INNOEVENTSHALLTHEREGENTSORCONTRIBUTORSBELIABLE +*FORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIAL +*DAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODS +*ORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION) +*HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICT +*LIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAY +*OUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOF +*SUCHDAMAGE. +* +*$ID:$ +*/ + +#include<ubixos/types.h> + +/* +*sizeof(word)MUSTBEAPOWEROFTWO +*SOTHATwmaskBELOWISALLONES +*/ +typedefintword;/*"word"usedforoptimalcopyspeed*/ +typedefu_int32_tuintptr_t; + +#definewsizesizeof(word) +#definewmask(wsize-1) + +/* +*Copyablockofmemory,handlingoverlap. +*Thisistheroutinethatactuallyimplements +*(theportableversionsof)bcopy,memcpy,andmemmove. +*/ +#ifdefined(MEMCOPY)||defined(MEMMOVE) +#include<string.h> + +void* +#ifdefMEMCOPY +memcpy +#else +memmove +#endif +(void*dst0,constvoid*src0,size_tlength) +#else +#include<strings.h> + +void +bcopy(constvoid*src0,void*dst0,size_tlength) +#endif +{ +char*dst=dst0; +constchar*src=src0; +size_tt; + +if(length==0||dst==src)/*nothingtodo*/ +gotodone; + +/* +*Macros:loop-t-times;andloop-t-times,t>0 +*/ +#defineTLOOP(s)if(t)TLOOP1(s) +#defineTLOOP1(s)do{s;}while(--t) + +if((unsignedlong)dst<(unsignedlong)src){ +/* +*Copyforward. +*/ +t=(uintptr_t)src;/*onlyneedlowbits*/ +if((t|(uintptr_t)dst)&wmask){ +/* +*Trytoalignoperands.Thiscannotbedone +*unlessthelowbitsmatch. +*/ +if((t^(uintptr_t)dst)&wmask||length<wsize) +t=length; +else +t=wsize-(t&wmask); +length-=t; +TLOOP1(*dst++=*src++); +} +/* +*Copywholewords,thenmopupanytrailingbytes. +*/ +t=length/wsize; +TLOOP(*(word*)dst=*(word*)src;src+=wsize;dst+=wsize); +t=length&wmask; +TLOOP(*dst++=*src++); +}else{ +/* +*Copybackwards.Otherwiseessentiallythesame. +*Alignmentworksasbefore,exceptthatittakes +*(t&wmask)bytestoalign,notwsize-(t&wmask). +*/ +src+=length; +dst+=length; +t=(uintptr_t)src; +if((t|(uintptr_t)dst)&wmask){ +if((t^(uintptr_t)dst)&wmask||length<=wsize) +t=length; +else +t&=wmask; +length-=t; +TLOOP1(*--dst=*--src); +} +t=length/wsize; +TLOOP(src-=wsize;dst-=wsize;*(word*)dst=*(word*)src); +t=length&wmask; +TLOOP(*--dst=*--src); +} +done: +#ifdefined(MEMCOPY)||defined(MEMMOVE) +return(dst0); +#else +return; +#endif +} + + + + diff --git a/doc/xml/memcpy_8c.xml b/doc/xml/memcpy_8c.xml new file mode 100644 index 0000000..161f2fd --- /dev/null +++ b/doc/xml/memcpy_8c.xml @@ -0,0 +1,65 @@ + + + + memcpy.c + bcopy.c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MEMCOPY + + + + + + + + + + + + + + +#defineMEMCOPY +#include"bcopy.c" + + + +