2 Copyright © 1995-2017, The AROS Development Team. All rights reserved.
5 Desc: Get a message from a message port.
10 #include <aros/debug.h>
12 #include <exec/execbase.h>
13 #include <exec/ports.h>
14 #include <aros/libcall.h>
15 #include <proto/exec.h>
17 #include "exec_intern.h"
19 /*****************************************************************************
23 AROS_LH1(struct Message
*, GetMsg
,
26 AROS_LHA(struct MsgPort
*, port
, A0
),
29 struct ExecBase
*, SysBase
, 62, Exec
)
32 Get a message from a given messageport. This function doesn't wait
33 and returns NULL if the messageport is empty. Therefore it's
34 generally a good idea to WaitPort() or Wait() on the given port first.
37 port - Pointer to messageport
40 Pointer to message removed from the port.
53 ******************************************************************************/
59 D(bug("[Exec] GetMsg(0x%p)\n", port
);)
61 ASSERT_VALID_PTR(port
);
64 * Protect the message list, and get the first node.
67 #if defined(__AROSEXEC_SMP__)
68 EXEC_SPINLOCK_LOCK(&port
->mp_SpinLock
, NULL
, SPINLOCK_MODE_WRITE
);
70 msg
=(struct Message
*)RemHead(&port
->mp_MsgList
);
71 #if defined(__AROSEXEC_SMP__)
72 EXEC_SPINLOCK_UNLOCK(&port
->mp_SpinLock
);
77 ASSERT_VALID_PTR_OR_NULL(msg
);