xref: /onnv-gate/usr/src/lib/libast/common/vmalloc/vmdcheap.c (revision 12068:08a39a083754)
14887Schin /***********************************************************************
24887Schin *                                                                      *
34887Schin *               This software is part of the ast package               *
4*12068SRoger.Faulkner@Oracle.COM *          Copyright (c) 1985-2010 AT&T Intellectual Property          *
54887Schin *                      and is licensed under the                       *
64887Schin *                  Common Public License, Version 1.0                  *
78462SApril.Chin@Sun.COM *                    by AT&T Intellectual Property                     *
84887Schin *                                                                      *
94887Schin *                A copy of the License is available at                 *
104887Schin *            http://www.opensource.org/licenses/cpl1.0.txt             *
114887Schin *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
124887Schin *                                                                      *
134887Schin *              Information and Software Systems Research               *
144887Schin *                            AT&T Research                             *
154887Schin *                           Florham Park NJ                            *
164887Schin *                                                                      *
174887Schin *                 Glenn Fowler <gsf@research.att.com>                  *
184887Schin *                  David Korn <dgk@research.att.com>                   *
194887Schin *                   Phong Vo <kpv@research.att.com>                    *
204887Schin *                                                                      *
214887Schin ***********************************************************************/
224887Schin #if defined(_UWIN) && defined(_BLD_ast)
234887Schin 
_STUB_vmdcheap()244887Schin void _STUB_vmdcheap(){}
254887Schin 
264887Schin #else
274887Schin 
284887Schin #include	"vmhdr.h"
294887Schin 
304887Schin /*	A discipline to get memory from the heap.
314887Schin **
324887Schin **	Written by Kiem-Phong Vo, kpv@research.att.com, 01/16/94.
334887Schin */
344887Schin #if __STD_C
heapmem(Vmalloc_t * vm,Void_t * caddr,size_t csize,size_t nsize,Vmdisc_t * disc)354887Schin static Void_t* heapmem(Vmalloc_t* vm, Void_t* caddr,
364887Schin 			size_t csize, size_t nsize,
374887Schin 			Vmdisc_t* disc)
384887Schin #else
394887Schin static Void_t* heapmem(vm, caddr, csize, nsize, disc)
404887Schin Vmalloc_t*	vm;	/* region doing allocation from 	*/
414887Schin Void_t*		caddr;	/* current low address			*/
424887Schin size_t		csize;	/* current size				*/
434887Schin size_t		nsize;	/* new size				*/
444887Schin Vmdisc_t*	disc;	/* discipline structure			*/
454887Schin #endif
464887Schin {
474887Schin 	NOTUSED(vm);
484887Schin 	NOTUSED(disc);
494887Schin 
504887Schin 	if(csize == 0)
514887Schin 		return vmalloc(Vmheap,nsize);
524887Schin 	else if(nsize == 0)
534887Schin 		return vmfree(Vmheap,caddr) >= 0 ? caddr : NIL(Void_t*);
544887Schin 	else	return vmresize(Vmheap,caddr,nsize,0);
554887Schin }
564887Schin 
574887Schin static Vmdisc_t _Vmdcheap = { heapmem, NIL(Vmexcept_f), 0 };
584887Schin __DEFINE__(Vmdisc_t*,Vmdcheap,&_Vmdcheap);
594887Schin 
604887Schin #ifdef NoF
614887Schin NoF(vmdcheap)
624887Schin #endif
634887Schin 
644887Schin #endif
65