1#ifndef _COMEDI_INTERNAL_H
2#define _COMEDI_INTERNAL_H
3
4#include <linux/compiler.h>
5#include <linux/types.h>
6
7/*
8 * various internal comedi stuff
9 */
10
11struct comedi_buf_map;
12struct comedi_devconfig;
13struct comedi_device;
14struct comedi_insn;
15struct comedi_rangeinfo;
16struct comedi_subdevice;
17struct device;
18
19int do_rangeinfo_ioctl(struct comedi_device *dev,
20		       struct comedi_rangeinfo __user *arg);
21struct comedi_device *comedi_alloc_board_minor(struct device *hardware_device);
22void comedi_release_hardware_device(struct device *hardware_device);
23int comedi_alloc_subdevice_minor(struct comedi_subdevice *s);
24void comedi_free_subdevice_minor(struct comedi_subdevice *s);
25
26int comedi_buf_alloc(struct comedi_device *dev, struct comedi_subdevice *s,
27		     unsigned long new_size);
28void comedi_buf_reset(struct comedi_subdevice *s);
29bool comedi_buf_is_mmapped(struct comedi_subdevice *s);
30void comedi_buf_map_get(struct comedi_buf_map *bm);
31int comedi_buf_map_put(struct comedi_buf_map *bm);
32struct comedi_buf_map *comedi_buf_map_from_subdev_get(
33		struct comedi_subdevice *s);
34unsigned int comedi_buf_write_n_allocated(struct comedi_subdevice *s);
35void comedi_device_cancel_all(struct comedi_device *dev);
36
37extern unsigned int comedi_default_buf_size_kb;
38extern unsigned int comedi_default_buf_maxsize_kb;
39
40/* drivers.c */
41
42extern struct comedi_driver *comedi_drivers;
43extern struct mutex comedi_drivers_list_lock;
44
45int insn_inval(struct comedi_device *, struct comedi_subdevice *,
46	       struct comedi_insn *, unsigned int *);
47
48void comedi_device_detach(struct comedi_device *);
49int comedi_device_attach(struct comedi_device *, struct comedi_devconfig *);
50
51#ifdef CONFIG_PROC_FS
52
53/* proc.c */
54
55void comedi_proc_init(void);
56void comedi_proc_cleanup(void);
57#else
58static inline void comedi_proc_init(void)
59{
60}
61
62static inline void comedi_proc_cleanup(void)
63{
64}
65#endif
66
67#endif /* _COMEDI_INTERNAL_H */
68