| /* |
| * CDDL HEADER START |
| * |
| * The contents of this file are subject to the terms of the |
| * Common Development and Distribution License, Version 1.0 only |
| * (the "License"). You may not use this file except in compliance |
| * with the License. |
| * |
| * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
| * or http://www.opensolaris.org/os/licensing. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * |
| * When distributing Covered Code, include this CDDL HEADER in each |
| * file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
| * If applicable, add the following below this CDDL HEADER, with the |
| * fields enclosed by brackets "[]" replaced with your own identifying |
| * information: Portions Copyright [yyyy] [name of copyright owner] |
| * |
| * CDDL HEADER END |
| */ |
| /* |
| * Copyright (c) 1994, by Sun Microsytems, Inc. |
| */ |
| |
| #pragma ident "%Z%%M% %I% %E% SMI" |
| |
| /* |
| * Includes |
| */ |
| |
| #include "prb_internals.h" |
| |
| |
| /* |
| * Globals |
| * Memory that prex uses to store combinations in target process |
| */ |
| |
| #define INITMEMSZ 2048 |
| |
| static char initial_memory[INITMEMSZ]; |
| static tnf_memseg_t initial_memseg = { |
| initial_memory, |
| initial_memory + INITMEMSZ, |
| DEFAULTMUTEX, |
| 0 |
| }; |
| |
| tnf_memseg_t * __tnf_probe_memseg_p = &initial_memseg; |
| |
| |
| /* |
| * __tnf_probe_alloc() - allocates memory from the global pool |
| */ |
| |
| char * |
| __tnf_probe_alloc(size_t size) |
| { |
| tnf_memseg_t * memseg_p = __tnf_probe_memseg_p; |
| char * ptr; |
| |
| ptr = NULL; |
| |
| mutex_lock(&memseg_p->i_lock); |
| |
| memseg_p->i_reqsz = size; |
| |
| if ((memseg_p->min_p + size) <= memseg_p->max_p) { |
| ptr = memseg_p->min_p; |
| memseg_p->min_p += size; |
| } |
| |
| memseg_p->i_reqsz = 0; |
| |
| mutex_unlock(&memseg_p->i_lock); |
| |
| return (ptr); |
| |
| } /* end __tnf_probe_alloc */ |