/************************************************************
* MultiUser - MultiUser Task/File Support System				*
* ---------------------------------------------------------	*
* Segment Management														*
* ---------------------------------------------------------	*
* © Copyright 1993-1994 Geert Uytterhoeven						*
* All Rights Reserved.													*
************************************************************/


#include "multiuser.h"


	/*
	 *		Private Segment Node
	 */

struct muSegNode {
	struct MinNode Node;
	BPTR SegList;
	struct muExtOwner Owner;		/* Only uid/gid, no secondary gids */
};


	/*
	 *		Function Prototypes
	 */


extern void InitSegList(void);
extern BPTR __asm __saveds NEWLoadSeg(register __d1 STRPTR name,
												  register __a6 struct DosLibrary *dosbase);
extern BPTR __asm __saveds NEWNewLoadSeg(register __d1 STRPTR name, register __d2 struct TagItem *tags,
													  register __a6 struct DosLibrary *dosbase);
extern BOOL __asm __saveds NEWUnLoadSeg(register __d1 BPTR seglist,
													 register __a6 struct DosLibrary *dosbase);
extern BPTR __asm __saveds NEWInternalLoadSeg(register __d0 BPTR fh, register __a0 BPTR table,
															 register __a1 LONG *functionarray,
															 register __a2 LONG *stack,
															 register __a6 struct DosLibrary *dosbase);
extern BOOL __asm __saveds NEWInternalUnLoadSeg(register __d1 BPTR seglist,
																register __a1 void (*freefunc)(),
																register __a6 struct DosLibrary *dosbase);
extern struct Process __asm __saveds *NEWCreateProc(register __d1 STRPTR name, register __d2 LONG pri,
																	 register __d3 BPTR seglist,
																	 register __d4 LONG stacksize,
																	 register __a6 struct DosLibrary *dosbase);
extern struct Process __asm __saveds *NEWCreateNewProc(register __d1 struct TagItem *tags,
																		 register __a6 struct DosLibrary *dosbase);
extern LONG __asm __saveds NEWRunCommand(register __d1 BPTR seglist, register __d2 ULONG stacksize,
													  register __d3 STRPTR argptr, register __d4 ULONG argsize,
													  register __a6 struct DosLibrary *dosbase);
