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

Quelle  transport_class.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * transport_class.h - a generic container for all transport classes
 *
 * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com>
 */


#ifndef _TRANSPORT_CLASS_H_
#define _TRANSPORT_CLASS_H_

#include <linux/device.h>
#include <linux/bug.h>
#include <linux/attribute_container.h>

struct transport_container;

struct transport_class {
 struct class class;
 int (*setup)(struct transport_container *, struct device *,
       struct device *);
 int (*configure)(struct transport_container *, struct device *,
    struct device *);
 int (*remove)(struct transport_container *, struct device *,
        struct device *);
};

#define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg)   \
struct transport_class cls = {      \
 .class = {       \
  .name = nm,      \
 },        \
 .setup = su,       \
 .remove = rm,       \
 .configure = cfg,      \
}


struct anon_transport_class {
 struct transport_class tclass;
 struct attribute_container container;
};

#define DECLARE_ANON_TRANSPORT_CLASS(cls, mtch, cfg)  \
struct anon_transport_class cls = {    \
 .tclass = {      \
  .configure = cfg,    \
 },       \
 . container = {      \
  .match = mtch,     \
 },       \
}

#define class_to_transport_class(x) \
 container_of(x, struct transport_class, class)

struct transport_container {
 struct attribute_container ac;
 const struct attribute_group *statistics;
};

#define attribute_container_to_transport_container(x) \
 container_of(x, struct transport_container, ac)

void transport_remove_device(struct device *);
int transport_add_device(struct device *);
void transport_setup_device(struct device *);
void transport_configure_device(struct device *);
void transport_destroy_device(struct device *);

static inline int
transport_register_device(struct device *dev)
{
 int ret;

 transport_setup_device(dev);
 ret = transport_add_device(dev);
 if (ret)
  transport_destroy_device(dev);

 return ret;
}

static inline void
transport_unregister_device(struct device *dev)
{
 transport_remove_device(dev);
 transport_destroy_device(dev);
}

static inline int transport_container_register(struct transport_container *tc)
{
 return attribute_container_register(&tc->ac);
}

static inline void transport_container_unregister(struct transport_container *tc)
{
 if (unlikely(attribute_container_unregister(&tc->ac)))
  BUG();
}

int transport_class_register(struct transport_class *);
int anon_transport_class_register(struct anon_transport_class *);
void transport_class_unregister(struct transport_class *);
void anon_transport_class_unregister(struct anon_transport_class *);


#endif

Messung V0.5
C=90 H=99 G=94

¤ Dauer der Verarbeitung: 0.3 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.