[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    mapdev_dup(9E) manual page Table of Contents

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)


Table of Contents