mapdev_dup(9E)
NAME
mapdev_dup - device mapping duplication entry point
SYNOPSIS
#include <sys/sunddi.h>
int prefix mapdev_dup(ddi_mapdev_handle_t handle, void
*devprivate, ddi_mapdev_handle_t new_handle, void
**new_devprivatep);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).
PARAMETERS
handle
The handle of the mapping that is being duplicated.
devprivate
Driver private mapping data from the mapping that is
being duplicated.
new_handle
An opaque pointer to the duplicated device mapping.
new_devprivatep
A pointer to be filled in by the driver with the
driver private mapping data for the duplicated device
mapping.
DESCRIPTION
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 gen-
erate 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.
RETURN VALUES
mapdev_dup() returns 0 for success or the appropriate error
number on failure.
CONTEXT
This function is called from user context only.
EXAMPLES
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);
}
SEE ALSO
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)
Writing Device Drivers
Man(1) output converted with
man2html