dxd - dynax driver framework  2675
cross platform open source driver development framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
dxd::map< scope_t, vm_t > Singleton Reference

WDK memory mapping. More...

#include <dxd_memory.h>

+ Collaboration diagram for dxd::map< scope_t, vm_t >:

Public Member Functions

void free ()
 kernel map free More...
 
os_result initialize (::IOMemoryDescriptor *iokit_memory_descriptor, size_t offset=0)
 IOKit kernel map initializer. More...
 
 map ()=default
 IOKit default mapping constructor. More...
 
 map (::IOMemoryDescriptor *iokit_memory_descriptor, size_t offset=0)
 IOKit mapping constructor. More...
 
 operator const ::IOMemoryMap * () const
 
 operator const vm_t * () const
 
 operator vm_t * () const
 
const vm_t * operator-> () const
 operator to use mapping like pointer More...
 
vm_t * operator-> ()
 
 operator::IOMemoryMap * ()
 
size_t size () const
 kernel mapping size More...
 
 ~map ()
 

Public Attributes

os_result status =not_initialized
 status of mapping object More...
 

Protected Attributes

vm_t * _vm =nullptr
 kernel virtual address mapping More...
 
::IOMemoryMap * iokit_memory_map =nullptr
 

Detailed Description

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
singleton dxd::map< scope_t, vm_t >

WDK memory mapping.

Constructor & Destructor Documentation

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::map ( )
default

IOKit default mapping constructor.

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::map ( ::IOMemoryDescriptor *  iokit_memory_descriptor,
size_t  offset = 0 
)
inline

IOKit mapping constructor.

Parameters
iokit_memory_descriptorIOMemoryDescriptor to be mapped into the kernel address space
offsetoffset into memory descriptor to create mapping
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::~map ( )
inline

Member Function Documentation

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
void dxd::map< scope_t, vm_t >::free ( )
inline

kernel map free

Checks if kernel mapping already exists and

does not call unmap(): IOMemoryMap instances will unmap themselves upon free, ie. when the last client with a reference calls release. unmap() forces the IOMemoryMap to destroy the mapping it represents, regardless of the number of clients. releases the map object.

+ Here is the caller graph for this function:

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
os_result dxd::map< scope_t, vm_t >::initialize ( ::IOMemoryDescriptor *  iokit_memory_descriptor,
size_t  offset = 0 
)
inline

IOKit kernel map initializer.

map<kernel> maps an IOMemoryDescriptor (typically cast of a dxd::memory or buffer class) into the kernel address space.

https://developer.apple.com/library/content/qa/qa1197/_index.html

Allows re-initialization.

Checks buffer object,

maps the buffer into the kernel (will fail if offset is given)

and obtains a kernel virtual address (apply offset here instead).

Parameters
iokit_memory_descriptorIOMemoryDescriptor to be mapped into the kernel address space
offsetoffset into memory descriptor to create mapping

+ Here is the caller graph for this function:

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator const ::IOMemoryMap * ( ) const
inline
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator const vm_t * ( ) const
inline
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator vm_t * ( ) const
inline
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
const vm_t* dxd::map< scope_t, vm_t >::operator-> ( ) const
inline

operator to use mapping like pointer

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
vm_t* dxd::map< scope_t, vm_t >::operator-> ( )
inline
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
dxd::map< scope_t, vm_t >::operator::IOMemoryMap * ( )
inline
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
size_t dxd::map< scope_t, vm_t >::size ( ) const
inline

kernel mapping size

Member Data Documentation

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
vm_t* dxd::map< scope_t, vm_t >::_vm =nullptr
protected

kernel virtual address mapping

template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
::IOMemoryMap* dxd::map< scope_t, vm_t >::iokit_memory_map =nullptr
protected
template<dx::scope scope_t = dx::kernel, typename vm_t = unsigned int>
os_result dxd::map< scope_t, vm_t >::status =not_initialized

status of mapping object


The documentation for this singleton was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on Tue Dec 4 2018

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.