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

Quelle  dm-io-tracker.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2021 Red Hat, Inc. All rights reserved.
 *
 * This file is released under the GPL.
 */


#ifndef DM_IO_TRACKER_H
#define DM_IO_TRACKER_H

#include <linux/jiffies.h>

struct dm_io_tracker {
 spinlock_t lock;

 /*
 * Sectors of in-flight IO.
 */

 sector_t in_flight;

 /*
 * The time, in jiffies, when this device became idle
 * (if it is indeed idle).
 */

 unsigned long idle_time;
 unsigned long last_update_time;
};

static inline void dm_iot_init(struct dm_io_tracker *iot)
{
 spin_lock_init(&iot->lock);
 iot->in_flight = 0ul;
 iot->idle_time = 0ul;
 iot->last_update_time = jiffies;
}

static inline bool dm_iot_idle_for(struct dm_io_tracker *iot, unsigned long j)
{
 bool r = false;

 spin_lock_irq(&iot->lock);
 if (!iot->in_flight)
  r = time_after(jiffies, iot->idle_time + j);
 spin_unlock_irq(&iot->lock);

 return r;
}

static inline unsigned long dm_iot_idle_time(struct dm_io_tracker *iot)
{
 unsigned long r = 0;

 spin_lock_irq(&iot->lock);
 if (!iot->in_flight)
  r = jiffies - iot->idle_time;
 spin_unlock_irq(&iot->lock);

 return r;
}

static inline void dm_iot_io_begin(struct dm_io_tracker *iot, sector_t len)
{
 spin_lock_irq(&iot->lock);
 iot->in_flight += len;
 spin_unlock_irq(&iot->lock);
}

static inline void dm_iot_io_end(struct dm_io_tracker *iot, sector_t len)
{
 unsigned long flags;

 if (!len)
  return;

 spin_lock_irqsave(&iot->lock, flags);
 iot->in_flight -= len;
 if (!iot->in_flight)
  iot->idle_time = jiffies;
 spin_unlock_irqrestore(&iot->lock, flags);
}

#endif

Messung V0.5
C=95 H=85 G=90

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