da14cebe459d3275048785f25bd869cb09b5307fEric Cheng/***********************************************************************
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* This software is part of the ast package *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* Copyright (c) 1985-2010 AT&T Intellectual Property *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* and is licensed under the *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* Common Public License, Version 1.0 *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* by AT&T Intellectual Property *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* A copy of the License is available at *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* http://www.opensource.org/licenses/cpl1.0.txt *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* Information and Software Systems Research *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* AT&T Research *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* Florham Park NJ *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* Glenn Fowler <gsf@research.att.com> *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* David Korn <dgk@research.att.com> *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* Phong Vo <kpv@research.att.com> *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng* *
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng***********************************************************************/
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#if defined(_UWIN) && defined(_BLD_ast)
550b6e4083768ca350e9e7c3a1ebbf720b23dcadSowmini Varadhan
da14cebe459d3275048785f25bd869cb09b5307fEric Chengvoid _STUB_vmdcheap(){}
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#else
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#include "vmhdr.h"
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng/* A discipline to get memory from the heap.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng**
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng** Written by Kiem-Phong Vo, kpv@research.att.com, 01/16/94.
93a61d92901e899ac53171c1afb6286ed37a0670Garrett D'Amore*/
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#if __STD_C
550b6e4083768ca350e9e7c3a1ebbf720b23dcadSowmini Varadhanstatic Void_t* heapmem(Vmalloc_t* vm, Void_t* caddr,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng size_t csize, size_t nsize,
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng Vmdisc_t* disc)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#else
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstatic Void_t* heapmem(vm, caddr, csize, nsize, disc)
da14cebe459d3275048785f25bd869cb09b5307fEric ChengVmalloc_t* vm; /* region doing allocation from */
da14cebe459d3275048785f25bd869cb09b5307fEric ChengVoid_t* caddr; /* current low address */
da14cebe459d3275048785f25bd869cb09b5307fEric Chengsize_t csize; /* current size */
da14cebe459d3275048785f25bd869cb09b5307fEric Chengsize_t nsize; /* new size */
da14cebe459d3275048785f25bd869cb09b5307fEric ChengVmdisc_t* disc; /* discipline structure */
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer{
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer NOTUSED(vm);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer NOTUSED(disc);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng if(csize == 0)
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer return vmalloc(Vmheap,nsize);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer else if(nsize == 0)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng return vmfree(Vmheap,caddr) >= 0 ? caddr : NIL(Void_t*);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng else return vmresize(Vmheap,caddr,nsize,0);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer}
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Chengstatic Vmdisc_t _Vmdcheap = { heapmem, NIL(Vmexcept_f), 0 };
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng__DEFINE__(Vmdisc_t*,Vmdcheap,&_Vmdcheap);
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#ifdef NoF
da14cebe459d3275048785f25bd869cb09b5307fEric ChengNoF(vmdcheap)
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng#endif
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng