1 #ifndef INLINE_EXECLOCK_H
2 #define INLINE_EXECLOCK_H
5 Copyright © 2017, The AROS Development Team. All rights reserved.
9 Desc: Inline function(s) for execlock
12 #include <aros/libcall.h>
13 #include <exec/types.h>
14 #include <aros/symbolsets.h>
15 #include <aros/preprocessor/variadic/cast2iptr.hpp>
18 #if !defined(__EXECLOCK_LIBAPI__) || (36 <= __EXECLOCK_LIBAPI__)
20 static inline int __inline_ExecLock_ObtainSystemLock(struct List
* __arg1
, ULONG __arg2
, ULONG __arg3
, APTR __ExecLockBase
)
22 AROS_LIBREQ(ExecLockBase
, 36)
23 return AROS_LC3(int, ObtainSystemLock
,
24 AROS_LCA(struct List
*,(__arg1
),A0
),
25 AROS_LCA(ULONG
,(__arg2
),D0
),
26 AROS_LCA(ULONG
,(__arg3
),D1
),
27 struct Library
*, (__ExecLockBase
), 5, ExecLock
);
30 #define ObtainSystemLock(arg1, arg2, arg3) \
31 __inline_ExecLock_ObtainSystemLock((arg1), (arg2), (arg3), __aros_getbase_ExecLockBase())
33 #endif /* !defined(__EXECLOCK_LIBAPI__) || (36 <= __EXECLOCK_LIBAPI__) */
35 #if !defined(__EXECLOCK_LIBAPI__) || (36 <= __EXECLOCK_LIBAPI__)
37 static inline void __inline_ExecLock_ReleaseSystemLock(struct List
* __arg1
, ULONG __arg2
, APTR __ExecLockBase
)
39 AROS_LIBREQ(ExecLockBase
, 36)
40 AROS_LC2NR(void, ReleaseSystemLock
,
41 AROS_LCA(struct List
*,(__arg1
),A0
),
42 AROS_LCA(ULONG
,(__arg2
),D1
),
43 struct Library
*, (__ExecLockBase
), 6, ExecLock
);
46 #define ReleaseSystemLock(arg1, arg2) \
47 __inline_ExecLock_ReleaseSystemLock((arg1), (arg2), __aros_getbase_ExecLockBase())
49 #endif /* !defined(__EXECLOCK_LIBAPI__) || (36 <= __EXECLOCK_LIBAPI__) */
51 #endif /* INLINE_EXECLOCK_H*/