Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Driver Entry Pointsmapdev_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 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

 Example 1.
 

 
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.9Go To TopLast Changed 17 Dec 1996

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.