#ifndef __INC_POS_PEXEC_MSGPORT_H
#define __INC_POS_PEXEC_MSGPORT_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>MsgPort.h<<   12 Sep 1996    10:14:51 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_LIST_H
#include <pExec/List.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_MsgPort
{
  struct pOS_ExNode  mp_Node;
  UBYTE              mp_Flags;      /* (enum pOS_MsgPortFlag) */
  UBYTE              mp_SigBit;     /* signal bit number    */
  struct pOS_Task   *mp_SigTask;    /* object to be signalled */
  struct pOS_ExList  mp_MsgList;    /* message linked list  */
};


enum pOS_MsgPortFlag
{
  MSGPORTF_Signal    =0x00, /* Signal an Task (mp_SigTask) senden */
  MSGPORTF_SoftInt   =0x01, /* Softinterrupt an pOS_Interrupt* (mp_SigTask) */
  MSGPORTF_Ignore    =0x02, /* kein Signal, kein Interrupt auslösen */
  MSGPORTF_Mask      =0x07,

  MSGPORTF_TPEnqueue =0x08  /* Enqueue Request like Task-Priority */
};


/*----------------------------------
-----------------------------------*/
struct pOS_Message
{
  struct pOS_ExNode   mn_Node;
  struct pOS_MsgPort *mn_ReplyPort;     /* message reply port */
  UWORD               mn_Length;        /* total message length, in bytes
                                        ** (include the size of the Message
                                        ** structure in the length).
                                        ** In privaten Ports kann dieser Wert beliebig
                                        ** gesetzt werden.
                                        */
};


#endif
