root / include / qemu / fifo8.h @ e93379b0
History | View | Annotate | Download (2.3 kB)
1 | a3578d4a | Peter A. G. Crosthwaite | #ifndef FIFO_H
|
---|---|---|---|
2 | a3578d4a | Peter A. G. Crosthwaite | #define FIFO_H
|
3 | a3578d4a | Peter A. G. Crosthwaite | |
4 | fd7f0d66 | Paolo Bonzini | #include "migration/vmstate.h" |
5 | a3578d4a | Peter A. G. Crosthwaite | |
6 | a3578d4a | Peter A. G. Crosthwaite | typedef struct { |
7 | a3578d4a | Peter A. G. Crosthwaite | /* All fields are private */
|
8 | a3578d4a | Peter A. G. Crosthwaite | uint8_t *data; |
9 | a3578d4a | Peter A. G. Crosthwaite | uint32_t capacity; |
10 | a3578d4a | Peter A. G. Crosthwaite | uint32_t head; |
11 | a3578d4a | Peter A. G. Crosthwaite | uint32_t num; |
12 | a3578d4a | Peter A. G. Crosthwaite | } Fifo8; |
13 | a3578d4a | Peter A. G. Crosthwaite | |
14 | a3578d4a | Peter A. G. Crosthwaite | /**
|
15 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_create:
|
16 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: struct Fifo8 to initialise with new FIFO
|
17 | a3578d4a | Peter A. G. Crosthwaite | * @capacity: capacity of the newly created FIFO
|
18 | a3578d4a | Peter A. G. Crosthwaite | *
|
19 | a3578d4a | Peter A. G. Crosthwaite | * Create a FIFO of the specified size. Clients should call fifo8_destroy()
|
20 | a3578d4a | Peter A. G. Crosthwaite | * when finished using the fifo. The FIFO is initially empty.
|
21 | a3578d4a | Peter A. G. Crosthwaite | */
|
22 | a3578d4a | Peter A. G. Crosthwaite | |
23 | a3578d4a | Peter A. G. Crosthwaite | void fifo8_create(Fifo8 *fifo, uint32_t capacity);
|
24 | a3578d4a | Peter A. G. Crosthwaite | |
25 | a3578d4a | Peter A. G. Crosthwaite | /**
|
26 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_destroy:
|
27 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: FIFO to cleanup
|
28 | a3578d4a | Peter A. G. Crosthwaite | *
|
29 | a3578d4a | Peter A. G. Crosthwaite | * Cleanup a FIFO created with fifo8_create(). Frees memory created for FIFO
|
30 | a3578d4a | Peter A. G. Crosthwaite | *storage. The FIFO is no longer usable after this has been called.
|
31 | a3578d4a | Peter A. G. Crosthwaite | */
|
32 | a3578d4a | Peter A. G. Crosthwaite | |
33 | a3578d4a | Peter A. G. Crosthwaite | void fifo8_destroy(Fifo8 *fifo);
|
34 | a3578d4a | Peter A. G. Crosthwaite | |
35 | a3578d4a | Peter A. G. Crosthwaite | /**
|
36 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_push:
|
37 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: FIFO to push to
|
38 | a3578d4a | Peter A. G. Crosthwaite | * @data: data byte to push
|
39 | a3578d4a | Peter A. G. Crosthwaite | *
|
40 | a3578d4a | Peter A. G. Crosthwaite | * Push a data byte to the FIFO. Behaviour is undefined if the FIFO is full.
|
41 | a3578d4a | Peter A. G. Crosthwaite | * Clients are responsible for checking for fullness using fifo8_is_full().
|
42 | a3578d4a | Peter A. G. Crosthwaite | */
|
43 | a3578d4a | Peter A. G. Crosthwaite | |
44 | a3578d4a | Peter A. G. Crosthwaite | void fifo8_push(Fifo8 *fifo, uint8_t data);
|
45 | a3578d4a | Peter A. G. Crosthwaite | |
46 | a3578d4a | Peter A. G. Crosthwaite | /**
|
47 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_pop:
|
48 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: fifo to pop from
|
49 | a3578d4a | Peter A. G. Crosthwaite | *
|
50 | a3578d4a | Peter A. G. Crosthwaite | * Pop a data byte from the FIFO. Behaviour is undefined if the FIFO is empty.
|
51 | a3578d4a | Peter A. G. Crosthwaite | * Clients are responsible for checking for emptyness using fifo8_is_empty().
|
52 | a3578d4a | Peter A. G. Crosthwaite | *
|
53 | a3578d4a | Peter A. G. Crosthwaite | * Returns: The popped data byte.
|
54 | a3578d4a | Peter A. G. Crosthwaite | */
|
55 | a3578d4a | Peter A. G. Crosthwaite | |
56 | a3578d4a | Peter A. G. Crosthwaite | uint8_t fifo8_pop(Fifo8 *fifo); |
57 | a3578d4a | Peter A. G. Crosthwaite | |
58 | a3578d4a | Peter A. G. Crosthwaite | /**
|
59 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_reset:
|
60 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: FIFO to reset
|
61 | a3578d4a | Peter A. G. Crosthwaite | *
|
62 | a3578d4a | Peter A. G. Crosthwaite | * Reset a FIFO. All data is discarded and the FIFO is emptied.
|
63 | a3578d4a | Peter A. G. Crosthwaite | */
|
64 | a3578d4a | Peter A. G. Crosthwaite | |
65 | a3578d4a | Peter A. G. Crosthwaite | void fifo8_reset(Fifo8 *fifo);
|
66 | a3578d4a | Peter A. G. Crosthwaite | |
67 | a3578d4a | Peter A. G. Crosthwaite | /**
|
68 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_is_empty:
|
69 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: FIFO to check
|
70 | a3578d4a | Peter A. G. Crosthwaite | *
|
71 | a3578d4a | Peter A. G. Crosthwaite | * Check if a FIFO is empty.
|
72 | a3578d4a | Peter A. G. Crosthwaite | *
|
73 | a3578d4a | Peter A. G. Crosthwaite | * Returns: True if the fifo is empty, false otherwise.
|
74 | a3578d4a | Peter A. G. Crosthwaite | */
|
75 | a3578d4a | Peter A. G. Crosthwaite | |
76 | a3578d4a | Peter A. G. Crosthwaite | bool fifo8_is_empty(Fifo8 *fifo);
|
77 | a3578d4a | Peter A. G. Crosthwaite | |
78 | a3578d4a | Peter A. G. Crosthwaite | /**
|
79 | a3578d4a | Peter A. G. Crosthwaite | * fifo8_is_full:
|
80 | a3578d4a | Peter A. G. Crosthwaite | * @fifo: FIFO to check
|
81 | a3578d4a | Peter A. G. Crosthwaite | *
|
82 | a3578d4a | Peter A. G. Crosthwaite | * Check if a FIFO is full.
|
83 | a3578d4a | Peter A. G. Crosthwaite | *
|
84 | a3578d4a | Peter A. G. Crosthwaite | * Returns: True if the fifo is full, false otherwise.
|
85 | a3578d4a | Peter A. G. Crosthwaite | */
|
86 | a3578d4a | Peter A. G. Crosthwaite | |
87 | a3578d4a | Peter A. G. Crosthwaite | bool fifo8_is_full(Fifo8 *fifo);
|
88 | a3578d4a | Peter A. G. Crosthwaite | |
89 | a3578d4a | Peter A. G. Crosthwaite | extern const VMStateDescription vmstate_fifo8; |
90 | a3578d4a | Peter A. G. Crosthwaite | |
91 | a3578d4a | Peter A. G. Crosthwaite | #define VMSTATE_FIFO8(_field, _state) { \
|
92 | a3578d4a | Peter A. G. Crosthwaite | .name = (stringify(_field)), \ |
93 | a3578d4a | Peter A. G. Crosthwaite | .size = sizeof(Fifo8), \
|
94 | a3578d4a | Peter A. G. Crosthwaite | .vmsd = &vmstate_fifo8, \ |
95 | a3578d4a | Peter A. G. Crosthwaite | .flags = VMS_STRUCT, \ |
96 | a3578d4a | Peter A. G. Crosthwaite | .offset = vmstate_offset_value(_state, _field, Fifo8), \ |
97 | a3578d4a | Peter A. G. Crosthwaite | } |
98 | a3578d4a | Peter A. G. Crosthwaite | |
99 | a3578d4a | Peter A. G. Crosthwaite | #endif /* FIFO_H */ |