mirror of https://github.com/ipxe/ipxe.git
[uaccess] Add userptr_sub() to find the difference between two user pointers
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/598/head
parent
54a861a7bd
commit
1494d41d0a
|
@ -68,6 +68,12 @@ UACCESS_INLINE ( librm, userptr_add ) ( userptr_t userptr, off_t offset ) {
|
|||
return trivial_userptr_add ( userptr, offset );
|
||||
}
|
||||
|
||||
static inline __always_inline off_t
|
||||
UACCESS_INLINE ( librm, userptr_sub ) ( userptr_t userptr,
|
||||
userptr_t subtrahend ) {
|
||||
return trivial_userptr_sub ( userptr, subtrahend );
|
||||
}
|
||||
|
||||
static inline __always_inline void
|
||||
UACCESS_INLINE ( librm, memcpy_user ) ( userptr_t dest, off_t dest_off,
|
||||
userptr_t src, off_t src_off,
|
||||
|
|
|
@ -56,6 +56,12 @@ UACCESS_INLINE ( efi, userptr_add ) ( userptr_t userptr, off_t offset ) {
|
|||
return trivial_userptr_add ( userptr, offset );
|
||||
}
|
||||
|
||||
static inline __always_inline off_t
|
||||
UACCESS_INLINE ( efi, userptr_sub ) ( userptr_t userptr,
|
||||
userptr_t subtrahend ) {
|
||||
return trivial_userptr_sub ( userptr, subtrahend );
|
||||
}
|
||||
|
||||
static inline __always_inline void
|
||||
UACCESS_INLINE ( efi, memcpy_user ) ( userptr_t dest, off_t dest_off,
|
||||
userptr_t src, off_t src_off,
|
||||
|
|
|
@ -71,6 +71,12 @@ UACCESS_INLINE(linux, userptr_add)(userptr_t userptr, off_t offset)
|
|||
return trivial_userptr_add(userptr, offset);
|
||||
}
|
||||
|
||||
static inline __always_inline off_t
|
||||
UACCESS_INLINE(linux, userptr_sub)(userptr_t userptr, userptr_t subtrahend)
|
||||
{
|
||||
return trivial_userptr_sub ( userptr, subtrahend );
|
||||
}
|
||||
|
||||
static inline __always_inline void
|
||||
UACCESS_INLINE(linux, memcpy_user)(userptr_t dest, off_t dest_off, userptr_t src, off_t src_off, size_t len)
|
||||
{
|
||||
|
|
|
@ -82,6 +82,18 @@ trivial_userptr_add ( userptr_t userptr, off_t offset ) {
|
|||
return ( userptr + offset );
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtract user pointers
|
||||
*
|
||||
* @v userptr User pointer
|
||||
* @v subtrahend User pointer to be subtracted
|
||||
* @ret offset Offset
|
||||
*/
|
||||
static inline __always_inline off_t
|
||||
trivial_userptr_sub ( userptr_t userptr, userptr_t subtrahend ) {
|
||||
return ( userptr - subtrahend );
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy data between user buffers
|
||||
*
|
||||
|
@ -239,6 +251,15 @@ void * user_to_virt ( userptr_t userptr, off_t offset );
|
|||
*/
|
||||
userptr_t userptr_add ( userptr_t userptr, off_t offset );
|
||||
|
||||
/**
|
||||
* Subtract user pointers
|
||||
*
|
||||
* @v userptr User pointer
|
||||
* @v subtrahend User pointer to be subtracted
|
||||
* @ret offset Offset
|
||||
*/
|
||||
off_t userptr_sub ( userptr_t userptr, userptr_t subtrahend );
|
||||
|
||||
/**
|
||||
* Convert virtual address to a physical address
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue