Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  gen_crc32table.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
#include <stdio.h>
#include "../../include/linux/crc32poly.h"
#include "../../include/generated/autoconf.h"
#include <inttypes.h>

static uint32_t crc32table_le[256];
static uint32_t crc32table_be[256];
static uint32_t crc32ctable_le[256];

/**
 * crc32init_le() - allocate and initialize LE table data
 *
 * crc is the crc of the byte i; other entries are filled in based on the
 * fact that crctable[i^j] = crctable[i] ^ crctable[j].
 *
 */

static void crc32init_le_generic(const uint32_t polynomial, uint32_t tab[256])
{
 unsigned i, j;
 uint32_t crc = 1;

 tab[0] = 0;

 for (i = 128; i; i >>= 1) {
  crc = (crc >> 1) ^ ((crc & 1) ? polynomial : 0);
  for (j = 0; j < 256; j += 2 * i)
   tab[i + j] = crc ^ tab[j];
 }
}

static void crc32init_le(void)
{
 crc32init_le_generic(CRC32_POLY_LE, crc32table_le);
}

static void crc32cinit_le(void)
{
 crc32init_le_generic(CRC32C_POLY_LE, crc32ctable_le);
}

/**
 * crc32init_be() - allocate and initialize BE table data
 */

static void crc32init_be(void)
{
 unsigned i, j;
 uint32_t crc = 0x80000000;

 crc32table_be[0] = 0;

 for (i = 1; i < 256; i <<= 1) {
  crc = (crc << 1) ^ ((crc & 0x80000000) ? CRC32_POLY_BE : 0);
  for (j = 0; j < i; j++)
   crc32table_be[i + j] = crc ^ crc32table_be[j];
 }
}

static void output_table(const uint32_t table[256])
{
 int i;

 for (i = 0; i < 256; i += 4) {
  printf("\t0x%08x, 0x%08x, 0x%08x, 0x%08x,\n",
         table[i], table[i + 1], table[i + 2], table[i + 3]);
 }
}

int main(int argc, char** argv)
{
 printf("/* this file is generated - do not edit */\n\n");

 crc32init_le();
 printf("static const u32 ____cacheline_aligned crc32table_le[256] = {\n");
 output_table(crc32table_le);
 printf("};\n");

 crc32init_be();
 printf("static const u32 ____cacheline_aligned crc32table_be[256] = {\n");
 output_table(crc32table_be);
 printf("};\n");

 crc32cinit_le();
 printf("static const u32 ____cacheline_aligned crc32ctable_le[256] = {\n");
 output_table(crc32ctable_le);
 printf("};\n");

 return 0;
}

Messung V0.5
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge