Coherent4.2.10/include/kernel/ddi_base.h

/* (-lgl
 *	Coherent 386 release 4.2
 *	Copyright (c) 1982, 1993 by Mark Williams Company.
 *	All rights reserved. May not be copied without permission.
 *	For copying permission and licensing info, write licensing@mwc.com
 -lgl) */

#ifndef	__KERNEL_DDI_BASE_H__
#define	__KERNEL_DDI_BASE_H__

/*
 * This internal header file defines structures and an access procedure for
 * DDI/DKI process-level data that will not be needed outside the process
 * context.  This information corresponds to "U area" data in traditional
 * UNIX implementations.  Although it may in fact be implemented that way,
 * using an accessor macro guarantees source-level compatibility with systems
 * that do not or cannot implement a traditional U area.
 */

#include <common/feature.h>
#include <common/ccompat.h>
#include <sys/uio.h>


/*
 * DDI/DKI per-process data needed only at base level.
 *
 * Note that it might seem like a reasonable idea to record the list of sleep
 * locks held by a process for debugging.  However, this is not possible,
 * because the DDI/DKI specification defines SLEEP_TRYLOCK () and
 * SLEEP_UNLOCK () as being available at interrupt level, i.e., not requiring
 * user context, which makes this idea impossible.  (It is not clear whether
 * a process can in fact try to recursively lock a sleep lock if it has
 * arranged for some interrupt-level activity to unlock it, but it seems
 * reasonable.)
 */

struct ddi_base_data {
	char		_non_empty;		/* make structure non-empty */
};

typedef struct ddi_base_data	dbdata_t;


__EXTERN_C_BEGIN__

dbdata_t      *	ddi_base_data	__PROTO ((void));

#if	0
void		DESTROY_UIO	__PROTO ((uio_t * _uiop, IO * _iop));
uio_t	      *	MAKE_UIO	__PROTO ((uio_t * _uiop, iovec_t * _iovp,
					  int _mode, IO * _iop));
#endif

__EXTERN_C_END__

#endif	/* ! defined (__KERNEL_DDI_BASE_H__) */