]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/Full_Demo/lwIP_port/netif/xpqueue.c
02bb68fd62f0547c00299b5f4ef6fd572809c686
[freertos] / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo / src / Full_Demo / lwIP_port / netif / xpqueue.c
1 /*
2  * Copyright (c) 2007-13 Xilinx, Inc.  All rights reserved.
3  *
4  * Xilinx, Inc.
5  * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
6  * COURTESY TO YOU.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
7  * ONE POSSIBLE   IMPLEMENTATION OF THIS FEATURE, APPLICATION OR
8  * STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION
9  * IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE
10  * FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
11  * XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
12  * THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO
13  * ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
14  * FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY
15  * AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  */
18
19 #include <stdlib.h>
20
21 #include "netif/xpqueue.h"
22
23 #define NUM_QUEUES      2
24
25 pq_queue_t pq_queue[NUM_QUEUES];
26
27 pq_queue_t *
28 pq_create_queue()
29 {
30         static int i;
31         pq_queue_t *q = NULL;
32
33         if (i >= NUM_QUEUES) {
34                 xil_printf("ERR: Max Queues allocated\n\r");
35                 return q;
36         }
37
38         q = &pq_queue[i++];
39
40         if (!q)
41                 return q;
42
43         q->head = q->tail = q->len = 0;
44
45         return q;
46 }
47
48 int 
49 pq_enqueue(pq_queue_t *q, void *p)
50 {
51         if (q->len == PQ_QUEUE_SIZE)
52                 return -1;
53
54         q->data[q->head] = p;
55         q->head = (q->head + 1)%PQ_QUEUE_SIZE;
56         q->len++;
57
58         return 0;
59 }
60
61 void*
62 pq_dequeue(pq_queue_t *q)
63 {
64         int ptail;
65
66         if (q->len == 0)
67                 return NULL;
68
69         ptail = q->tail;
70         q->tail = (q->tail + 1)%PQ_QUEUE_SIZE;
71         q->len--;
72
73         return q->data[ptail];
74 }
75
76 int 
77 pq_qlength(pq_queue_t *q)
78 {
79         return q->len;
80 }