2 Copyright © 1995-2017, The AROS Development Team. All rights reserved.
5 Desc: Get a message from a message port.
9 #include <exec/execbase.h>
10 #include <exec/ports.h>
11 #include <aros/libcall.h>
12 #include <proto/exec.h>
14 #include "exec_intern.h"
16 /*****************************************************************************
20 AROS_LH1(struct Message
*, GetMsg
,
23 AROS_LHA(struct MsgPort
*, port
, A0
),
26 struct ExecBase
*, SysBase
, 62, Exec
)
29 Get a message from a given messageport. This function doesn't wait
30 and returns NULL if the messageport is empty. Therefore it's
31 generally a good idea to WaitPort() or Wait() on the given port first.
34 port - Pointer to messageport
37 Pointer to message removed from the port.
50 ******************************************************************************/
56 ASSERT_VALID_PTR(port
);
59 * Protect the message list, and get the first node.
62 #if defined(__AROSEXEC_SMP__)
63 EXEC_SPINLOCK_LOCK(&port
->mp_SpinLock
, NULL
, SPINLOCK_MODE_WRITE
);
65 msg
=(struct Message
*)RemHead(&port
->mp_MsgList
);
66 #if defined(__AROSEXEC_SMP__)
67 EXEC_SPINLOCK_UNLOCK(&port
->mp_SpinLock
);
72 ASSERT_VALID_PTR_OR_NULL(msg
);