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_vmwalk()24da2e3ebdSchin void _STUB_vmwalk(){}
25da2e3ebdSchin
26da2e3ebdSchin #else
27da2e3ebdSchin
28da2e3ebdSchin #include "vmhdr.h"
29da2e3ebdSchin
30da2e3ebdSchin /* Walks all segments created in region(s)
31da2e3ebdSchin **
32da2e3ebdSchin ** Written by Kiem-Phong Vo, kpv@research.att.com (02/08/96)
33da2e3ebdSchin */
34da2e3ebdSchin
35da2e3ebdSchin #if __STD_C
vmwalk(Vmalloc_t * vm,int (* segf)(Vmalloc_t *,Void_t *,size_t,Vmdisc_t *,Void_t *),Void_t * handle)363e14f97fSRoger A. Faulkner int vmwalk(Vmalloc_t* vm, int(*segf)(Vmalloc_t*, Void_t*, size_t, Vmdisc_t*, Void_t*), Void_t* handle )
37da2e3ebdSchin #else
383e14f97fSRoger A. Faulkner int vmwalk(vm, segf, handle)
39da2e3ebdSchin Vmalloc_t* vm;
40*b30d1939SAndy Fiddaman int(* segf)(/* Vmalloc_t*, Void_t*, size_t, Vmdisc_t*, Void_t* */);
413e14f97fSRoger A. Faulkner Void_t* handle;
42da2e3ebdSchin #endif
43da2e3ebdSchin {
44*b30d1939SAndy Fiddaman reg Seg_t *seg;
45*b30d1939SAndy Fiddaman reg int rv = 0;
46da2e3ebdSchin
47da2e3ebdSchin if(!vm)
48*b30d1939SAndy Fiddaman { _vmlock(NIL(Vmalloc_t*), 1);
49*b30d1939SAndy Fiddaman for(vm = Vmheap; vm; vm = vm->next)
50*b30d1939SAndy Fiddaman { SETLOCK(vm, 0);
51da2e3ebdSchin for(seg = vm->data->seg; seg; seg = seg->next)
52*b30d1939SAndy Fiddaman if((rv = (*segf)(vm, seg->addr, seg->extent, vm->disc, handle)) < 0 )
53*b30d1939SAndy Fiddaman break;
54*b30d1939SAndy Fiddaman CLRLOCK(vm, 0);
55da2e3ebdSchin }
56*b30d1939SAndy Fiddaman _vmlock(NIL(Vmalloc_t*), 0);
57da2e3ebdSchin }
58da2e3ebdSchin else
59*b30d1939SAndy Fiddaman { SETLOCK(vm, 0);
60da2e3ebdSchin for(seg = vm->data->seg; seg; seg = seg->next)
61*b30d1939SAndy Fiddaman if((rv = (*segf)(vm, seg->addr, seg->extent, vm->disc, handle)) < 0 )
62*b30d1939SAndy Fiddaman break;
63*b30d1939SAndy Fiddaman CLRLOCK(vm, 0);
64da2e3ebdSchin }
65da2e3ebdSchin
66*b30d1939SAndy Fiddaman return rv;
67da2e3ebdSchin }
68da2e3ebdSchin
69da2e3ebdSchin #endif
70