diff options
| author | Michael Brown | 2014-01-06 18:56:58 +0100 |
|---|---|---|
| committer | Michael Brown | 2014-01-12 22:53:16 +0100 |
| commit | fffd98bd37029e6ec7a541690510fa538c9d65f8 (patch) | |
| tree | 4784b93c43fe81799c8ccf3bd4fb34ca2cd32531 /src/include/ipxe/uaccess.h | |
| parent | [libc] Add abs() (diff) | |
| download | ipxe-fffd98bd37029e6ec7a541690510fa538c9d65f8.tar.gz ipxe-fffd98bd37029e6ec7a541690510fa538c9d65f8.tar.xz ipxe-fffd98bd37029e6ec7a541690510fa538c9d65f8.zip | |
[uaccess] Add memcmp_user()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/uaccess.h')
| -rw-r--r-- | src/include/ipxe/uaccess.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/include/ipxe/uaccess.h b/src/include/ipxe/uaccess.h index 95e943675..055bb2ca7 100644 --- a/src/include/ipxe/uaccess.h +++ b/src/include/ipxe/uaccess.h @@ -127,6 +127,23 @@ trivial_memmove_user ( userptr_t dest, off_t dest_off, } /** + * 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 * * @v buffer User buffer @@ -334,6 +351,19 @@ 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 * * @v userptr User buffer |
