/***********************************************************************
*
*	Support Function -- Extended IO Request plus DosPacket
*
***********************************************************************/

#include "handler.h"

struct IOExtPacket *CreateExtPkt(ioReplyPort,size)
    struct MsgPort *ioReplyPort;
    LONG size;
{
    struct IOExtPacket  *ioExtPkt;

    if (ioReplyPort == 0)
	return ((struct IODosPkt   *) 0);

    ioExtPkt = (struct IOExtPacket *)AllocMem (size, MEMF_CLEAR | MEMF_PUBLIC);

    if (ioExtPkt == 0)
	return ((struct IOExtPacket   *) 0);

    ioExtPkt -> io_req.io_Message.mn_Node.ln_Type = NT_MESSAGE;
    ioExtPkt -> io_req.io_Message.mn_Node.ln_Pri = 0;
    ioExtPkt -> io_req.io_Message.mn_ReplyPort = ioReplyPort;
    ioExtPkt -> io_req.io_Message.mn_Node.ln_Name =
              (char *)&(ioExtPkt -> io_pkt);
  
    ioExtPkt -> io_pkt.dp_Link = &(ioExtPkt ->io_req.io_Message);  
    ioExtPkt -> io_pkt.dp_Port = ioReplyPort;

    return (ioExtPkt);
}

void DeleteExtPkt(ioExtPkt,size)
    struct IOExtPacket  *ioExtPkt;
    LONG size;
{
    ioExtPkt -> io_req.io_Message.mn_Node.ln_Type = 0xff;
    ioExtPkt -> io_req.io_Device = (struct Device *) -1;
    ioExtPkt -> io_req.io_Unit = (struct Unit *) -1;

    FreeMem ((char *)ioExtPkt, size);
}

