Contained Within
Find More Documentation
Featured Support Resources
| Download this book in PDF
NAME
- awrite - asynchronous write to a device
SYNOPSIS
-
#include <sys/uio.h>
-
-
#include <sys/aio_req.h>
#include <sys/cred.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
-
int prefixawrite(dev_t dev, struct aio_req * aio_reqp, cred_t * cred_p);
INTERFACE LEVEL
- Solaris DDI specific (Solaris DDI). This entry point is optional. Drivers that do not support an awrite ( ) entry point should use nodev(9F).
ARGUMENTS
-
-
dev
- Device number.
-
-
aio_reqp
- Pointer to the aio_req(9S) structure that describes where the data is stored.
-
-
cred_p
- Pointer to the credential structure.
DESCRIPTION
- The driver's awrite( ) routine is called to perform an asynchronous write. getminor(9F) can be used to access the minor number component of the dev argument. awrite( ) may use the credential structure pointed to by cred_p to check for superuser access by calling drv_priv(9F). The awrite( ) routine may also examine the uio (9S)structure through the aio_req structure pointer, aio_reqp. awrite( ) must call aphysio(9F) with the aio_req pointer and a pointer to the driver's strategy(9E) routine.
- No fields of the uio (9S)structure pointed to by aio_req, other than uio_offset or uio_loffset, may be modified for non-seekable devices.
RETURN VALUES
- The awrite( ) routine should return 0 for success, or the appropriate error number.
CONTEXT
- This function is called from user context only.
EXAMPLES
- The following is an example of an awrite( ) routine:
-
-
static int
xxawrite(dev_t dev, struct aio_req * aio,cred_t * cred_p)
{
int instance;
struct xxstate * xsp;
-
instance = getminor(dev);
-
xsp = ddi_get_soft_state(statep, instance);
-
-
/* Verifysoft state structure has been allocated * /
if (xsp == NULL)
return (ENXIO);
-
return (aphysio(xxstrategy, anocancel, dev, B_WRITE, xxminphys, aio));
-
}
SEE ALSO
-
write(2), aiowrite(3), aread (9E),read (9E),strategy(9E), write(9E), anocancel(9F), aphysio(9F), ddi_get_soft_state(9F), drv_priv(9F), getminor(9F), minphys(9F), nodev(9F), aio_req(9S), cb_ops(9S), uio (9S)
-
Writing Device Drivers
BUGS
- There is no way other than calling aphysio(9F) to accomplish an asynchronous write.
|
|