Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/zorro/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  names.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Zorro Device Name Tables
 *
 * Copyright (C) 1999--2000 Geert Uytterhoeven
 *
 * Based on the PCI version:
 *
 * Copyright 1992--1999 Drew Eckhardt, Frederic Potter,
 * David Mosberger-Tang, Martin Mares
 */


#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/zorro.h>

#include "zorro.h"

struct zorro_prod_info {
 __u16 prod;
 unsigned short seen;
 const char *name;
};

struct zorro_manuf_info {
 __u16 manuf;
 unsigned short nr;
 const char *name;
 struct zorro_prod_info *prods;
};

/*
 * This is ridiculous, but we want the strings in
 * the .init section so that they don't take up
 * real memory.. Parse the same file multiple times
 * to get all the info.
 */

#define MANUF( manuf, name )  static char __manufstr_##manuf[] __initdata = name;
#define ENDMANUF()
#define PRODUCT( manuf, prod, name )  static char __prodstr_##manuf##prod[] __initdata = name;
#include "devlist.h"


#define MANUF( manuf, name )  static struct zorro_prod_info __prods_##manuf[] __initdata = {
#define ENDMANUF()   };
#define PRODUCT( manuf, prod, name ) { 0x##prod, 0, __prodstr_##manuf##prod },
#include "devlist.h"

static struct zorro_manuf_info __initdata zorro_manuf_list[] = {
#define MANUF( manuf, name )  { 0x##manuf, ARRAY_SIZE(__prods_##manuf), __manufstr_##manuf, __prods_##manuf },
#define ENDMANUF()
#define PRODUCT( manuf, prod, name )
#include "devlist.h"
};

#define MANUFS ARRAY_SIZE(zorro_manuf_list)

void __init zorro_name_device(struct zorro_dev *dev)
{
 const struct zorro_manuf_info *manuf_p = zorro_manuf_list;
 int i = MANUFS;
 char *name = dev->name;

 do {
  if (manuf_p->manuf == ZORRO_MANUF(dev->id))
   goto match_manuf;
  manuf_p++;
 } while (--i);

 /* Couldn't find either the manufacturer nor the product */
 return;

 match_manuf: {
  struct zorro_prod_info *prod_p = manuf_p->prods;
  int i = manuf_p->nr;

  while (i > 0) {
   if (prod_p->prod ==
       ((ZORRO_PROD(dev->id)<<8) | ZORRO_EPC(dev->id)))
    goto match_prod;
   prod_p++;
   i--;
  }

  /* Ok, found the manufacturer, but unknown product */
  sprintf(name, "Zorro device %08x (%s)", dev->id, manuf_p->name);
  return;

  /* Full match */
  match_prod: {
   char *n = name + sprintf(name, "%s %s", manuf_p->name, prod_p->name);
   int nr = prod_p->seen + 1;
   prod_p->seen = nr;
   if (nr > 1)
    sprintf(n, " (#%d)", nr);
  }
 }
}

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

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© 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.