Linux-libre 5.4.49-gnu
[librecmc/linux-libre.git] / drivers / staging / vc04_services / interface / vchiq_arm / vchiq_util.h
1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /* Copyright (c) 2010-2012 Broadcom. All rights reserved. */
3
4 #ifndef VCHIQ_UTIL_H
5 #define VCHIQ_UTIL_H
6
7 #include <linux/types.h>
8 #include <linux/completion.h>
9 #include <linux/mutex.h>
10 #include <linux/bitops.h>
11 #include <linux/kthread.h>
12 #include <linux/wait.h>
13 #include <linux/vmalloc.h>
14 #include <linux/jiffies.h>
15 #include <linux/delay.h>
16 #include <linux/string.h>
17 #include <linux/interrupt.h>
18 #include <linux/random.h>
19 #include <linux/sched/signal.h>
20 #include <linux/ctype.h>
21 #include <linux/uaccess.h>
22 #include <linux/time.h>  /* for time_t */
23 #include <linux/slab.h>
24
25 #include "vchiq_if.h"
26
27 struct vchiu_queue {
28         int size;
29         int read;
30         int write;
31         int initialized;
32
33         struct completion pop;
34         struct completion push;
35
36         struct vchiq_header **storage;
37 };
38
39 extern int  vchiu_queue_init(struct vchiu_queue *queue, int size);
40 extern void vchiu_queue_delete(struct vchiu_queue *queue);
41
42 extern int vchiu_queue_is_empty(struct vchiu_queue *queue);
43
44 extern void vchiu_queue_push(struct vchiu_queue *queue,
45                              struct vchiq_header *header);
46
47 extern struct vchiq_header *vchiu_queue_peek(struct vchiu_queue *queue);
48 extern struct vchiq_header *vchiu_queue_pop(struct vchiu_queue *queue);
49
50 #endif