Driver Entry Points devmap_dup(9E)
NAME
devmap_dup - device mapping duplication entry point
SYNOPSIS
#include
#include
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 usesto describe the mapping currently being dupli-
cated. 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 execution of the fork(2) sys-
tem 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() returns the following values:
0 Successful completion.SunOS 5.11 Last change: 21 Jan 1997 1
Driver Entry Points devmap_dup(9E)
Non-zero An error occurred.
EXAMPLES
static intxxdevmap_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 DriversSunOS 5.11 Last change: 21 Jan 1997 2