NAME | SYNOPSIS | INTERFACE LEVEL | PARAMETERS | DESCRIPTION | RETURN VALUES | CONTEXT | EXAMPLES | SEE ALSO
#include <sys/sunddi.h>int prefix mapdev_dup(ddi_mapdev_handle_t handle, void *devprivate, ddi_mapdev_handle_t new_handle, void **new_devprivatep);
Solaris DDI specific (Solaris DDI).
The handle of the mapping that is being duplicated.
Driver private mapping data from the mapping that is being duplicated.
An opaque pointer to the duplicated device mapping.
A pointer to be filled in by the driver with the driver private mapping data for the duplicated device mapping.
Future releases of Solaris will provide this function for binary and source compatibility. However, for increased functionality, use devmap_dup(9E) instead. See devmap_dup(9E) for details.
mapdev_dup() is called when a device mapping is duplicated such as through fork(2). mapdev_dup() is expected to generate new driver private data for the new mapping, and set new_devprivatep to point to it. new_handle is the handle of the new mapped object.
A non-zero return value from mapdev_dup() will cause the corresponding operation, such as fork() to fail.
mapdev_dup() returns 0 for success or the appropriate error number on failure.
This function is called from user context only.
static int xxmapdev_dup(ddi_mapdev_handle_t handle, void *devprivate, ddi_mapdev_handle_t new_handle, void **new_devprivate) { struct xxpvtdata *pvtdata; /* Allocate a new private data structure */ pvtdata = kmem_alloc(sizeof (struct xxpvtdata), KM_SLEEP); /* Copy the old data to the new - device dependent*/ ... /* Return the new data */ *new_pvtdata = pvtdata; return (0); }
fork(2), mmap(2), mapdev_access(9E), mapdev_free(9E), segmap(9E), ddi_mapdev(9F), ddi_mapdev_intercept(9F), ddi_mapdev_nointercept(9F), ddi_mapdev_ctl(9S)
NAME | SYNOPSIS | INTERFACE LEVEL | PARAMETERS | DESCRIPTION | RETURN VALUES | CONTEXT | EXAMPLES | SEE ALSO