Rev 4588 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4588 | Rev 4704 | ||
|---|---|---|---|
| Line 29... | Line 29... | ||
| 29 | /** @addtogroup net |
29 | /** @addtogroup net |
| 30 | * @{ |
30 | * @{ |
| 31 | */ |
31 | */ |
| 32 | 32 | ||
| 33 | /** @file |
33 | /** @file |
| - | 34 | * Dynamic first in first out positive integer queue. |
|
| - | 35 | * Possitive integer values only. |
|
| 34 | */ |
36 | */ |
| 35 | 37 | ||
| 36 | #ifndef __NET_DYNAMIC_FIFO_H__ |
38 | #ifndef __NET_DYNAMIC_FIFO_H__ |
| 37 | #define __NET_DYNAMIC_FIFO_H__ |
39 | #define __NET_DYNAMIC_FIFO_H__ |
| 38 | 40 | ||
| 39 | /* For possitive values only */ |
41 | /** Type definition of the dynamic fifo queue. |
| - | 42 | * @see dyn_fifo |
|
| 40 | 43 | */ |
|
| 41 | typedef struct dyn_fifo dyn_fifo_t; |
44 | typedef struct dyn_fifo dyn_fifo_t; |
| - | 45 | ||
| - | 46 | /** Type definition of the dynamic fifo queue pointer. |
|
| - | 47 | * @see dyn_fifo |
|
| - | 48 | */ |
|
| 42 | typedef dyn_fifo_t * dyn_fifo_ref; |
49 | typedef dyn_fifo_t * dyn_fifo_ref; |
| 43 | 50 | ||
| - | 51 | /** Dynamic first in first out positive integer queue. |
|
| - | 52 | * Possitive integer values only. |
|
| - | 53 | * The queue automatically resizes if needed. |
|
| - | 54 | */ |
|
| 44 | struct dyn_fifo{ |
55 | struct dyn_fifo{ |
| - | 56 | /** Stored item field. |
|
| - | 57 | */ |
|
| 45 | int * items; |
58 | int * items; |
| - | 59 | /** Actual field size. |
|
| - | 60 | */ |
|
| 46 | int size; |
61 | int size; |
| - | 62 | /** First item in the queue index. |
|
| - | 63 | */ |
|
| 47 | int head; |
64 | int head; |
| - | 65 | /** Last item in the queue index. |
|
| - | 66 | */ |
|
| 48 | int tail; |
67 | int tail; |
| - | 68 | /** Consistency check magic value. |
|
| - | 69 | */ |
|
| 49 | int magic_value; |
70 | int magic_value; |
| 50 | }; |
71 | }; |
| 51 | 72 | ||
| - | 73 | /** Initializes the dynamic queue. |
|
| - | 74 | * @param fifo The dynamic queue. Input/output parameter. |
|
| - | 75 | * @param size The initial queue size. Input parameter. |
|
| - | 76 | * @returns EOK on success. |
|
| - | 77 | * @returns EINVAL if the queue is not valid. |
|
| - | 78 | * @returns EBADMEM if the fifo parameter is NULL. |
|
| - | 79 | * @returns ENOMEM if there is not enough memory left. |
|
| - | 80 | */ |
|
| 52 | int dyn_fifo_initialize( dyn_fifo_ref fifo, int size ); |
81 | int dyn_fifo_initialize( dyn_fifo_ref fifo, int size ); |
| 53 | 82 | ||
| - | 83 | /** Appends a new item to the queue end. |
|
| - | 84 | * @param fifo The dynamic queue. Input/output parameter. |
|
| - | 85 | * @param value The new item value. Should be positive. Input parameter. |
|
| - | 86 | * @param max_size The maximum queue size. The queue is not resized beyound this limit. May be zero or negative (<=0) to indicate no limit. Input parameter. |
|
| - | 87 | * @returns EOK on success. |
|
| - | 88 | * @returns EINVAL if the queue is not valid. |
|
| - | 89 | * @returns ENOMEM if there is not enough memory left. |
|
| - | 90 | */ |
|
| 54 | int dyn_fifo_push( dyn_fifo_ref fifo, int value, int max_size ); |
91 | int dyn_fifo_push( dyn_fifo_ref fifo, int value, int max_size ); |
| 55 | 92 | ||
| - | 93 | /** Returns and excludes the first item in the queue. |
|
| - | 94 | * @param fifo The dynamic queue. Input/output parameter. |
|
| - | 95 | * @returns Value of the first item in the queue. |
|
| - | 96 | * @returns EINVAL if the queue is not valid. |
|
| - | 97 | * @returns ENOENT if the queue is empty. |
|
| - | 98 | */ |
|
| 56 | int dyn_fifo_pop( dyn_fifo_ref fifo ); |
99 | int dyn_fifo_pop( dyn_fifo_ref fifo ); |
| 57 | 100 | ||
| - | 101 | /** Returns and keeps the first item in the queue. |
|
| - | 102 | * @param fifo The dynamic queue. Input/output parameter. |
|
| - | 103 | * @returns Value of the first item in the queue. |
|
| - | 104 | * @returns EINVAL if the queue is not valid. |
|
| - | 105 | * @returns ENOENT if the queue is empty. |
|
| - | 106 | */ |
|
| 58 | int dyn_fifo_value( dyn_fifo_ref fifo ); |
107 | int dyn_fifo_value( dyn_fifo_ref fifo ); |
| 59 | 108 | ||
| - | 109 | /** Clears and destroys the queue. |
|
| - | 110 | * @param fifo The dynamic queue. Input/output parameter. |
|
| - | 111 | * @returns EOK on success. |
|
| - | 112 | * @returns EINVAL if the queue is not valid. |
|
| - | 113 | */ |
|
| 60 | int dyn_fifo_destroy( dyn_fifo_ref fifo ); |
114 | int dyn_fifo_destroy( dyn_fifo_ref fifo ); |
| 61 | 115 | ||
| 62 | #endif |
116 | #endif |
| 63 | 117 | ||
| 64 | /** @} |
118 | /** @} |