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

Quelle  zfcp_diag.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * zfcp device driver
 *
 * Definitions for handling diagnostics in the zfcp device driver.
 *
 * Copyright IBM Corp. 2018, 2020
 */


#ifndef ZFCP_DIAG_H
#define ZFCP_DIAG_H

#include <linux/spinlock.h>

#include "zfcp_fsf.h"
#include "zfcp_def.h"

/**
 * struct zfcp_diag_header - general part of a diagnostic buffer.
 * @access_lock: lock protecting all the data in this buffer.
 * @updating: flag showing that an update for this buffer is currently running.
 * @incomplete: flag showing that the data in @buffer is incomplete.
 * @timestamp: time in jiffies when the data of this buffer was last captured.
 * @buffer: implementation-depending data of this buffer
 * @buffer_size: size of @buffer
 */

struct zfcp_diag_header {
 spinlock_t access_lock;

 /* Flags */
 u64  updating :1;
 u64  incomplete :1;

 unsigned long timestamp;

 void  *buffer;
 size_t  buffer_size;
};

/**
 * struct zfcp_diag_adapter - central storage for all diagnostics concerning an
 *       adapter.
 * @max_age: maximum age of data in diagnostic buffers before they need to be
 *      refreshed (in ms).
 * @port_data: data retrieved using exchange port data.
 * @port_data.header: header with metadata for the cache in @port_data.data.
 * @port_data.data: cached QTCB Bottom of command exchange port data.
 * @config_data: data retrieved using exchange config data.
 * @config_data.header: header with metadata for the cache in @config_data.data.
 * @config_data.data: cached QTCB Bottom of command exchange config data.
 */

struct zfcp_diag_adapter {
 unsigned long max_age;

 struct zfcp_diag_adapter_port_data {
  struct zfcp_diag_header  header;
  struct fsf_qtcb_bottom_port data;
 } port_data;
 struct zfcp_diag_adapter_config_data {
  struct zfcp_diag_header  header;
  struct fsf_qtcb_bottom_config data;
 } config_data;
};

int zfcp_diag_adapter_setup(struct zfcp_adapter *const adapter);
void zfcp_diag_adapter_free(struct zfcp_adapter *const adapter);

void zfcp_diag_update_xdata(struct zfcp_diag_header *const hdr,
       const void *const data, const bool incomplete);

/*
 * Function-Type used in zfcp_diag_update_buffer_limited() for the function
 * that does the buffer-implementation dependent work.
 */

typedef int (*zfcp_diag_update_buffer_func)(struct zfcp_adapter *const adapter);

int zfcp_diag_update_config_data_buffer(struct zfcp_adapter *const adapter);
int zfcp_diag_update_port_data_buffer(struct zfcp_adapter *const adapter);
int zfcp_diag_update_buffer_limited(struct zfcp_adapter *const adapter,
        struct zfcp_diag_header *const hdr,
        zfcp_diag_update_buffer_func buffer_update);

/**
 * zfcp_diag_support_sfp() - Return %true if the @adapter supports reporting
 *      SFP Data.
 * @adapter: adapter to test the availability of SFP Data reporting for.
 */

static inline bool
zfcp_diag_support_sfp(const struct zfcp_adapter *const adapter)
{
 return !!(adapter->adapter_features & FSF_FEATURE_REPORT_SFP_DATA);
}

#endif /* ZFCP_DIAG_H */

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

¤ 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.