xref: /titanic_50/usr/src/lib/libumem/common/vmem_base.h (revision aaf809d7f3d58e48120fe39c7ed18f62d8fef56a)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5789d94c2Sjwadams  * Common Development and Distribution License (the "License").
6789d94c2Sjwadams  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
22789d94c2Sjwadams  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
24*aaf809d7SRobert Mustacchi  * Copyright 2012 Joyent, Inc. All rights reserved.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate #ifndef	_VMEM_BASE_H
287c478bd9Sstevel@tonic-gate #define	_VMEM_BASE_H
297c478bd9Sstevel@tonic-gate 
307c478bd9Sstevel@tonic-gate #include <sys/vmem.h>
317c478bd9Sstevel@tonic-gate #include <umem.h>
327c478bd9Sstevel@tonic-gate 
337c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
347c478bd9Sstevel@tonic-gate extern "C" {
357c478bd9Sstevel@tonic-gate #endif
367c478bd9Sstevel@tonic-gate 
377c478bd9Sstevel@tonic-gate #include "misc.h"
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate extern void vmem_startup(void);
407c478bd9Sstevel@tonic-gate extern vmem_t *vmem_init(const char *parent_name, size_t parent_quantum,
417c478bd9Sstevel@tonic-gate 	vmem_alloc_t *parent_alloc, vmem_free_t *parent_free,
427c478bd9Sstevel@tonic-gate 	const char *heap_name,
437c478bd9Sstevel@tonic-gate 	void *heap_start, size_t heap_size, size_t heap_quantum,
447c478bd9Sstevel@tonic-gate 	vmem_alloc_t *heap_alloc, vmem_free_t *heap_free);
457c478bd9Sstevel@tonic-gate 
467c478bd9Sstevel@tonic-gate extern void *_vmem_extend_alloc(vmem_t *vmp, void *vaddr, size_t size,
477c478bd9Sstevel@tonic-gate 	size_t alloc, int vmflag);
487c478bd9Sstevel@tonic-gate 
497c478bd9Sstevel@tonic-gate extern vmem_t *vmem_heap_arena(vmem_alloc_t **, vmem_free_t **);
507c478bd9Sstevel@tonic-gate extern void vmem_heap_init(void);
517c478bd9Sstevel@tonic-gate 
527c478bd9Sstevel@tonic-gate extern vmem_t *vmem_sbrk_arena(vmem_alloc_t **, vmem_free_t **);
537c478bd9Sstevel@tonic-gate extern vmem_t *vmem_mmap_arena(vmem_alloc_t **, vmem_free_t **);
547c478bd9Sstevel@tonic-gate extern vmem_t *vmem_stand_arena(vmem_alloc_t **, vmem_free_t **);
557c478bd9Sstevel@tonic-gate 
567c478bd9Sstevel@tonic-gate extern void vmem_update(void *);
577c478bd9Sstevel@tonic-gate extern void vmem_reap(void);		/* vmem_populate()-safe reap */
587c478bd9Sstevel@tonic-gate 
597c478bd9Sstevel@tonic-gate extern size_t pagesize;
607c478bd9Sstevel@tonic-gate extern size_t vmem_sbrk_pagesize;
61789d94c2Sjwadams extern size_t vmem_sbrk_minalloc;
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate extern uint_t vmem_backend;
647c478bd9Sstevel@tonic-gate #define	VMEM_BACKEND_SBRK	0x0000001
657c478bd9Sstevel@tonic-gate #define	VMEM_BACKEND_MMAP	0x0000002
667c478bd9Sstevel@tonic-gate #define	VMEM_BACKEND_STAND	0x0000003
677c478bd9Sstevel@tonic-gate 
68*aaf809d7SRobert Mustacchi extern uint_t vmem_allocator;
69*aaf809d7SRobert Mustacchi 
707c478bd9Sstevel@tonic-gate extern vmem_t *vmem_heap;
717c478bd9Sstevel@tonic-gate extern vmem_alloc_t *vmem_heap_alloc;
727c478bd9Sstevel@tonic-gate extern vmem_free_t *vmem_heap_free;
737c478bd9Sstevel@tonic-gate 
747c478bd9Sstevel@tonic-gate extern void vmem_lockup(void);
757c478bd9Sstevel@tonic-gate extern void vmem_release(void);
767c478bd9Sstevel@tonic-gate 
777c478bd9Sstevel@tonic-gate extern void vmem_sbrk_lockup(void);
787c478bd9Sstevel@tonic-gate extern void vmem_sbrk_release(void);
797c478bd9Sstevel@tonic-gate 
807c478bd9Sstevel@tonic-gate extern void vmem_no_debug(void);
817c478bd9Sstevel@tonic-gate 
827c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
837c478bd9Sstevel@tonic-gate }
847c478bd9Sstevel@tonic-gate #endif
857c478bd9Sstevel@tonic-gate 
867c478bd9Sstevel@tonic-gate #endif	/* _VMEM_BASE_H */
87