1 /* 2 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3 * 4 * HDF is dual licensed: you can use it either under the terms of 5 * the GPL, or the BSD license, at your option. 6 * See the LICENSE file in the root of this repository for complete details. 7 */ 8 9 #ifndef OSAL_MSG_QUEUE_H 10 #define OSAL_MSG_QUEUE_H 11 12 #include "hdf_slist.h" 13 #include "osal_message.h" 14 #include "osal_mutex.h" 15 #include "osal_sem.h" 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif /* __cplusplus */ 20 21 struct HdfMessageQueue { 22 struct OsalMutex mutex; 23 struct OsalSem semaphore; 24 struct HdfSList list; 25 }; 26 27 void OsalMessageQueueInit(struct HdfMessageQueue *queue); 28 void OsalMessageQueueDestroy(struct HdfMessageQueue *queue); 29 void HdfMessageQueueEnqueue( 30 struct HdfMessageQueue *queue, struct HdfMessage *message, long delayed); 31 32 struct HdfMessage *HdfMessageQueueNext(struct HdfMessageQueue *queue); 33 34 #ifdef __cplusplus 35 } 36 #endif /* __cplusplus */ 37 38 #endif /* OSAL_MSG_QUEUE_H */ 39