david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[uaccess] Add memcmp_user()

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2014-01-06 18:56:58 +01:00
parent 26f782bb41
commit fffd98bd37
4 changed files with 50 additions and 0 deletions

View File

@ -88,6 +88,13 @@ UACCESS_INLINE ( librm, memmove_user ) ( userptr_t dest, off_t dest_off,
trivial_memmove_user ( dest, dest_off, src, src_off, len );
}
static inline __always_inline int
UACCESS_INLINE ( librm, memcmp_user ) ( userptr_t first, off_t first_off,
userptr_t second, off_t second_off,
size_t len ) {
return trivial_memcmp_user ( first, first_off, second, second_off, len);
}
static inline __always_inline void
UACCESS_INLINE ( librm, memset_user ) ( userptr_t buffer, off_t offset,
int c, size_t len ) {

View File

@ -76,6 +76,13 @@ UACCESS_INLINE ( efi, memmove_user ) ( userptr_t dest, off_t dest_off,
trivial_memmove_user ( dest, dest_off, src, src_off, len );
}
static inline __always_inline int
UACCESS_INLINE ( efi, memcmp_user ) ( userptr_t first, off_t first_off,
userptr_t second, off_t second_off,
size_t len ) {
return trivial_memcmp_user ( first, first_off, second, second_off, len);
}
static inline __always_inline void
UACCESS_INLINE ( efi, memset_user ) ( userptr_t buffer, off_t offset,
int c, size_t len ) {

View File

@ -89,6 +89,12 @@ UACCESS_INLINE(linux, memmove_user)(userptr_t dest, off_t dest_off, userptr_t sr
trivial_memmove_user(dest, dest_off, src, src_off, len);
}
static inline __always_inline int
UACCESS_INLINE(linux, memcmp_user)(userptr_t first, off_t first_off, userptr_t second, off_t second_off, size_t len)
{
return trivial_memcmp_user(first, first_off, second, second_off, len);
}
static inline __always_inline void
UACCESS_INLINE(linux, memset_user)(userptr_t buffer, off_t offset, int c, size_t len)
{

View File

@ -126,6 +126,23 @@ trivial_memmove_user ( userptr_t dest, off_t dest_off,
( ( void * ) src + src_off ), len );
}
/**
* Compare data between user buffers
*
* @v first First buffer
* @v first_off First buffer offset
* @v second Second buffer
* @v second_off Second buffer offset
* @v len Length
* @ret diff Difference
*/
static inline __always_inline int
trivial_memcmp_user ( userptr_t first, off_t first_off,
userptr_t second, off_t second_off, size_t len ) {
return memcmp ( ( ( void * ) first + first_off ),
( ( void * ) second + second_off ), len );
}
/**
* Fill user buffer with a constant byte
*
@ -333,6 +350,19 @@ copy_from_user ( void *dest, userptr_t src, off_t src_off, size_t len ) {
void memmove_user ( userptr_t dest, off_t dest_off,
userptr_t src, off_t src_off, size_t len );
/**
* Compare data between user buffers
*
* @v first First buffer
* @v first_off First buffer offset
* @v second Second buffer
* @v second_off Second buffer offset
* @v len Length
* @ret diff Difference
*/
int memcmp_user ( userptr_t first, off_t first_off,
userptr_t second, off_t second_off, size_t len );
/**
* Fill user buffer with a constant byte
*