1 
   2 
   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>  
  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