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 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
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |