libcoap
4.3.1
coap_mutex.h
Go to the documentation of this file.
1
/*
2
* coap_mutex.h -- mutex utilities
3
*
4
* Copyright (C) 2019-2022 Jon Shallow <supjps-libcoap@jpshallow.com>
5
* 2019 Olaf Bergmann <bergmann@tzi.org>
6
*
7
* SPDX-License-Identifier: BSD-2-Clause
8
*
9
* This file is part of the CoAP library libcoap. Please see README for terms
10
* of use.
11
*/
12
18
#ifndef COAP_MUTEX_H_
19
#define COAP_MUTEX_H_
20
21
/*
22
* Mutexes are currently only used if there is a constrained stack,
23
* and large static variables (instead of the large variable being on
24
* the stack) need to be protected.
25
*/
26
#if COAP_CONSTRAINED_STACK
27
28
#if defined(HAVE_PTHREAD_H) && defined(HAVE_PTHREAD_MUTEX_LOCK)
29
#include <pthread.h>
30
31
typedef
pthread_mutex_t coap_mutex_t;
32
#define COAP_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
33
#define coap_mutex_lock(a) pthread_mutex_lock(a)
34
#define coap_mutex_trylock(a) pthread_mutex_trylock(a)
35
#define coap_mutex_unlock(a) pthread_mutex_unlock(a)
36
37
#elif defined(RIOT_VERSION)
38
/* use RIOT's mutex API */
39
#include <mutex.h>
40
41
typedef
mutex_t coap_mutex_t;
42
#define COAP_MUTEX_INITIALIZER MUTEX_INIT
43
#define coap_mutex_lock(a) mutex_lock(a)
44
#define coap_mutex_trylock(a) mutex_trylock(a)
45
#define coap_mutex_unlock(a) mutex_unlock(a)
46
47
#elif defined(WITH_LWIP)
48
/* Use LwIP's mutex API */
49
50
#if NO_SYS
51
/* Single threaded, no-op'd in lwip/sys.h */
52
typedef
int
coap_mutex_t;
53
#define COAP_MUTEX_INITIALIZER 0
54
#define coap_mutex_lock(a) *(a) = 1
55
#define coap_mutex_trylock(a) *(a) = 1
56
#define coap_mutex_unlock(a) *(a) = 0
57
#else
/* !NO SYS */
58
#error Need support for LwIP mutex
59
#endif
/* !NO SYS */
60
61
#elif defined(WITH_CONTIKI)
62
/* Contiki does not have a mutex API, used as single thread */
63
typedef
int
coap_mutex_t;
64
#define COAP_MUTEX_INITIALIZER 0
65
#define coap_mutex_lock(a) *(a) = 1
66
#define coap_mutex_trylock(a) *(a) = 1
67
#define coap_mutex_unlock(a) *(a) = 0
68
69
#else
/* !WITH_CONTIKI && !WITH_LWIP && !RIOT_VERSION && !HAVE_PTHREAD_H && !HAVE_PTHREAD_MUTEX_LOCK */
70
/* define stub mutex functions */
71
#warning "stub mutex functions"
72
typedef
int
coap_mutex_t;
73
#define COAP_MUTEX_INITIALIZER 0
74
#define coap_mutex_lock(a) *(a) = 1
75
#define coap_mutex_trylock(a) *(a) = 1
76
#define coap_mutex_unlock(a) *(a) = 0
77
78
#endif
/* !WITH_CONTIKI && !WITH_LWIP && !RIOT_VERSION && !HAVE_PTHREAD_H && !HAVE_PTHREAD_MUTEX_LOCK */
79
80
#endif
/* COAP_CONSTRAINED_STACK */
81
82
#endif
/* COAP_MUTEX_H_ */
include
coap3
coap_mutex.h
Generated on Fri Sep 2 2022 14:47:54 for libcoap by
1.9.4