1 AWRITE(9E) Driver Entry Points AWRITE(9E)
2
3
4
5 NAME
6 awrite - asynchronous write to a device
7
8 SYNOPSIS
9 #include <sys/uio.h>
10 #include <sys/aio_req.h>
11 #include <sys/cred.h>
12 #include <sys/ddi.h>
13 #include <sys/sunddi.h>
14
15 intprefixawrite(dev_t dev, struct aio_req *aio_reqp,
16 cred_t *cred_p);
17
18
19 INTERFACE LEVEL
20 Solaris DDI specific (Solaris DDI). This entry point is optional.
21 Drivers that do not support an awrite() entry point should use
22 nodev(9F)
23
24 PARAMETERS
25 dev
26 Device number.
27
28
29 aio_reqp
30 Pointer to the aio_req(9S) structure that describes where
31 the data is stored.
32
33
34 cred_p
35 Pointer to the credential structure.
36
37
38 DESCRIPTION
39 The driver's awrite() routine is called to perform an asynchronous
40 write. getminor(9F) can be used to access the minor number component
41 of the dev argument. awrite() may use the credential structure pointed
42 to by cred_p to check for superuser access by calling drv_priv(9F).
43 The awrite() routine may also examine the uio(9S) structure through
44 the aio_req structure pointer, aio_reqp. awrite() must call
45 aphysio(9F) with the aio_req pointer and a pointer to the driver's
46 strategy(9E) routine.
47
48
49 No fields of the uio(9S) structure pointed to by aio_req, other than
50 uio_offset or uio_loffset, may be modified for non-seekable devices.
51
52 RETURN VALUES
53 The awrite() routine should return 0 for success, or the appropriate
54 error number.
55
56 CONTEXT
57 This function is called from user context only.
58
59 EXAMPLES
60 Example 1 Using the awrite() routine:
61
62
63 The following is an example of an awrite() routine:
64
65
66 static int
76 return (ENXIO);
77 return (aphysio(xxstrategy, anocancel, dev, B_WRITE, \
78 xxminphys, aio));
79 }
80
81
82 SEE ALSO
83 write(2), aiowrite(3C), aread(9E), read(9E), strategy(9E), write(9E),
84 anocancel(9F), aphysio(9F), ddi_get_soft_state(9F), drv_priv(9F),
85 getminor(9F), minphys(9F), nodev(9F), aio_req(9S), cb_ops(9S), uio(9S)
86
87
88 Writing Device Drivers
89
90 BUGS
91 There is no way other than calling aphysio(9F) to accomplish an
92 asynchronous write.
93
94
95
96 March 28, 1997 AWRITE(9E)
|
1 AWRITE(9E) Driver Entry Points AWRITE(9E)
2
3
4
5 NAME
6 awrite - asynchronous write to a device
7
8 SYNOPSIS
9 #include <sys/uio.h>
10 #include <sys/aio_req.h>
11 #include <sys/cred.h>
12 #include <sys/ddi.h>
13 #include <sys/sunddi.h>
14
15 int prefixawrite(dev_t dev, struct aio_req *aio_reqp,
16 cred_t *cred_p);
17
18
19 INTERFACE LEVEL
20 Solaris DDI specific (Solaris DDI). This entry point is optional.
21 Drivers that do not support an awrite() entry point should use
22 nodev(9F)
23
24 PARAMETERS
25 dev
26 Device number.
27
28
29 aio_reqp
30 Pointer to the aio_req(9S) structure that describes where
31 the data is stored.
32
33
34 cred_p
35 Pointer to the credential structure.
36
37
38 DESCRIPTION
39 The driver's awrite() routine is called to perform an asynchronous
40 write. getminor(9F) can be used to access the minor number component
41 of the dev argument. awrite() may use the credential structure pointed
42 to by cred_p to check for superuser access by calling drv_priv(9F).
43 The awrite() routine may also examine the uio(9S) structure through the
44 aio_req structure pointer, aio_reqp. awrite() must call aphysio(9F)
45 with the aio_req pointer and a pointer to the driver's strategy(9E)
46 routine.
47
48
49 No fields of the uio(9S) structure pointed to by aio_req, other than
50 uio_offset or uio_loffset, may be modified for non-seekable devices.
51
52 RETURN VALUES
53 The awrite() routine should return 0 for success, or the appropriate
54 error number.
55
56 CONTEXT
57 This function is called from user context only.
58
59 EXAMPLES
60 Example 1 Using the awrite() routine:
61
62
63 The following is an example of an awrite() routine:
64
65
66 static int
76 return (ENXIO);
77 return (aphysio(xxstrategy, anocancel, dev, B_WRITE, \
78 xxminphys, aio));
79 }
80
81
82 SEE ALSO
83 write(2), aiowrite(3C), aread(9E), read(9E), strategy(9E), write(9E),
84 anocancel(9F), aphysio(9F), ddi_get_soft_state(9F), drv_priv(9F),
85 getminor(9F), minphys(9F), nodev(9F), aio_req(9S), cb_ops(9S), uio(9S)
86
87
88 Writing Device Drivers
89
90 BUGS
91 There is no way other than calling aphysio(9F) to accomplish an
92 asynchronous write.
93
94
95
96 February 15, 2020 AWRITE(9E)
|