xref: /netbsd/sys/dev/pud/pud_msgif.h (revision efe797dc)
1 /*	$NetBSD: pud_msgif.h,v 1.4 2007/11/28 16:59:02 pooka Exp $	*/
2 
3 /*
4  * Copyright (c) 2007  Antti Kantee.  All Rights Reserved.
5  *
6  * Development of this software was supported by the
7  * Research Foundation of Helsinki University of Technology
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
19  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21  * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  */
30 
31 #ifndef _DEV_PUD_PUDMSGIF_H_
32 #define _DEV_PUD_PUDMSGIF_H_
33 
34 #include <dev/putter/putter.h>
35 
36 struct pud_req {
37 	struct putter_hdr	pdr_pth;
38 
39 	dev_t			pdr_dev;
40 
41 	pid_t			pdr_pid;
42 	lwpid_t			pdr_lid;
43 
44 	int			pdr_reqclass;
45 	int			pdr_reqtype;
46 
47 	uint64_t		pdr_reqid;
48 	int			pdr_rv;
49 
50 	size_t			pdr_len;
51 	uint8_t			pdr_data[0];
52 };
53 
54 #define PUD_REQ_CDEV	1
55 #define PUD_REQ_BDEV	2
56 #define PUD_REQ_CONF	3
57 
58 struct pud_register {
59 	dev_t	pm_dev;
60 };
61 
62 #define pud_creq_open pud_req_openclose
63 #define pud_creq_close pud_req_openclose
64 struct pud_req_openclose {
65 	struct pud_req	pm_pdr;
66 
67 	int		pm_flags;
68 	int		pm_fmt;
69 };
70 
71 #define pud_creq_read pud_req_readwrite
72 #define pud_creq_write pud_req_readwrite
73 struct pud_req_readwrite {
74 	struct pud_req	pm_pdr;
75 
76 	off_t		pm_offset;
77 	size_t		pm_resid;
78 
79 	uint8_t		pm_data[0];
80 };
81 
82 struct pud_req_ioctl {
83 	struct pud_req	pm_pdr;
84 
85 	u_long		pm_iocmd;
86 	int		pm_flag;	/* XXX: I feel like a cargo cult */
87 
88 	uint8_t		pm_data[0];
89 };
90 
91 #define PUD_DEVNAME_MAX 31
92 struct pud_conf_reg {
93 	struct pud_req	pm_pdr;
94 
95 	int		pm_version;
96 	dev_t		pm_regdev;
97 	int		pm_flags;
98 	char		pm_devname[PUD_DEVNAME_MAX+1];
99 };
100 #define PUD_CONFFLAG_BDEV	1
101 
102 #define PUD_DEVELVERSION	0x80000000
103 #define PUD_VERSION		1
104 
105 enum {
106 	PUD_CDEV_OPEN,	PUD_CDEV_CLOSE,	PUD_CDEV_READ,	PUD_CDEV_WRITE,
107 	PUD_CDEV_IOCTL,	PUD_CDEV_POLL,	PUD_CDEV_MMAP,	PUD_CDEV_KQFILTER,
108 	PUD_CDEV_STOP,	PUD_CDEV_TTY,
109 };
110 
111 enum {
112 	PUD_BDEV_OPEN,	PUD_BDEV_CLOSE, PUD_BDEV_STRATREAD, PUD_BDEV_STRATWRITE,
113 	PUD_BDEV_IOCTL,	PUD_BDEV_DUMP,	PUD_BDEV_PSIZE,
114 };
115 
116 enum {
117 	PUD_CONF_REG,	PUD_CONF_DEREG,	PUD_CONF_MMAP,
118 };
119 
120 #endif /* _DEV_PUD_PUDMSGIF_H_ */
121