EasyManua.ls Logo

Oracle StorageTek T10000

Oracle StorageTek T10000
310 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Vendor Unique iSCSI CRC32C
August 2016 Data Integrity Validation 263
if ((length = len / CRC32C_SIZE) > 0) {
#if defined(__amd64) || defined(__x86_64)
uint64_t *data = (uint64_t *)addr;
#else
uint32_t *data = (uint32_t *)addr;
#endif
for (i = 0; i < length; i++) {
__asm__ __volatile__(
/* "crc32 r32, r/m32" or "crc32 r32,
r/m64" */
".byte 0xF2, " CRC32C_INST
"0x0F, 0x38, 0xF1, 0xF1"
: "=S"(crc)
: "0"(crc), "c"(*data));
data++;
}
addr = (uint8_t *)data;
len -= length * CRC32C_SIZE;
}
/* calc crc for remaining data */
for (i = 0; i < len; i++) {
__asm__ __volatile__(
/* "crc32 r32, r/m8" */
".byte 0xF2, 0x0F, 0x38, 0xF0, 0xF1"
: "=S"(crc)
: "0"(crc), "c"(*addr));
addr++;
}
return (crc ^ CRC32C_XOR);
}
#endif
Sparc (T4 Minimum)
#if defined(__sparc)
uint32_t
calc_crc32c_sparc(char *buf, int len, uint32_t crc)
{
uint8_t *addr = (uint8_t *)buf;

Table of Contents

Other manuals for Oracle StorageTek T10000

Related product manuals