Trivial user access API implementations

User access API implementations that can be used by environments in which virtual addresses allow access to all of memory. More...


Functions

static __always_inline userptr_t trivial_virt_to_user (volatile const void *addr)
 Convert virtual address to user pointer.
static __always_inline void * trivial_user_to_virt (userptr_t userptr, off_t offset)
 Convert user pointer to virtual address.
static __always_inline userptr_t trivial_userptr_add (userptr_t userptr, off_t offset)
 Add offset to user pointer.
static __always_inline void trivial_memcpy_user (userptr_t dest, off_t dest_off, userptr_t src, off_t src_off, size_t len)
 Copy data between user buffers.
static __always_inline void trivial_memmove_user (userptr_t dest, off_t dest_off, userptr_t src, off_t src_off, size_t len)
 Copy data between user buffers, allowing for overlap.
static __always_inline void trivial_memset_user (userptr_t buffer, off_t offset, int c, size_t len)
 Fill user buffer with a constant byte.
static __always_inline size_t trivial_strlen_user (userptr_t buffer, off_t offset)
 Find length of NUL-terminated string in user buffer.
static __always_inline off_t trivial_memchr_user (userptr_t buffer, off_t offset, int c, size_t len)
 Find character in user buffer.


Detailed Description

User access API implementations that can be used by environments in which virtual addresses allow access to all of memory.

Function Documentation

static __always_inline userptr_t trivial_virt_to_user ( volatile const void *  addr  )  [inline, static]

Convert virtual address to user pointer.

Parameters:
addr Virtual address
Return values:
userptr User pointer

Definition at line 55 of file uaccess.h.

00055                                                    {
00056         return ( ( userptr_t ) addr );
00057 }

static __always_inline void* trivial_user_to_virt ( userptr_t  userptr,
off_t  offset 
) [inline, static]

Convert user pointer to virtual address.

Parameters:
userptr User pointer
offset Offset from user pointer
Return values:
addr Virtual address
This operation is not available under all memory models.

Definition at line 69 of file uaccess.h.

00069                                                          {
00070         return ( ( void * ) userptr + offset );
00071 }

static __always_inline userptr_t trivial_userptr_add ( userptr_t  userptr,
off_t  offset 
) [inline, static]

Add offset to user pointer.

Parameters:
userptr User pointer
offset Offset
Return values:
userptr New pointer value

Definition at line 81 of file uaccess.h.

00081                                                         {
00082         return ( userptr + offset );
00083 }

static __always_inline void trivial_memcpy_user ( userptr_t  dest,
off_t  dest_off,
userptr_t  src,
off_t  src_off,
size_t  len 
) [inline, static]

Copy data between user buffers.

Parameters:
dest Destination
dest_off Destination offset
src Source
src_off Source offset
len Length

Definition at line 95 of file uaccess.h.

References memcpy.

00096                                                                  {
00097         memcpy ( ( ( void * ) dest + dest_off ),
00098                  ( ( void * ) src + src_off ), len );
00099 }

static __always_inline void trivial_memmove_user ( userptr_t  dest,
off_t  dest_off,
userptr_t  src,
off_t  src_off,
size_t  len 
) [inline, static]

Copy data between user buffers, allowing for overlap.

Parameters:
dest Destination
dest_off Destination offset
src Source
src_off Source offset
len Length

Definition at line 111 of file uaccess.h.

References memmove().

00112                                                                   {
00113         memmove ( ( ( void * ) dest + dest_off ),
00114                   ( ( void * ) src + src_off ), len );
00115 }

static __always_inline void trivial_memset_user ( userptr_t  buffer,
off_t  offset,
int  c,
size_t  len 
) [inline, static]

Fill user buffer with a constant byte.

Parameters:
buffer User buffer
offset Offset within buffer
c Constant byte with which to fill
len Length

Definition at line 126 of file uaccess.h.

References memset().

00126                                                                           {
00127         memset ( ( ( void * ) buffer + offset ), c, len );
00128 }

static __always_inline size_t trivial_strlen_user ( userptr_t  buffer,
off_t  offset 
) [inline, static]

Find length of NUL-terminated string in user buffer.

Parameters:
buffer User buffer
offset Offset within buffer
Return values:
len Length of string (excluding NUL)

Definition at line 138 of file uaccess.h.

References strlen().

00138                                                        {
00139         return strlen ( ( void * ) buffer + offset );
00140 }

static __always_inline off_t trivial_memchr_user ( userptr_t  buffer,
off_t  offset,
int  c,
size_t  len 
) [inline, static]

Find character in user buffer.

Parameters:
buffer User buffer
offset Starting offset within buffer
c Character to search for
len Length of user buffer
Return values:
offset Offset of character, or <0 if not found

Definition at line 152 of file uaccess.h.

References memchr().

00152                                                                           {
00153         void *found;
00154 
00155         found = memchr ( ( ( void * ) buffer + offset ), c, len );
00156         return ( found ? ( found - ( void * ) buffer ) : -1 );
00157 }


Generated on Tue Apr 6 20:01:59 2010 for gPXE by  doxygen 1.5.7.1