mapdev_dup(9E)
NAME
mapdev_dup − device mapping duplication entry point
SYNOPSIS
#include <sys/sunddi.h>
int prefixmapdev_dup(ddi_mapdev_handle_t handle, void ∗devprivate,
ddi_mapdev_handle_t new_handle, void ∗∗new_devprivatep);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).
ARGUMENTS
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
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.
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
SunOS 5.5/SPARC — Last change: 28 Feb 1994