提交 cc1c7af2 编写于 作者: J John Ferlan

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: NJohn Ferlan <jferlan@redhat.com>
上级 8be83eef
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册