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


Quelle  bundle.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Greybus bundles
 *
 * Copyright 2014 Google Inc.
 * Copyright 2014 Linaro Ltd.
 */


#ifndef __BUNDLE_H
#define __BUNDLE_H

#include <linux/types.h>
#include <linux/list.h>
#include <linux/pm_runtime.h>
#include <linux/device.h>

#define BUNDLE_ID_NONE U8_MAX

/* Greybus "public" definitions" */
struct gb_bundle {
 struct device  dev;
 struct gb_interface *intf;

 u8   id;
 u8   class;
 u8   class_major;
 u8   class_minor;

 size_t   num_cports;
 struct greybus_descriptor_cport *cport_desc;

 struct list_head connections;
 u8   *state;

 struct list_head links; /* interface->bundles */
};
#define to_gb_bundle(d) container_of(d, struct gb_bundle, dev)

/* Greybus "private" definitions" */
struct gb_bundle *gb_bundle_create(struct gb_interface *intf, u8 bundle_id,
       u8 class);
int gb_bundle_add(struct gb_bundle *bundle);
void gb_bundle_destroy(struct gb_bundle *bundle);

/* Bundle Runtime PM wrappers */
#ifdef CONFIG_PM
static inline int gb_pm_runtime_get_sync(struct gb_bundle *bundle)
{
 int retval;

 retval = pm_runtime_get_sync(&bundle->dev);
 if (retval < 0) {
  dev_err(&bundle->dev,
   "pm_runtime_get_sync failed: %d\n", retval);
  pm_runtime_put_noidle(&bundle->dev);
  return retval;
 }

 return 0;
}

static inline int gb_pm_runtime_put_autosuspend(struct gb_bundle *bundle)
{
 int retval;

 pm_runtime_mark_last_busy(&bundle->dev);
 retval = pm_runtime_put_autosuspend(&bundle->dev);

 return retval;
}

static inline void gb_pm_runtime_get_noresume(struct gb_bundle *bundle)
{
 pm_runtime_get_noresume(&bundle->dev);
}

static inline void gb_pm_runtime_put_noidle(struct gb_bundle *bundle)
{
 pm_runtime_put_noidle(&bundle->dev);
}

#else
static inline int gb_pm_runtime_get_sync(struct gb_bundle *bundle)
return 0; }
static inline int gb_pm_runtime_put_autosuspend(struct gb_bundle *bundle)
return 0; }

static inline void gb_pm_runtime_get_noresume(struct gb_bundle *bundle) {}
static inline void gb_pm_runtime_put_noidle(struct gb_bundle *bundle) {}
#endif

#endif /* __BUNDLE_H */

Messung V0.5
C=94 H=100 G=96

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






                                                                                                                                                                                                                                                                                                                                                                                                     


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