Blame src/lib/libast/astsa/vmalloc.h

Packit Service a8c26c
/***********************************************************************
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*               This software is part of the ast package               *
Packit Service a8c26c
*          Copyright (c) 1985-2012 AT&T Intellectual Property          *
Packit Service a8c26c
*                      and is licensed under the                       *
Packit Service a8c26c
*                 Eclipse Public License, Version 1.0                  *
Packit Service a8c26c
*                    by AT&T Intellectual Property                     *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*                A copy of the License is available at                 *
Packit Service a8c26c
*          http://www.eclipse.org/org/documents/epl-v10.html           *
Packit Service a8c26c
*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*              Information and Software Systems Research               *
Packit Service a8c26c
*                            AT&T Research                             *
Packit Service a8c26c
*                           Florham Park NJ                            *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*                 Glenn Fowler <gsf@research.att.com>                  *
Packit Service a8c26c
*                  David Korn <dgk@research.att.com>                   *
Packit Service a8c26c
*                   Phong Vo <kpv@research.att.com>                    *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
***********************************************************************/
Packit Service a8c26c
/*
Packit Service a8c26c
 * standalone mini vmalloc interface
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#ifndef _VMALLOC_H
Packit Service a8c26c
#define _VMALLOC_H		1
Packit Service a8c26c
Packit Service a8c26c
#define vmalloc(v,n)		_vm_resize(v,(void*)0,n)
Packit Service a8c26c
#define vmalign(v,n,a)		_vm_resize(v,(void*)0,n)
Packit Service a8c26c
#define vmclose(v)		_vm_close(v)
Packit Service a8c26c
#define vmfree(v,p)
Packit Service a8c26c
#define vmnewof(v,o,t,n,x)	(t*)_vm_resize(v,(void*)o,sizeof(t)*(n)+(x))
Packit Service a8c26c
#define vmopen(a,b,c)		_vm_open()
Packit Service a8c26c
Packit Service a8c26c
#define VM_CHUNK		(32*1024)
Packit Service a8c26c
#define VM_ALIGN		16
Packit Service a8c26c
Packit Service a8c26c
typedef struct Vmchunk_s
Packit Service a8c26c
{
Packit Service a8c26c
	struct Vmchunk_s*	next;
Packit Service a8c26c
	char			align[VM_ALIGN - sizeof(struct Vmchunk_s*)];
Packit Service a8c26c
	char			data[VM_CHUNK - VM_ALIGN];
Packit Service a8c26c
} Vmchunk_t;
Packit Service a8c26c
Packit Service a8c26c
typedef struct Vmalloc_s
Packit Service a8c26c
{
Packit Service a8c26c
	Vmchunk_t		base;		
Packit Service a8c26c
	Vmchunk_t*		current;
Packit Service a8c26c
	char*			data;
Packit Service a8c26c
	long			size;
Packit Service a8c26c
	long			last;
Packit Service a8c26c
} Vmalloc_t;
Packit Service a8c26c
Packit Service a8c26c
extern Vmalloc_t*		Vmregion;
Packit Service a8c26c
Packit Service a8c26c
extern int			_vm_close(Vmalloc_t*);
Packit Service a8c26c
extern Vmalloc_t*		_vm_open(void);
Packit Service a8c26c
extern void*			_vm_resize(Vmalloc_t*, void*, unsigned long);
Packit Service a8c26c
Packit Service a8c26c
#endif