vm_map_pageable man page on DigitalUNIX

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

vm_map_pageable(9r)					   vm_map_pageable(9r)

NAME
       vm_map_pageable	-  General:  Sets pageability of the specified address
       range

SYNOPSIS
       kern_return_t vm_map_pageable(
	       vm_map_t map,
	       vm_offset_t start,
	       vm_offset_t end,
	       vm_prot_t access_type );

ARGUMENTS
       Specifies the address map associated with an individual process.	 Spec‐
       ifies  the starting address of an address range. Typically, this is the
       address of the user's buffer where the DMA operation occurs.  Specifies
       the  ending  address of a consecutive range of addresses beginning with
       the start argument.  Specifies the access mode to  be  set  for	memory
       specified by the start and end arguments.  You can set this argument to
       VM_PROT_NONE or to the bitwise inclusive	 OR  of	 the  protection  bits
       VM_PROT_READ  and  VM_PROT_WRITE.  These	 bits  are defined in the file
       <mach/vm_prot.h> and have the following meanings: Modifies  the	memory
       attributes  so  that  the  specified  range  of	addresses is no longer
       locked. This should be done after  the  DMA  operation  has  completed.
       Verifies that the specifed range of addresses is readable by the speci‐
       fied process. If so, the range of addresses  is	locked	in  memory  to
       remain stable throughout the DMA operation.  Verifies that the specifed
       range of addresses is writable by the specified	process.  If  so,  the
       range  of addresses is locked in memory to remain stable throughout the
       DMA operation.  Verifies that the specifed range of addresses is	 read‐
       able  and  writable  by	the  specified	process.  If  so, the range of
       addresses is locked in memory to remain stable throughout the DMA oper‐
       ation.

DESCRIPTION
       The  vm_map_pageable  routine ensures that the address range you speci‐
       fied in the start and end arguments is accessible. If the address range
       is accessible by the specified process, the memory associated with this
       address range will have its locked attributes modified as specified  by
       the  access_type	 argument. A kernel module can call this routine prior
       to performing a DMA operation to ensure	that:  The  currently  running
       process	has  read  or write access permission to the user's buffer The
       memory representing the user's buffer is	 locked	 so  that  it  remains
       available throughout the DMA operation.

NOTES
       This routine may block in the kernel. Therefore, you should release all
       locks and lower the SPL before calling vm_map_pageable.	When the  rou‐
       tine returns, you should relock the data and check the data integrity.

RETURN VALUES
       Upon  successful	 completion,  the  vm_map_pageable routine returns the
       value 0 (zero). Otherwise, it returns a nonzero value  to  indicate  an
       error.

EXAMPLE
       The  following  code  fragment  shows  how  the vm_map_pageable routine
       ensures that the user's buffer is accessible to cause the corresponding
       memory to be locked:

	  if (vm_map_pageable(current_task()->map,
		  trunc_page(bp->b_un.b_addr),
		  round_page(bp->b_un.b_addr + (int)bp->b_bcount),
		  (bp->b_flags	==  B_READ ? VM_PROT_READ : VM_PROT_WRITE))) {
       /***************************************************
	* Here you implement the code to perform the	  *
	* actual DMA operation.	 Upon conclusion of the	  *
	* DMA operation, add the following code to	  *
	* release the locked attribute.			  *
	***************************************************/

	       if (vm_map_pageable(current_task()->map,
		       trunc_page(bp->b_un.b_addr),
		       round_page(bp->b_un.b_addr + (int)bp->b_bcount),
		       VM_PROT_NONE)) {

SEE ALSO
       Routines: current_task(9r), round_page(9r), trunc_page(9r)

							   vm_map_pageable(9r)
[top]

List of man pages available for DigitalUNIX

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