devmap_do_ctxmgt man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

devmap_do_ctxmgt(9F)	 Kernel Functions for Drivers	  devmap_do_ctxmgt(9F)

NAME
       devmap_do_ctxmgt - perform device context switching on a mapping

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

       int  devmap_do_ctxmgt(devmap_cookie_t  dhp,  void  *pvtp, offset_t off,
       size_t	len,   uint_t	type,	 uint_t	   rw,	  int	 (*devmap_con‐
       textmgt)(devmap_cookie_t, void *, offset_t, size_t, uint_t, uint_t));

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

PARAMETERS
       dhp		       An  opaque  mapping handle that the system uses
			       to describe the mapping.

       pvtp		       Driver private mapping data.

       off		       User offset within the logical device memory at
			       which the access begins.

       len		       Length (in bytes) of the memory being accessed.

       devmap_contextmgt       The  address of driver function that the system
			       will call to perform  context  switching	 on  a
			       mapping. See devmap_contextmgt(9E) for details.

       type		       Type   of   access   operation.	  Provided  by
			       devmap_access(9E).  Should not be modified.

       rw		       Direction    of	  access.      Provided	    by
			       devmap_access(9E).  Should not be modified.

DESCRIPTION
       Device  drivers	call devmap_do_ctxmgt() in the devmap_access(9E) entry
       point   to   perform   device   context	 switching   on	  a   mapping.
       devmap_do_ctxmgt() passes a pointer to a driver supplied callback func‐
       tion, devmap_contextmgt(9E), to the system that will perform the actual
       device  context	switching.   If	 devmap_contextmgt(9E)	is not a valid
       driver callback function, the system will fail the memory access opera‐
       tion which will result in a SIGSEGV or SIGBUS signal being delivered to
       the process.

       devmap_do_ctxmgt() performs context switching  on  the  mapping	object
       identified  by  dhp and pvtp in the range specified by off and len. The
       arguments dhp, pvtp, type, and rw are provided by the devmap_access(9E)
       entry  point  and  must	not be modified. The range from off to off+len
       must support context switching.

       The system will pass through dhp, pvtp, off,   len,  type,  and	rw  to
       devmap_contextmgt(9E)  in  order	 to  perform the actual device context
       switching.   The	 return	 value	from  devmap_contextmgt(9E)  will   be
       returned directly to devmap_do_ctxmgt().

RETURN VALUES
       0	       Successful completion.

       Non-zero	       An error occurred.

CONTEXT
       devmap_do_ctxmgt()  must	 be called from the driver's devmap_access(9E)
       entry point.

EXAMPLES
       Example 1: Using devmap_do_ctxmgt in the devmap_access entry point.

       The following shows an  example	of  using  devmap_do_ctxmgt()  in  the
       devmap_access(9E) entry point.

       ...
       #define OFF_DO_CTXMGT  0x40000000
       #define OFF_NORMAL     0x40100000
       #define CTXMGT_SIZE    0x100000
       #define NORMAL_SIZE    0x100000

       /*
	* Driver devmap_contextmgt(9E) callback function.
	*/
       static int
       xx_context_mgt(devmap_cookie_t dhp, void *pvtp, offset_t offset,
	   size_t length, uint_t type, uint_t rw)
       {
	   ......
	   /*
	    * see devmap_contextmgt(9E) for an example
	    */
       }

       /*
	* Driver devmap_access(9E) entry point
	*/
       static int
       xxdevmap_access(devmap_cookie_t dhp, void *pvtp, offset_t off,
	   size_t len, uint_t type, uint_t rw)
       {
	   offset_t diff;
	   int err;

	   /*
	    * check if off is within the range that supports
	    * context management.
	    */
	   if ((diff = off - OFF_DO_CTXMG) >= 0 && diff < CTXMGT_SIZE) {
	       /*
		* calculates the length for context switching
		*/
	       if ((len + off) > (OFF_DO_CTXMGT + CTXMGT_SIZE))
		   return (-1);
	       /*
		* perform context switching
		*/
	       err = devmap_do_ctxmgt(dhp, pvtp, off, len, type,
			   rw, xx_context_mgt);
	   /*
	    * check if off is within the range that does normal
	    * memory mapping.
	    */
	   } else if ((diff = off - OFF_NORMAL) >= 0 && diff < NORMAL_SIZE) {
	       if ((len + off) > (OFF_NORMAL + NORMAL_SIZE))
		   return (-1);
	       err = devmap_default_access(dhp, pvtp, off, len, type, rw);
	   } else
	       return (-1);

	   return (err);
       }

SEE ALSO
       devmap_access(9E), devmap_contextmgt(9E), devmap_default_access(9F)

       Writing Device Drivers

SunOS 5.10			  22 Jan 1997		  devmap_do_ctxmgt(9F)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net