Contained Within
Find More Documentation
Featured Support Resources
| Download this book in PDF
NAME
- devmap_dup - device mapping duplication entry point
SYNOPSIS
-
#include <sys/ddi.h>
-
-
#include <sys/sunddi.h>
-
int prefixdevmap_dup(devmap_cookie_t dhp, void * pvtp, devmap_cookie_t new_dhp, void ** new_pvtp);
INTERFACE LEVEL
- Solaris DDI specific (Solaris DDI).
ARGUMENTS
-
-
dhp
- An opaque mapping handle that the system uses to describe the mapping currently being duplicated.
-
-
pvtp
- Driver private mapping data for the mapping currently being duplicated.
-
-
new_dhp
- An opaque data structure that the system uses to describe the duplicated device mapping.
-
-
new_pvtp
- A pointer to be filled in by device drivers with the driver private mapping data for the duplicated device mapping.
DESCRIPTION
- The system calls devmap_dup( ) when a device mapping is duplicated such as during the fork(2) system call. The system expects devmap_dup( ) to generate new driver private data for the new mapping, and to set new_pvtp to point to it. new_dhp is the handle of the new mapped object.
- A non-zero return value from devmap_dup( ) will cause a corresponding operation, such as fork( ) to fail.
RETURN VALUES
-
devmap_dup (9E)returns the following values:
-
-
0
- Successful completion.
-
- Non-zero
- An error occurred.
EXAMPLES
-
static int
-
-
xxdevmap_dup(devmap_cookie_t dhp, void * pvtp,devmap_cookie_t new_dhp,
void ** new_pvtp)
{
struct xxpvtdata * prvtdata;
struct xxpvtdata * p= (struct xxpvtdata * )pvtp;
struct xx_softc * softc= p->softc;
-
mutex_enter(&softc->mutex);
-
-
/* Allocate a new private data structure * /
prvtdata = kmem_alloc(sizeof (struct xxpvtdata), KM_SLEEP);
-
/* Return the new data * /
-
-
prvtdata->off = p->off;
prvtdata->len = p->len;
-
-
prvtdata->ctx = p->ctx;
prvtdata->dhp = new_dhp;
prvtdata->softc = p->softc;
* new_pvtp= prvtdata;
mutex_exit(&softc->mutex);
-
return (0);
-
}
SEE ALSO
-
fork(2), devmap_callback_ctl(9S)
-
Writing Device Drivers
|
|