devmap_dup(9e) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

devmap_dup(9e)

devmap_dup(9E)                Driver Entry Points               devmap_dup(9E)

NAME
       devmap_dup - device mapping duplication entry point

SYNOPSIS
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int prefix_devmap_dup(devmap_cookie_t dhp, void *pvtp,
            devmap_cookie_t new_dhp, void **new_pvtp);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

ARGUMENTS
       dhp         An  opaque  mapping handle that the system uses to describe
                   the mapping currently being duplicated.


       pvtp        Driver private mapping data for the mapping currently being
                   duplicated.


       new_dhp     An opaque data structure that the system uses  to  describe
                   the duplicated device mapping.


       new_pvtp    A pointer to be filled in by device drivers with the driver
                   private mapping data for the duplicated device mapping.


DESCRIPTION
       The system calls devmap_dup() when a device mapping is duplicated, such
       as  during the execution of the fork(2) system call. The system expects
       devmap_dup() to generate new driver private data for the  new  mapping,
       and  to  set  new_pvtp to point to it. new_dhp is the handle of the new
       mapped object.


       A non-zero return value from devmap_dup() will  cause  a  corresponding
       operation such as fork() to fail.

RETURN VALUES
       devmap_dup() returns the following values:

       0           Successful completion.


       Non-zero    An error occurred.


EXAMPLES
         static int
         xxdevmap_dup(devmap_cookie_t dhp, void *pvtp, \
             devmap_cookie_t new_dhp,
             void **new_pvtp)
         {
             struct xxpvtdata    *prvtdata;
             struct xxpvtdata    *p = (struct xxpvtdata *)pvtp;
             struct xx_softc     *softc = p->softc;
             mutex_enter(&softc->mutex);
             /* Allocate a new private data structure */
             prvtdata = kmem_alloc(sizeof (struct xxpvtdata), KM_SLEEP);
             /* Return the new data */
             prvtdata->off = p->off;
             prvtdata->len = p->len;
             prvtdata->ctx = p->ctx;
             prvtdata->dhp = new_dhp;
             prvtdata->softc = p->softc;
             *new_pvtp = prvtdata;
             mutex_exit(&softc->mutex);
             return (0);
         }


SEE ALSO
       fork(2), devmap_callback_ctl(9S)


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4            9 September 2024                 devmap_dup(9E)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3