Clubcos  0.0.0
Clubcos - Clubc Operating System
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 페이지들
circular_queue.h
이 파일의 문서화 페이지로 가기
1 // Copyright (c) 2014, 임경현 (dlarudgus20)
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 // * Redistributions of source code must retain the above copyright notice, this
8 // list of conditions and the following disclaimer.
9 //
10 // * Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 //
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 
32 #ifndef QUEUE_H_
33 #define QUEUE_H_
34 
35 #include <stddef.h>
36 #include <stdbool.h>
37 #include <stdint.h>
38 
42 typedef struct tagCircularQueue32
43 {
44  uint32_t *pQueueBuf;
45  uint32_t *pFirst, *pLast;
46  size_t size;
47  bool bEmpty;
49 
56 void ckCircularQueue32Init(CircularQueue32 *pQueue, uint32_t *pQueueBuf, size_t QueueSize);
57 
64 bool ckCircularQueue32Put(CircularQueue32 *pQueue, uint32_t data);
65 
74 uint32_t ckCircularQueue32Get(CircularQueue32 *pQueue, bool bPeek, bool *pbSuccess);
75 
82 
83 
87 typedef struct tagCircularQueue8
88 {
89  uint8_t *pQueueBuf;
90  uint8_t *pFirst, *pLast;
91  size_t size;
92  bool bEmpty;
95 void ckCircularQueue8Init(CircularQueue8 *pQueue, uint8_t *pQueueBuf, size_t QueueSize);
97 bool ckCircularQueue8Put(CircularQueue8 *pQueue, uint8_t data);
99 uint8_t ckCircularQueue8Get(CircularQueue8 *pQueue, bool bPeek, bool *pbSuccess);
102 
103 #endif /* QUEUE_H_ */
uint32_t * pQueueBuf
Definition: circular_queue.h:44
struct tagCircularQueue8 CircularQueue8
요소의 크기가 1바이트인 환형 큐 구조체입니다.
uint8_t * pLast
Definition: circular_queue.h:90
uint8_t * pFirst
Definition: circular_queue.h:90
bool bEmpty
Definition: circular_queue.h:47
bool ckCircularQueue32Remove(CircularQueue32 *pQueue)
CircularQueue32 구조체에서 요소를 하나 빼오고, 빼온 요소는 버립니다.
Definition: circular_queue.c:87
size_t size
Definition: circular_queue.h:46
uint8_t data[512]
Definition: task.h:819
void ckCircularQueue32Init(CircularQueue32 *pQueue, uint32_t *pQueueBuf, size_t QueueSize)
CircularQueue32 구조체를 초기화합니다.
Definition: circular_queue.c:34
bool bEmpty
Definition: circular_queue.h:92
uint32_t * pLast
Definition: circular_queue.h:45
struct tagCircularQueue32 CircularQueue32
요소의 크기가 4바이트인 환형 큐 구조체입니다.
bool ckCircularQueue8Put(CircularQueue8 *pQueue, uint8_t data)
ckCircularQueue32Put 을 참조하십시오.
Definition: circular_queue.c:120
uint32_t ckCircularQueue32Get(CircularQueue32 *pQueue, bool bPeek, bool *pbSuccess)
CircularQueue32 구조체에서 요소를 하나 빼옵니다.
Definition: circular_queue.c:62
uint8_t ckCircularQueue8Get(CircularQueue8 *pQueue, bool bPeek, bool *pbSuccess)
ckCircularQueue32Get 을 참조하십시오.
Definition: circular_queue.c:141
요소의 크기가 4바이트인 환형 큐 구조체입니다.
Definition: circular_queue.h:42
요소의 크기가 1바이트인 환형 큐 구조체입니다.
Definition: circular_queue.h:87
uint32_t * pFirst
Definition: circular_queue.h:45
uint8_t * pQueueBuf
Definition: circular_queue.h:89
void ckCircularQueue8Init(CircularQueue8 *pQueue, uint8_t *pQueueBuf, size_t QueueSize)
ckCircularQueue32Init 를 참조하십시오.
Definition: circular_queue.c:113
bool ckCircularQueue8Remove(CircularQueue8 *pQueue)
ckCircularQueue32Remove 을 참조하십시오.
Definition: circular_queue.c:165
bool ckCircularQueue32Put(CircularQueue32 *pQueue, uint32_t data)
CircularQueue32 구조체에 요소를 하나 넣습니다.
Definition: circular_queue.c:41
size_t size
Definition: circular_queue.h:91