diff options
Diffstat (limited to 'include/dlt')
-rw-r--r-- | include/dlt/dlt_user.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/dlt/dlt_user.h b/include/dlt/dlt_user.h index d736032..b885eaf 100644 --- a/include/dlt/dlt_user.h +++ b/include/dlt/dlt_user.h @@ -94,8 +94,11 @@ extern "C" { # define DLT_USER_RESENDBUF_MAX_SIZE (DLT_USER_BUF_MAX_SIZE + 100) /**< Size of resend buffer; Max DLT message size is 1390 bytes plus some extra header space */ /* Use a semaphore or mutex from your OS to prevent concurrent access to the DLT buffer. */ -# define DLT_SEM_LOCK() { sem_wait(&dlt_mutex); } -# define DLT_SEM_FREE() { sem_post(&dlt_mutex); } +#define DLT_SEM_LOCK() do{\ + while ((sem_wait(&dlt_mutex) == -1) && (errno == EINTR)) \ + continue; /* Restart if interrupted */ \ + } while(0) +#define DLT_SEM_FREE() { sem_post(&dlt_mutex); } /** * This structure is used for every context used in an application. |