Coherent4.2.10/coh.386/alloc.c

Compare this file to the similar file:
Show the results in this format:

/* $Header: /ker/coh.386/RCS/alloc.c,v 2.5 93/10/29 00:54:53 nigel Exp Locker: nigel $ */
/* (lgl-
 *	The information contained herein is a trade secret of Mark Williams
 *	Company, and  is confidential information.  It is provided  under a
 *	license agreement,  and may be  copied or disclosed  only under the
 *	terms of  that agreement.  Any  reproduction or disclosure  of this
 *	material without the express written authorization of Mark Williams
 *	Company or persuant to the license agreement is unlawful.
 *
 *	COHERENT Version 2.3.37
 *	Copyright (c) 1982, 1983, 1984.
 *	An unpublished work by Mark Williams Company, Chicago.
 *	All rights reserved.
 -lgl) */
/*
 * $Log:	alloc.c,v $
 * Revision 2.5  93/10/29  00:54:53  nigel
 * R98 (aka 4.2 Beta) prior to removing System Global memory
 * 
 * Revision 2.4  93/08/19  03:26:19  nigel
 * Nigel's r83 (Stylistic cleanup)
 * 
 * Revision 2.2  93/07/26  14:28:19  nigel
 * Nigel's R80
 */

#include <common/ccompat.h>
#include <sys/cmn_err.h>
#include <sys/debug.h>
#include <sys/kmem.h>
#include <sys/errno.h>

#define	_KERNEL		1

#include <kernel/trace.h>
#include <sys/proc.h>

#include <kernel/alloc.h>


/*
 * Allocate `l' bytes of memory.
 */

#if	__USE_PROTO__
__VOID__ * kalloc (size_t size)
#else
__VOID__ *
kalloc (size)
size_t		size;
#endif
{
	size_t	      *	temp;

	if (size == 0) {
		cmn_err (CE_PANIC, "attempt to allocate 0 bytes of memory");
	}

	if ((temp = (size_t *) kmem_alloc (size + sizeof (size_t),
					   KM_NOSLEEP)) != NULL) {
		* temp = size + sizeof (size_t);
		return temp + 1;
	}

	SET_U_ERROR (ENOSPC, "no memory in kalloc ()");
	return NULL;
}


/*
 * Free memory.
 */

#if	__USE_PROTO__
void kfree (__VOID__ * ptr)
#else
void
kfree (ptr)
__VOID__      *	ptr;
#endif
{
	size_t	      *	temp = (size_t *) ptr - 1;

	kmem_free (temp, * temp);
}