mirror of
https://gitee.com/moluo-tech/AT-Command
synced 2025-06-18 00:17:53 +00:00
101 lines
2.8 KiB
C
101 lines
2.8 KiB
C
![]() |
/*******************************************************************************
|
|||
|
* @brief <EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(queue link)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
* Copyright (c) 2017~2020, <morro_luo@163.com>
|
|||
|
*
|
|||
|
* SPDX-License-Identifier: Apache-2.0
|
|||
|
* Change Logs
|
|||
|
* Date Author Notes
|
|||
|
* 2016-06-24 Morro <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
* 2018-03-17 Morro <EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ͳ<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
#ifndef _QLINK_H_
|
|||
|
#define _QLINK_H_
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
#include <stddef.h>
|
|||
|
|
|||
|
/*<2A><>ʽ<EFBFBD><CABD><EFBFBD>н<EFBFBD><D0BD><EFBFBD> ---------------------------------------------------------------*/
|
|||
|
struct qlink_node {
|
|||
|
struct qlink_node *next;
|
|||
|
};
|
|||
|
|
|||
|
/*<2A><>ʽ<EFBFBD><CABD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD> -------------------------------------------------------------*/
|
|||
|
struct qlink {
|
|||
|
unsigned int count;
|
|||
|
struct qlink_node *front, *rear;
|
|||
|
};
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] q - <EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return none
|
|||
|
******************************************************************************/
|
|||
|
static inline void qlink_init(struct qlink *q)
|
|||
|
{
|
|||
|
q->front = q->rear= NULL;
|
|||
|
q->count = 0;
|
|||
|
}
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] q - <EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return nond
|
|||
|
******************************************************************************/
|
|||
|
static inline void qlink_put(struct qlink *q, struct qlink_node *n)
|
|||
|
{
|
|||
|
if (q->count == 0)
|
|||
|
q->front = n;
|
|||
|
else
|
|||
|
q->rear->next = n;
|
|||
|
q->rear = n;
|
|||
|
n->next = NULL;
|
|||
|
q->count++;
|
|||
|
}
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* @brief Ԥ<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
* @param[in] q - <EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return nond
|
|||
|
******************************************************************************/
|
|||
|
static inline struct qlink_node *qlink_peek(struct qlink *q)
|
|||
|
{
|
|||
|
return q->front;
|
|||
|
}
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] q - <EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return nond
|
|||
|
******************************************************************************/
|
|||
|
static inline struct qlink_node *qlink_get(struct qlink *q)
|
|||
|
{
|
|||
|
struct qlink_node *n;
|
|||
|
if (q->count == 0)
|
|||
|
return NULL;
|
|||
|
n = q->front;
|
|||
|
q->front = q->front->next;
|
|||
|
q->count--;
|
|||
|
return n;
|
|||
|
}
|
|||
|
|
|||
|
/*******************************************************************************
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param[in] q - <EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return nond
|
|||
|
******************************************************************************/
|
|||
|
static inline int qlink_count(struct qlink *q)
|
|||
|
{
|
|||
|
return q->count;
|
|||
|
}
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|