#ifndef DOS_NOTIFY_H
#define DOS_NOTIFY_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef EXEC_TYPES_H
#include "exec/types.h"
#endif
#ifndef EXEC_PORTS_H
#include "exec/ports.h"
#endif
#ifndef EXEC_TASKS_H
#include "exec/tasks.h"
#endif

#ifndef __INC_POS_PDOS_NOTIFY_H
#include <pDOS/Notify.h>
#endif


#define NOTIFY_CLASS    NOTIMSGCL_NReq
#define NOTIFY_CODE     0


struct NotifyMessage
{
  struct Message        nm_ExecMessage;
  struct NotifyRequest *nm_NReq;
  ULONG                 nm_Class;
  ULONG                 nm_Code;
};


struct NotifyRequest
{
  struct Node nr_Node;
  UBYTE *nr_Name;
  UBYTE *nr_FullName;
  ULONG nr_UserData;
  ULONG nr_UserData1;
  ULONG nr_Flags;

  union {
    UBYTE nr_Reserved1[12];

    struct {
      struct MsgPort *nr_Port;
    } nr_Msg;

    struct {
      struct Task *nr_Task;
      UBYTE nr_SignalNum;
    } nr_Signal;
  } nr_stuff;

  struct MsgPort *nr_Handler;
  UBYTE           nr_FSReserved[32]; /* for Filesystem use */
  UBYTE           nr_Reserved2[32];
};

#define NRF_SEND_MESSAGE        NOTIREQF_Message
#define NRF_SEND_SIGNAL         NOTIREQF_Signal
#define NRF_WAIT_REPLY          NOTIREQF_WaitReply
#define NRF_NOTIFY_INITIAL      NOTIREQF_Initial

#define NRF_MAGIC       0x80000000

#define NRB_SEND_MESSAGE        NOTIREQB_Message
#define NRB_SEND_SIGNAL         NOTIREQB_Signal
#define NRB_WAIT_REPLY          NOTIREQB_WaitReply
#define NRB_NOTIFY_INITIAL      NOTIREQB_Initial

#define NRB_MAGIC               31

#define NR_HANDLER_FLAGS        NOTIREQF_HandlerMask


#endif /* DOS_NOTIFY_H */
