home *** CD-ROM | disk | FTP | other *** search
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* |_o_o|\\ Copyright (c) 1990 The Software Distillery. All Rights Reserved.*/
- /* |. o.| || This program may not be distributed without the permission of */
- /* | . | || the authors. */
- /* | o | || */
- /* | . |// Written by Doug Walker */
- /* ====== BBS:(919)-471-6436 VOICE:(919)-467-4764 */
- /* BIX: djwalker USENET: ...!mcnc!rti!sas!walker */
- /* 405 B3 Gooseneck Dr, Cary, NC 27513, USA */
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- #include <exec/types.h>
- #include <exec/nodes.h>
- #include <exec/lists.h>
- #include <exec/memory.h>
- #include <exec/ports.h>
- #include <exec/io.h>
- #include <proto/exec.h>
-
- struct IOStdReq * CreateIOReq(struct MsgPort *, int);
- void DeleteIOReq(struct IOStdReq *);
-
- struct MsgPort * CreatePort(name, pri)
- char *name;
- int pri;
- {
- UBYTE sigbit;
- register struct MsgPort *port;
-
- if ((sigbit = AllocSignal(-1)) == -1)
- return((struct MsgPort *)0);
-
- if ((port = (struct MsgPort *)AllocMem(sizeof(struct MsgPort),
- MEMF_CLEAR|MEMF_PUBLIC)) == 0)
- {
- FreeSignal(sigbit);
- return((struct MsgPort *) (0));
- }
- port->mp_Node.ln_Name = name;
- port->mp_Node.ln_Pri = pri;
- port->mp_Node.ln_Type = NT_MSGPORT;
- port->mp_Flags = PA_SIGNAL;
- port->mp_SigBit = sigbit;
- port->mp_SigTask = (struct Task *)FindTask(0);
- AddPort(port);
- return(port);
- }
-
- void DeletePort(port)
- struct MsgPort *port;
- {
- RemPort(port);
- FreeSignal(port->mp_SigBit);
- FreeMem((char *)port,sizeof(struct MsgPort));
- }
-
- struct IOStdReq *
- CreateIOReq(port, size)
- struct MsgPort *port;
- int size;
- {
- struct IOStdReq *ioReq;
-
- if ((ioReq = (struct IOStdReq *)
- AllocMem(size, MEMF_CLEAR | MEMF_PUBLIC)) != NULL)
- {
- ioReq->io_Message.mn_Node.ln_Type = NT_MESSAGE;
- ioReq->io_Message.mn_Node.ln_Pri = 0;
- ioReq->io_Message.mn_Length = size;
- ioReq->io_Message.mn_ReplyPort = port;
- }
- return(ioReq);
- }
-
- void DeleteIOReq(ioReq)
- struct IOStdReq *ioReq;
- {
- ioReq->io_Message.mn_Node.ln_Type = 0xff;
- ioReq->io_Device = (struct Device *) -1;
- ioReq->io_Unit = (struct Unit *) -1;
-
- FreeMem( (char *)ioReq, ioReq->io_Message.mn_Length);
- }
-
-