This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Reinstate memalloc use of memmove


The previous change was buried in the Cortex-M3 contrib, but memmove() was
correct. I've made the CDL better instead.

Jifl
-- 
eCosCentric Limited      http://www.eCosCentric.com/     The eCos experts
Barnwell House, Barnwell Drive, Cambridge, UK.       Tel: +44 1223 245571
Registered in England and Wales: Reg No 4422071.
------["Si fractum non sit, noli id reficere"]------       Opinions==mine
Index: ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/services/memalloc/common/current/ChangeLog,v
retrieving revision 1.44
diff -u -5 -p -r1.44 ChangeLog
--- ChangeLog	3 Nov 2008 14:53:52 -0000	1.44
+++ ChangeLog	19 Dec 2008 05:47:14 -0000
@@ -1,5 +1,13 @@
+2008-12-19  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* src/dlmalloc.cxx (MALLOC_COPY): Reinstate fix of 2008-01-06
+	(reverting change of 2008-11-03).
+	* cdl/memalloc.cdl (CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY):
+	Make explicit dependency on isoinfra functionality block which
+	includes memmove(), and set default_value accordingly.
+
 2008-11-03  Nick Garnett  <nickg@ecoscentric.com>
 
 	* src/dlmalloc.cxx (MALLOC_COPY): Replace memmove() with memcpy().
 
 	* include/dlmallocimpl.hxx (class Cyg_Mempool_dlmalloc_Implementation):
Index: cdl/memalloc.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/services/memalloc/common/current/cdl/memalloc.cdl,v
retrieving revision 1.17
diff -u -5 -p -r1.17 memalloc.cdl
--- cdl/memalloc.cdl	6 Jan 2008 12:17:41 -0000	1.17
+++ cdl/memalloc.cdl	19 Dec 2008 05:47:14 -0000
@@ -176,16 +176,19 @@ cdl_package CYGPKG_MEMALLOC {
             }
 
            cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY {
                 display       "Use system memmove() and memset()"
                 requires      CYGPKG_ISOINFRA
-                default_value { 0 != CYGPKG_ISOINFRA }
+                requires      CYGINT_ISO_STRING_MEMFUNCS
+                default_value { (0 != CYGPKG_ISOINFRA) && (0 != CYGINT_ISO_STRING_MEMFUNCS) }
                 description   "
                     This may be used to control whether memset() and memmove()
                     are used within the implementation. The alternative is
-                    to use some macro equivalents, which some people report
-                    are faster in some circumstances."
+                    to use some macro equivalents, which have been reported
+                    to be faster in some circumstances. The use of \"MEMCPY\"
+                    in the CDL option name is an anachronism and only
+                    present for backwards compatibility."
            }
 
            cdl_option CYGNUM_MEMALLOC_ALLOCATOR_DLMALLOC_ALIGNMENT {
                 display       "Minimum alignment of allocated blocks"
                 flavor        data
Index: src/dlmalloc.cxx
===================================================================
RCS file: /cvs/ecos/ecos/packages/services/memalloc/common/current/src/dlmalloc.cxx,v
retrieving revision 1.12
diff -u -5 -p -r1.12 dlmalloc.cxx
--- src/dlmalloc.cxx	3 Nov 2008 14:53:52 -0000	1.12
+++ src/dlmalloc.cxx	19 Dec 2008 05:47:14 -0000
@@ -331,11 +331,11 @@ do {                                    
         if(mcsz >= 9*sizeof(mcsz)) { *mcdst++ = *mcsrc++;                     \
                                      *mcdst++ = *mcsrc++; }}}                 \
                                      *mcdst++ = *mcsrc++;                     \
                                      *mcdst++ = *mcsrc++;                     \
                                      *mcdst   = *mcsrc  ;                     \
-  } else memcpy(dest, src, mcsz);                                             \
+  } else memmove(dest, src, mcsz);                                            \
 } while(0)
 
 #else /* !CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY */
 
 /* Use Duff's device for good zeroing/copying performance. */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]