mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
util: Introduce virReadBufInt16LE and virReadBufInt16BE
In order to read 16 bits of data in the native format and convert add the 16 bit macros to match existing 32 and 64 bit code. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
8be83eef60
commit
cc1c7af2b3
@ -90,4 +90,28 @@
|
||||
((uint32_t)(uint8_t)((buf)[2]) << 16) | \
|
||||
((uint32_t)(uint8_t)((buf)[3]) << 24))
|
||||
|
||||
/**
|
||||
* virReadBufInt16BE:
|
||||
* @buf: byte to start reading at (can be 'char*' or 'unsigned char*');
|
||||
* evaluating buf must not have any side effects
|
||||
*
|
||||
* Read 2 bytes at BUF as a big-endian 16-bit number. Caller is
|
||||
* responsible to avoid reading beyond array bounds.
|
||||
*/
|
||||
# define virReadBufInt16BE(buf) \
|
||||
(((uint16_t)(uint8_t)((buf)[0]) << 8) | \
|
||||
(uint16_t)(uint8_t)((buf)[1]))
|
||||
|
||||
/**
|
||||
* virReadBufInt16LE:
|
||||
* @buf: byte to start reading at (can be 'char*' or 'unsigned char*');
|
||||
* evaluating buf must not have any side effects
|
||||
*
|
||||
* Read 2 bytes at BUF as a little-endian 16-bit number. Caller is
|
||||
* responsible to avoid reading beyond array bounds.
|
||||
*/
|
||||
# define virReadBufInt16LE(buf) \
|
||||
((uint16_t)(uint8_t)((buf)[0]) | \
|
||||
((uint16_t)(uint8_t)((buf)[1]) << 8))
|
||||
|
||||
#endif /* __VIR_ENDIAN_H__ */
|
||||
|
@ -50,6 +50,15 @@ test1(const void *data ATTRIBUTE_UNUSED)
|
||||
if (virReadBufInt32LE(array + 9) != 0x8d8c8b8aU)
|
||||
goto cleanup;
|
||||
|
||||
if (virReadBufInt16BE(array) != 0x0102U)
|
||||
goto cleanup;
|
||||
if (virReadBufInt16BE(array + 11) != 0x8c8dU)
|
||||
goto cleanup;
|
||||
if (virReadBufInt16LE(array) != 0x0201U)
|
||||
goto cleanup;
|
||||
if (virReadBufInt16LE(array + 11) != 0x8d8cU)
|
||||
goto cleanup;
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
return ret;
|
||||
@ -81,6 +90,15 @@ test2(const void *data ATTRIBUTE_UNUSED)
|
||||
if (virReadBufInt32LE(array + 9) != 0x8d8c8b8aU)
|
||||
goto cleanup;
|
||||
|
||||
if (virReadBufInt16BE(array) != 0x0102U)
|
||||
goto cleanup;
|
||||
if (virReadBufInt16BE(array + 11) != 0x8c8dU)
|
||||
goto cleanup;
|
||||
if (virReadBufInt16LE(array) != 0x0201U)
|
||||
goto cleanup;
|
||||
if (virReadBufInt16LE(array + 11) != 0x8d8cU)
|
||||
goto cleanup;
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user