=== modified file 'storage/ndb/src/kernel/vm/WatchDog.cpp' --- storage/ndb/src/kernel/vm/WatchDog.cpp 2009-12-15 15:37:38 +0000 +++ storage/ndb/src/kernel/vm/WatchDog.cpp 2010-01-21 11:05:53 +0000 @@ -217,3 +217,9 @@ WatchDog::shutdownSystem(const char *las __FILE__, NST_Watchdog); } + +void +do_refresh_watch_dog(Uint32 place) +{ + globalData.incrementWatchDogCounter(place); +} === modified file 'storage/ndb/src/kernel/vm/ndbd_malloc.cpp' --- storage/ndb/src/kernel/vm/ndbd_malloc.cpp 2009-05-26 18:53:34 +0000 +++ storage/ndb/src/kernel/vm/ndbd_malloc.cpp 2010-01-21 11:11:12 +0000 @@ -25,6 +25,21 @@ #include #endif +extern void do_refresh_watch_dog(Uint32 place); + +void +ndbd_alloc_touch_mem(void *p, size_t sz) +{ + unsigned char * ptr = (unsigned char*)p; + while (sz >= 4096) + { + * ptr = 0; + ptr += 4096; + sz -= 4096; + do_refresh_watch_dog(9); + } +} + #ifdef TRACE_MALLOC static void xxx(size_t size, size_t *s_m, size_t *s_k, size_t *s_b) { @@ -41,6 +56,9 @@ void *ndbd_malloc(size_t size) if (p) { g_allocated_memory += size; + + ndbd_alloc_touch_mem(p, size); + #ifdef TRACE_MALLOC { size_t s_m, s_k, s_b; === modified file 'storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp' --- storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp 2009-12-16 20:55:36 +0000 +++ storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp 2010-01-21 11:10:37 +0000 @@ -49,6 +49,8 @@ struct InitChunk #include +extern void ndbd_alloc_touch_mem(void * p, size_t sz); + static bool do_malloc(Uint32 pages, InitChunk* chunk) @@ -128,6 +130,8 @@ retry: chunk->m_ptr = (Alloc_page*)((UintPtr(ptr) + align) & ~align); } + ndbd_alloc_touch_mem(chunk->m_ptr, chunk->m_cnt * sizeof(Alloc_page)); + #ifdef UNIT_TEST ndbout_c("do_malloc(%d) -> %p %d", pages, ptr, chunk->m_cnt); if (1)