1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*b30d1939SAndy Fiddaman * Copyright (c) 1985-2011 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6*b30d1939SAndy Fiddaman * Eclipse Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10*b30d1939SAndy Fiddaman * http://www.eclipse.org/org/documents/epl-v10.html * 11*b30d1939SAndy Fiddaman * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 12da2e3ebdSchin * * 13da2e3ebdSchin * Information and Software Systems Research * 14da2e3ebdSchin * AT&T Research * 15da2e3ebdSchin * Florham Park NJ * 16da2e3ebdSchin * * 17da2e3ebdSchin * Glenn Fowler <gsf@research.att.com> * 18da2e3ebdSchin * David Korn <dgk@research.att.com> * 19da2e3ebdSchin * Phong Vo <kpv@research.att.com> * 20da2e3ebdSchin * * 21da2e3ebdSchin ***********************************************************************/ 22da2e3ebdSchin #if defined(_UWIN) && defined(_BLD_ast) 23da2e3ebdSchin _STUB_vmclear()24da2e3ebdSchinvoid _STUB_vmclear(){} 25da2e3ebdSchin 26da2e3ebdSchin #else 27da2e3ebdSchin 28da2e3ebdSchin #include "vmhdr.h" 29da2e3ebdSchin 30da2e3ebdSchin /* Clear out all allocated space. 31da2e3ebdSchin ** 32da2e3ebdSchin ** Written by Kiem-Phong Vo, kpv@research.att.com, 01/16/94. 33da2e3ebdSchin */ 34da2e3ebdSchin #if __STD_C vmclear(Vmalloc_t * vm)35da2e3ebdSchinint vmclear(Vmalloc_t* vm) 36da2e3ebdSchin #else 37da2e3ebdSchin int vmclear(vm) 38da2e3ebdSchin Vmalloc_t* vm; 39da2e3ebdSchin #endif 40da2e3ebdSchin { 41*b30d1939SAndy Fiddaman Seg_t *seg, *next; 42*b30d1939SAndy Fiddaman Block_t *tp; 43*b30d1939SAndy Fiddaman size_t size, s; 44*b30d1939SAndy Fiddaman Vmdata_t *vd = vm->data; 45da2e3ebdSchin 46*b30d1939SAndy Fiddaman SETLOCK(vm, 0); 47da2e3ebdSchin 48da2e3ebdSchin vd->free = vd->wild = NIL(Block_t*); 49da2e3ebdSchin vd->pool = 0; 50da2e3ebdSchin 51da2e3ebdSchin if(vd->mode&(VM_MTBEST|VM_MTDEBUG|VM_MTPROFILE) ) 52da2e3ebdSchin { vd->root = NIL(Block_t*); 53da2e3ebdSchin for(s = 0; s < S_TINY; ++s) 54da2e3ebdSchin TINY(vd)[s] = NIL(Block_t*); 55da2e3ebdSchin for(s = 0; s <= S_CACHE; ++s) 56da2e3ebdSchin CACHE(vd)[s] = NIL(Block_t*); 57da2e3ebdSchin } 58da2e3ebdSchin 59da2e3ebdSchin for(seg = vd->seg; seg; seg = next) 60da2e3ebdSchin { next = seg->next; 61da2e3ebdSchin 62da2e3ebdSchin tp = SEGBLOCK(seg); 63da2e3ebdSchin size = seg->baddr - ((Vmuchar_t*)tp) - 2*sizeof(Head_t); 64da2e3ebdSchin 65da2e3ebdSchin SEG(tp) = seg; 66da2e3ebdSchin SIZE(tp) = size; 67da2e3ebdSchin if((vd->mode&(VM_MTLAST|VM_MTPOOL)) ) 68da2e3ebdSchin seg->free = tp; 69da2e3ebdSchin else 70da2e3ebdSchin { SIZE(tp) |= BUSY|JUNK; 71da2e3ebdSchin LINK(tp) = CACHE(vd)[C_INDEX(SIZE(tp))]; 72da2e3ebdSchin CACHE(vd)[C_INDEX(SIZE(tp))] = tp; 73da2e3ebdSchin } 74da2e3ebdSchin 75da2e3ebdSchin tp = BLOCK(seg->baddr); 76da2e3ebdSchin SEG(tp) = seg; 77da2e3ebdSchin SIZE(tp) = BUSY; 78da2e3ebdSchin } 79da2e3ebdSchin 80*b30d1939SAndy Fiddaman CLRLOCK(vm, 0); 81*b30d1939SAndy Fiddaman 82da2e3ebdSchin return 0; 83da2e3ebdSchin } 84da2e3ebdSchin 85da2e3ebdSchin #endif 86