<?xml version='1.0' encoding='UTF-8' standalone='no'?> <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16"> <compounddef id="crc32_8c" kind="file" language="C++"> <compoundname>crc32.c</compoundname> <includes refid="include_2sys_2types_8h" local="no">sys/types.h</includes> <includes refid="crc32_8h" local="no">fs/common/crc32.h</includes> <incdepgraph> <node id="4"> <label>sys/select.h</label> <link refid="select_8h"/> <childnode refid="5" relation="include"> </childnode> <childnode refid="3" relation="include"> </childnode> <childnode refid="6" relation="include"> </childnode> <childnode refid="7" relation="include"> </childnode> <childnode refid="8" relation="include"> </childnode> </node> <node id="1"> <label>C:/Dev/git/UbixOS/sys/fs/common/crc32.c</label> <link refid="crc32_8c"/> <childnode refid="2" relation="include"> </childnode> <childnode refid="9" relation="include"> </childnode> </node> <node id="8"> <label>sys/_sigset.h</label> <link refid="__sigset_8h"/> <childnode refid="3" relation="include"> </childnode> </node> <node id="9"> <label>fs/common/crc32.h</label> <link refid="crc32_8h"/> </node> <node id="2"> <label>sys/types.h</label> <link refid="include_2sys_2types_8h"/> <childnode refid="3" relation="include"> </childnode> <childnode refid="4" relation="include"> </childnode> </node> <node id="5"> <label>sys/cdefs.h</label> <link refid="cdefs_8h"/> </node> <node id="3"> <label>sys/_types.h</label> <link refid="__types_8h"/> </node> <node id="6"> <label>sys/_timespec.h</label> <link refid="__timespec_8h"/> <childnode refid="3" relation="include"> </childnode> </node> <node id="7"> <label>sys/_timeval.h</label> <link refid="__timeval_8h"/> <childnode refid="3" relation="include"> </childnode> </node> </incdepgraph> <sectiondef kind="var"> <memberdef kind="variable" id="crc32_8c_1a7c721e38ec2a9be581f718dc5405ace8" prot="public" static="yes" mutable="no"> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> <ref refid="include_2sys_2types_8h_1a0238af00180b6d9278fa1c6aa790fdf4" kindref="member">uint32_t</ref></type> <definition>const uint32_t crc32_tab[]</definition> <argsstring>[]</argsstring> <name>crc32_tab</name> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/fs/common/crc32.c" line="50" column="23" bodyfile="C:/Dev/git/UbixOS/sys/fs/common/crc32.c" bodystart="50" bodyend="-1"/> </memberdef> </sectiondef> <sectiondef kind="func"> <memberdef kind="function" id="crc32_8c_1ae1ce21755b99c89f626605a5814419d4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> <type><ref refid="include_2sys_2types_8h_1a0238af00180b6d9278fa1c6aa790fdf4" kindref="member">uint32_t</ref></type> <definition>uint32_t crc32</definition> <argsstring>(const void *buf, size_t size)</argsstring> <name>crc32</name> <param> <type><ref refid="cdefs_8h_1a2c212835823e3c54a8ab6d95c652660e" kindref="member">const</ref> void *</type> <declname>buf</declname> </param> <param> <type><ref refid="include_2sys_2types_8h_1a7619b847aeded8a6d14cbfa212b2cdfb" kindref="member">size_t</ref></type> <declname>size</declname> </param> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <inbodydescription> </inbodydescription> <location file="C:/Dev/git/UbixOS/sys/fs/common/crc32.c" line="97" column="1" bodyfile="C:/Dev/git/UbixOS/sys/fs/common/crc32.c" bodystart="97" bodyend="106"/> </memberdef> </sectiondef> <briefdescription> </briefdescription> <detaileddescription> </detaileddescription> <programlisting> <codeline lineno="1"><highlight class="comment">/*-</highlight></codeline> <codeline lineno="2"><highlight class="comment"><sp/>*<sp/><sp/>COPYRIGHT<sp/>(C)<sp/>1986<sp/>Gary<sp/>S.<sp/>Brown.<sp/><sp/>You<sp/>may<sp/>use<sp/>this<sp/>program,<sp/>or</highlight></codeline> <codeline lineno="3"><highlight class="comment"><sp/>*<sp/><sp/>code<sp/>or<sp/>tables<sp/>extracted<sp/>from<sp/>it,<sp/>as<sp/>desired<sp/>without<sp/>restriction.</highlight></codeline> <codeline lineno="4"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="5"><highlight class="normal"></highlight></codeline> <codeline lineno="6"><highlight class="normal"></highlight><highlight class="comment">/*</highlight></codeline> <codeline lineno="7"><highlight class="comment"><sp/>*<sp/><sp/>First,<sp/>the<sp/>polynomial<sp/>itself<sp/>and<sp/>its<sp/>table<sp/>of<sp/>feedback<sp/>terms.<sp/><sp/>The</highlight></codeline> <codeline lineno="8"><highlight class="comment"><sp/>*<sp/><sp/>polynomial<sp/>is</highlight></codeline> <codeline lineno="9"><highlight class="comment"><sp/>*<sp/><sp/>X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0</highlight></codeline> <codeline lineno="10"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="11"><highlight class="comment"><sp/>*<sp/><sp/>Note<sp/>that<sp/>we<sp/>take<sp/>it<sp/>"backwards"<sp/>and<sp/>put<sp/>the<sp/>highest-order<sp/>term<sp/>in</highlight></codeline> <codeline lineno="12"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>lowest-order<sp/>bit.<sp/><sp/>The<sp/>X^32<sp/>term<sp/>is<sp/>"implied";<sp/>the<sp/>LSB<sp/>is<sp/>the</highlight></codeline> <codeline lineno="13"><highlight class="comment"><sp/>*<sp/><sp/>X^31<sp/>term,<sp/>etc.<sp/><sp/>The<sp/>X^0<sp/>term<sp/>(usually<sp/>shown<sp/>as<sp/>"+1")<sp/>results<sp/>in</highlight></codeline> <codeline lineno="14"><highlight class="comment"><sp/>*<sp/><sp/>the<sp/>MSB<sp/>being<sp/>1</highlight></codeline> <codeline lineno="15"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="16"><highlight class="comment"><sp/>*<sp/><sp/>Note<sp/>that<sp/>the<sp/>usual<sp/>hardware<sp/>shift<sp/>register<sp/>implementation,<sp/>which</highlight></codeline> <codeline lineno="17"><highlight class="comment"><sp/>*<sp/><sp/>is<sp/>what<sp/>we're<sp/>using<sp/>(we're<sp/>merely<sp/>optimizing<sp/>it<sp/>by<sp/>doing<sp/>eight-bit</highlight></codeline> <codeline lineno="18"><highlight class="comment"><sp/>*<sp/><sp/>chunks<sp/>at<sp/>a<sp/>time)<sp/>shifts<sp/>bits<sp/>into<sp/>the<sp/>lowest-order<sp/>term.<sp/><sp/>In<sp/>our</highlight></codeline> <codeline lineno="19"><highlight class="comment"><sp/>*<sp/><sp/>implementation,<sp/>that<sp/>means<sp/>shifting<sp/>towards<sp/>the<sp/>right.<sp/><sp/>Why<sp/>do<sp/>we</highlight></codeline> <codeline lineno="20"><highlight class="comment"><sp/>*<sp/><sp/>do<sp/>it<sp/>this<sp/>way?<sp/><sp/>Because<sp/>the<sp/>calculated<sp/>CRC<sp/>must<sp/>be<sp/>transmitted<sp/>in</highlight></codeline> <codeline lineno="21"><highlight class="comment"><sp/>*<sp/><sp/>order<sp/>from<sp/>highest-order<sp/>term<sp/>to<sp/>lowest-order<sp/>term.<sp/><sp/>UARTs<sp/>transmit</highlight></codeline> <codeline lineno="22"><highlight class="comment"><sp/>*<sp/><sp/>characters<sp/>in<sp/>order<sp/>from<sp/>LSB<sp/>to<sp/>MSB.<sp/><sp/>By<sp/>storing<sp/>the<sp/>CRC<sp/>this<sp/>way</highlight></codeline> <codeline lineno="23"><highlight class="comment"><sp/>*<sp/><sp/>we<sp/>hand<sp/>it<sp/>to<sp/>the<sp/>UART<sp/>in<sp/>the<sp/>order<sp/>low-byte<sp/>to<sp/>high-byte;<sp/>the<sp/>UART</highlight></codeline> <codeline lineno="24"><highlight class="comment"><sp/>*<sp/><sp/>sends<sp/>each<sp/>low-bit<sp/>to<sp/>hight-bit;<sp/>and<sp/>the<sp/>result<sp/>is<sp/>transmission<sp/>bit</highlight></codeline> <codeline lineno="25"><highlight class="comment"><sp/>*<sp/><sp/>by<sp/>bit<sp/>from<sp/>highest-<sp/>to<sp/>lowest-order<sp/>term<sp/>without<sp/>requiring<sp/>any<sp/>bit</highlight></codeline> <codeline lineno="26"><highlight class="comment"><sp/>*<sp/><sp/>shuffling<sp/>on<sp/>our<sp/>part.<sp/><sp/>Reception<sp/>works<sp/>similarly</highlight></codeline> <codeline lineno="27"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="28"><highlight class="comment"><sp/>*<sp/><sp/>The<sp/>feedback<sp/>terms<sp/>table<sp/>consists<sp/>of<sp/>256,<sp/>32-bit<sp/>entries.<sp/><sp/>Notes</highlight></codeline> <codeline lineno="29"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="30"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>The<sp/>table<sp/>can<sp/>be<sp/>generated<sp/>at<sp/>runtime<sp/>if<sp/>desired;<sp/>code<sp/>to<sp/>do<sp/>so</highlight></codeline> <codeline lineno="31"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>is<sp/>shown<sp/>later.<sp/><sp/>It<sp/>might<sp/>not<sp/>be<sp/>obvious,<sp/>but<sp/>the<sp/>feedback</highlight></codeline> <codeline lineno="32"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>terms<sp/>simply<sp/>represent<sp/>the<sp/>results<sp/>of<sp/>eight<sp/>shift/xor<sp/>opera</highlight></codeline> <codeline lineno="33"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>tions<sp/>for<sp/>all<sp/>combinations<sp/>of<sp/>data<sp/>and<sp/>CRC<sp/>register<sp/>values</highlight></codeline> <codeline lineno="34"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="35"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>The<sp/>values<sp/>must<sp/>be<sp/>right-shifted<sp/>by<sp/>eight<sp/>bits<sp/>by<sp/>the<sp/>"updcrc</highlight></codeline> <codeline lineno="36"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>logic;<sp/>the<sp/>shift<sp/>must<sp/>be<sp/>unsigned<sp/>(bring<sp/>in<sp/>zeroes).<sp/><sp/>On<sp/>some</highlight></codeline> <codeline lineno="37"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>hardware<sp/>you<sp/>could<sp/>probably<sp/>optimize<sp/>the<sp/>shift<sp/>in<sp/>assembler<sp/>by</highlight></codeline> <codeline lineno="38"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>using<sp/>byte-swap<sp/>instructions</highlight></codeline> <codeline lineno="39"><highlight class="comment"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>polynomial<sp/>$edb88320</highlight></codeline> <codeline lineno="40"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="41"><highlight class="comment"><sp/>*</highlight></codeline> <codeline lineno="42"><highlight class="comment"><sp/>*<sp/>CRC32<sp/>code<sp/>derived<sp/>from<sp/>work<sp/>by<sp/>Gary<sp/>S.<sp/>Brown.</highlight></codeline> <codeline lineno="43"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline> <codeline lineno="44"><highlight class="normal"></highlight></codeline> <codeline lineno="45"><highlight class="normal"></highlight><highlight class="comment">//#include<sp/><sys/cdefs.h></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="46"><highlight class="normal"></highlight></codeline> <codeline lineno="47"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><<ref refid="include_2sys_2types_8h" kindref="compound">sys/types.h</ref>></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="48"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><<ref refid="crc32_8h" kindref="compound">fs/common/crc32.h</ref>></highlight><highlight class="normal"></highlight></codeline> <codeline lineno="49"><highlight class="normal"></highlight></codeline> <codeline lineno="50"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="include_2sys_2types_8h_1a0238af00180b6d9278fa1c6aa790fdf4" kindref="member">uint32_t</ref><sp/>crc32_tab[]<sp/>=<sp/>{</highlight></codeline> <codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x00000000,<sp/>0x77073096,<sp/>0xee0e612c,<sp/>0x990951ba,<sp/>0x076dc419,<sp/>0x706af48f,</highlight></codeline> <codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xe963a535,<sp/>0x9e6495a3,<sp/>0x0edb8832,<sp/>0x79dcb8a4,<sp/>0xe0d5e91e,<sp/>0x97d2d988,</highlight></codeline> <codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x09b64c2b,<sp/>0x7eb17cbd,<sp/>0xe7b82d07,<sp/>0x90bf1d91,<sp/>0x1db71064,<sp/>0x6ab020f2,</highlight></codeline> <codeline lineno="54"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xf3b97148,<sp/>0x84be41de,<sp/>0x1adad47d,<sp/>0x6ddde4eb,<sp/>0xf4d4b551,<sp/>0x83d385c7,</highlight></codeline> <codeline lineno="55"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x136c9856,<sp/>0x646ba8c0,<sp/>0xfd62f97a,<sp/>0x8a65c9ec,<sp/>0x14015c4f,<sp/>0x63066cd9,</highlight></codeline> <codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xfa0f3d63,<sp/>0x8d080df5,<sp/>0x3b6e20c8,<sp/>0x4c69105e,<sp/>0xd56041e4,<sp/>0xa2677172,</highlight></codeline> <codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x3c03e4d1,<sp/>0x4b04d447,<sp/>0xd20d85fd,<sp/>0xa50ab56b,<sp/>0x35b5a8fa,<sp/>0x42b2986c,</highlight></codeline> <codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xdbbbc9d6,<sp/>0xacbcf940,<sp/>0x32d86ce3,<sp/>0x45df5c75,<sp/>0xdcd60dcf,<sp/>0xabd13d59,</highlight></codeline> <codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x26d930ac,<sp/>0x51de003a,<sp/>0xc8d75180,<sp/>0xbfd06116,<sp/>0x21b4f4b5,<sp/>0x56b3c423,</highlight></codeline> <codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xcfba9599,<sp/>0xb8bda50f,<sp/>0x2802b89e,<sp/>0x5f058808,<sp/>0xc60cd9b2,<sp/>0xb10be924,</highlight></codeline> <codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x2f6f7c87,<sp/>0x58684c11,<sp/>0xc1611dab,<sp/>0xb6662d3d,<sp/>0x76dc4190,<sp/>0x01db7106,</highlight></codeline> <codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x98d220bc,<sp/>0xefd5102a,<sp/>0x71b18589,<sp/>0x06b6b51f,<sp/>0x9fbfe4a5,<sp/>0xe8b8d433,</highlight></codeline> <codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x7807c9a2,<sp/>0x0f00f934,<sp/>0x9609a88e,<sp/>0xe10e9818,<sp/>0x7f6a0dbb,<sp/>0x086d3d2d,</highlight></codeline> <codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x91646c97,<sp/>0xe6635c01,<sp/>0x6b6b51f4,<sp/>0x1c6c6162,<sp/>0x856530d8,<sp/>0xf262004e,</highlight></codeline> <codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x6c0695ed,<sp/>0x1b01a57b,<sp/>0x8208f4c1,<sp/>0xf50fc457,<sp/>0x65b0d9c6,<sp/>0x12b7e950,</highlight></codeline> <codeline lineno="66"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x8bbeb8ea,<sp/>0xfcb9887c,<sp/>0x62dd1ddf,<sp/>0x15da2d49,<sp/>0x8cd37cf3,<sp/>0xfbd44c65,</highlight></codeline> <codeline lineno="67"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x4db26158,<sp/>0x3ab551ce,<sp/>0xa3bc0074,<sp/>0xd4bb30e2,<sp/>0x4adfa541,<sp/>0x3dd895d7,</highlight></codeline> <codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xa4d1c46d,<sp/>0xd3d6f4fb,<sp/>0x4369e96a,<sp/>0x346ed9fc,<sp/>0xad678846,<sp/>0xda60b8d0,</highlight></codeline> <codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x44042d73,<sp/>0x33031de5,<sp/>0xaa0a4c5f,<sp/>0xdd0d7cc9,<sp/>0x5005713c,<sp/>0x270241aa,</highlight></codeline> <codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xbe0b1010,<sp/>0xc90c2086,<sp/>0x5768b525,<sp/>0x206f85b3,<sp/>0xb966d409,<sp/>0xce61e49f,</highlight></codeline> <codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x5edef90e,<sp/>0x29d9c998,<sp/>0xb0d09822,<sp/>0xc7d7a8b4,<sp/>0x59b33d17,<sp/>0x2eb40d81,</highlight></codeline> <codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xb7bd5c3b,<sp/>0xc0ba6cad,<sp/>0xedb88320,<sp/>0x9abfb3b6,<sp/>0x03b6e20c,<sp/>0x74b1d29a,</highlight></codeline> <codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xead54739,<sp/>0x9dd277af,<sp/>0x04db2615,<sp/>0x73dc1683,<sp/>0xe3630b12,<sp/>0x94643b84,</highlight></codeline> <codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x0d6d6a3e,<sp/>0x7a6a5aa8,<sp/>0xe40ecf0b,<sp/>0x9309ff9d,<sp/>0x0a00ae27,<sp/>0x7d079eb1,</highlight></codeline> <codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xf00f9344,<sp/>0x8708a3d2,<sp/>0x1e01f268,<sp/>0x6906c2fe,<sp/>0xf762575d,<sp/>0x806567cb,</highlight></codeline> <codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x196c3671,<sp/>0x6e6b06e7,<sp/>0xfed41b76,<sp/>0x89d32be0,<sp/>0x10da7a5a,<sp/>0x67dd4acc,</highlight></codeline> <codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xf9b9df6f,<sp/>0x8ebeeff9,<sp/>0x17b7be43,<sp/>0x60b08ed5,<sp/>0xd6d6a3e8,<sp/>0xa1d1937e,</highlight></codeline> <codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x38d8c2c4,<sp/>0x4fdff252,<sp/>0xd1bb67f1,<sp/>0xa6bc5767,<sp/>0x3fb506dd,<sp/>0x48b2364b,</highlight></codeline> <codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xd80d2bda,<sp/>0xaf0a1b4c,<sp/>0x36034af6,<sp/>0x41047a60,<sp/>0xdf60efc3,<sp/>0xa867df55,</highlight></codeline> <codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x316e8eef,<sp/>0x4669be79,<sp/>0xcb61b38c,<sp/>0xbc66831a,<sp/>0x256fd2a0,<sp/>0x5268e236,</highlight></codeline> <codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xcc0c7795,<sp/>0xbb0b4703,<sp/>0x220216b9,<sp/>0x5505262f,<sp/>0xc5ba3bbe,<sp/>0xb2bd0b28,</highlight></codeline> <codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x2bb45a92,<sp/>0x5cb36a04,<sp/>0xc2d7ffa7,<sp/>0xb5d0cf31,<sp/>0x2cd99e8b,<sp/>0x5bdeae1d,</highlight></codeline> <codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x9b64c2b0,<sp/>0xec63f226,<sp/>0x756aa39c,<sp/>0x026d930a,<sp/>0x9c0906a9,<sp/>0xeb0e363f,</highlight></codeline> <codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x72076785,<sp/>0x05005713,<sp/>0x95bf4a82,<sp/>0xe2b87a14,<sp/>0x7bb12bae,<sp/>0x0cb61b38,</highlight></codeline> <codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x92d28e9b,<sp/>0xe5d5be0d,<sp/>0x7cdcefb7,<sp/>0x0bdbdf21,<sp/>0x86d3d2d4,<sp/>0xf1d4e242,</highlight></codeline> <codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x68ddb3f8,<sp/>0x1fda836e,<sp/>0x81be16cd,<sp/>0xf6b9265b,<sp/>0x6fb077e1,<sp/>0x18b74777,</highlight></codeline> <codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x88085ae6,<sp/>0xff0f6a70,<sp/>0x66063bca,<sp/>0x11010b5c,<sp/>0x8f659eff,<sp/>0xf862ae69,</highlight></codeline> <codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x616bffd3,<sp/>0x166ccf45,<sp/>0xa00ae278,<sp/>0xd70dd2ee,<sp/>0x4e048354,<sp/>0x3903b3c2,</highlight></codeline> <codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xa7672661,<sp/>0xd06016f7,<sp/>0x4969474d,<sp/>0x3e6e77db,<sp/>0xaed16a4a,<sp/>0xd9d65adc,</highlight></codeline> <codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x40df0b66,<sp/>0x37d83bf0,<sp/>0xa9bcae53,<sp/>0xdebb9ec5,<sp/>0x47b2cf7f,<sp/>0x30b5ffe9,</highlight></codeline> <codeline lineno="91"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xbdbdf21c,<sp/>0xcabac28a,<sp/>0x53b39330,<sp/>0x24b4a3a6,<sp/>0xbad03605,<sp/>0xcdd70693,</highlight></codeline> <codeline lineno="92"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0x54de5729,<sp/>0x23d967bf,<sp/>0xb3667a2e,<sp/>0xc4614ab8,<sp/>0x5d681b02,<sp/>0x2a6f2b94,</highlight></codeline> <codeline lineno="93"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>0xb40bbe37,<sp/>0xc30c8ea1,<sp/>0x5a05df1b,<sp/>0x2d02ef8d</highlight></codeline> <codeline lineno="94"><highlight class="normal">};</highlight></codeline> <codeline lineno="95"><highlight class="normal"></highlight></codeline> <codeline lineno="96"><highlight class="normal"><ref refid="include_2sys_2types_8h_1a0238af00180b6d9278fa1c6aa790fdf4" kindref="member">uint32_t</ref></highlight></codeline> <codeline lineno="97" refid="crc32_8h_1ae1ce21755b99c89f626605a5814419d4" refkind="member"><highlight class="normal"><ref refid="crc32_8c_1ae1ce21755b99c89f626605a5814419d4" kindref="member">crc32</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="structbuf" kindref="compound">buf</ref>,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>size)</highlight></codeline> <codeline lineno="98"><highlight class="normal">{</highlight></codeline> <codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="include_2sys_2types_8h_1ac7c42f52639b9aca7da966a0783996d7" kindref="member">u_int8_t</ref><sp/>*p<sp/>=<sp/><ref refid="structbuf" kindref="compound">buf</ref>;</highlight></codeline> <codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="include_2sys_2types_8h_1a0238af00180b6d9278fa1c6aa790fdf4" kindref="member">uint32_t</ref><sp/>crc;</highlight></codeline> <codeline lineno="101"><highlight class="normal"></highlight></codeline> <codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>crc<sp/>=<sp/>~0U;</highlight></codeline> <codeline lineno="103"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>(size--)</highlight></codeline> <codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>crc<sp/>=<sp/>crc32_tab[(crc<sp/>^<sp/>*p++)<sp/>&<sp/>0xFF]<sp/>^<sp/>(crc<sp/>>><sp/>8);</highlight></codeline> <codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(crc<sp/>^<sp/>~0U);</highlight></codeline> <codeline lineno="106"><highlight class="normal">}</highlight></codeline> </programlisting> <location file="C:/Dev/git/UbixOS/sys/fs/common/crc32.c"/> </compounddef> </doxygen>