LCOV - code coverage report
Current view: top level - lib/os - crc32_sw.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 9 0.0 %
Date: 2022-08-18 11:36:24 Functions: 0 2 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 2 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright (c) 2018 Workaround GmbH.
       3                 :            :  *
       4                 :            :  * SPDX-License-Identifier: Apache-2.0
       5                 :            :  */
       6                 :            : 
       7                 :            : #include <sys/crc.h>
       8                 :            : 
       9                 :          0 : uint32_t crc32_ieee(const uint8_t *data, size_t len)
      10                 :            : {
      11                 :          0 :         return crc32_ieee_update(0x0, data, len);
      12                 :            : }
      13                 :            : 
      14                 :          0 : uint32_t crc32_ieee_update(uint32_t crc, const uint8_t *data, size_t len)
      15                 :            : {
      16                 :            :         /* crc table generated from polynomial 0xedb88320 */
      17                 :            :         static const uint32_t table[16] = {
      18                 :            :                 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac,
      19                 :            :                 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
      20                 :            :                 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c,
      21                 :            :                 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c,
      22                 :            :         };
      23                 :            : 
      24                 :          0 :         crc = ~crc;
      25                 :            : 
      26         [ #  # ]:          0 :         for (size_t i = 0; i < len; i++) {
      27                 :          0 :                 uint8_t byte = data[i];
      28                 :            : 
      29                 :          0 :                 crc = (crc >> 4) ^ table[(crc ^ byte) & 0x0f];
      30                 :          0 :                 crc = (crc >> 4) ^ table[(crc ^ ((uint32_t)byte >> 4)) & 0x0f];
      31                 :            :         }
      32                 :            : 
      33                 :          0 :         return (~crc);
      34                 :            : }

Generated by: LCOV version 1.14