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

Quelle  stm.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * System Trace Module (STM) infrastructure
 * Copyright (c) 2014, Intel Corporation.
 *
 * STM class implements generic infrastructure for  System Trace Module devices
 * as defined in MIPI STPv2 specification.
 */


#ifndef _STM_STM_H_
#define _STM_STM_H_

#include <linux/configfs.h>

struct stp_policy;
struct stp_policy_node;
struct stm_protocol_driver;

int stp_configfs_init(void);
void stp_configfs_exit(void);

void *stp_policy_node_priv(struct stp_policy_node *pn);

struct stp_master {
 unsigned int nr_free;
 unsigned long chan_map[];
};

struct stm_device {
 struct device  dev;
 struct module  *owner;
 struct stp_policy *policy;
 struct mutex  policy_mutex;
 int   major;
 unsigned int  sw_nmasters;
 struct stm_data  *data;
 struct mutex  link_mutex;
 spinlock_t  link_lock;
 struct list_head link_list;
 /* framing protocol in use */
 const struct stm_protocol_driver *pdrv;
 const struct config_item_type  *pdrv_node_type;
 /* master allocation */
 spinlock_t  mc_lock;
 struct stp_master *masters[];
};

#define to_stm_device(_d)    \
 container_of((_d), struct stm_device, dev)

struct stp_policy_node *
stp_policy_node_lookup(struct stm_device *stm, char *s);
void stp_policy_node_put(struct stp_policy_node *policy_node);
void stp_policy_unbind(struct stp_policy *policy);

void stp_policy_node_get_ranges(struct stp_policy_node *policy_node,
    unsigned int *mstart, unsigned int *mend,
    unsigned int *cstart, unsigned int *cend);

const struct config_item_type *
get_policy_node_type(struct configfs_attribute **attrs);

struct stm_output {
 spinlock_t  lock;
 unsigned int  master;
 unsigned int  channel;
 unsigned int  nr_chans;
 void   *pdrv_private;
};

struct stm_file {
 struct stm_device *stm;
 struct stm_output output;
};

struct stm_device *stm_find_device(const char *name);
void stm_put_device(struct stm_device *stm);

struct stm_source_device {
 struct device  dev;
 struct stm_source_data *data;
 spinlock_t  link_lock;
 struct stm_device __rcu *link;
 struct list_head link_entry;
 /* one output per stm_source device */
 struct stm_output output;
};

#define to_stm_source_device(_d)    \
 container_of((_d), struct stm_source_device, dev)

void *to_pdrv_policy_node(struct config_item *item);

struct stm_protocol_driver {
 struct module *owner;
 const char *name;
 ssize_t  (*write)(struct stm_data *data,
     struct stm_output *output, unsigned int chan,
     const char *buf, size_t count, struct stm_source_data *source);
 void  (*policy_node_init)(void *arg);
 int  (*output_open)(void *priv, struct stm_output *output);
 void  (*output_close)(struct stm_output *output);
 ssize_t  priv_sz;
 struct configfs_attribute **policy_attr;
};

int stm_register_protocol(const struct stm_protocol_driver *pdrv);
void stm_unregister_protocol(const struct stm_protocol_driver *pdrv);
int stm_lookup_protocol(const char *name,
   const struct stm_protocol_driver **pdrv,
   const struct config_item_type **type);
void stm_put_protocol(const struct stm_protocol_driver *pdrv);
ssize_t stm_data_write(struct stm_data *data, unsigned int m,
         unsigned int c, bool ts_first, const void *buf,
         size_t count);

#endif /* _STM_STM_H_ */

Messung V0.5
C=95 H=100 G=97

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