#include "swis.h"

#include "Desk.DeskMem.h"
#include "Desk.Debug.h"
#include "Desk.Error2.h"
#include "Desk.OSBuffer.h"


Desk_osbuffer_block*	Desk_OSBuffer_Init( int bufferhandle)
	{
	Desk_osbuffer_block*	osbuffer = Desk_DeskMem_MallocType( Desk_osbuffer_block);
	
	Desk_Error2_CheckOS( _swix( Buffer_InternalInfo, _IN(0)|_OUTR(0,2), bufferhandle, &osbuffer->id, &osbuffer->serviceroutine, &osbuffer->pw));
		// See PRMs 5a-226
	
	Desk_Debug_Printf( Desk_error_PLACE "PointerBuffer_Init called, id=0x%p, service routine=0x%p, pw=0x%p\n", 
		osbuffer->id, 
		osbuffer->serviceroutine, 
		osbuffer->pw
		);
	
	return osbuffer;
	}


void	Desk_OSBuffer_Final( Desk_osbuffer_block* osbuffer)
	{
	osbuffer->id			= (void*) -1;
	osbuffer->serviceroutine	= NULL;
	osbuffer->pw			= NULL;
	Desk_DeskMem_Free( osbuffer);
	}
