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  part_stat.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PART_STAT_H
#define _LINUX_PART_STAT_H

#include <linux/blkdev.h>
#include <asm/local.h>

struct disk_stats {
 u64 nsecs[NR_STAT_GROUPS];
 unsigned long sectors[NR_STAT_GROUPS];
 unsigned long ios[NR_STAT_GROUPS];
 unsigned long merges[NR_STAT_GROUPS];
 unsigned long io_ticks;
 local_t in_flight[2];
};

/*
 * Macros to operate on percpu disk statistics:
 *
 * {disk|part|all}_stat_{add|sub|inc|dec}() modify the stat counters and should
 * be called between disk_stat_lock() and disk_stat_unlock().
 *
 * part_stat_read() can be called at any time.
 */

#define part_stat_lock() preempt_disable()
#define part_stat_unlock() preempt_enable()

#define part_stat_get_cpu(part, field, cpu)    \
 (per_cpu_ptr((part)->bd_stats, (cpu))->field)

#define part_stat_get(part, field)     \
 part_stat_get_cpu(part, field, smp_processor_id())

#define part_stat_read(part, field)     \
({         \
 TYPEOF_UNQUAL((part)->bd_stats->field) res = 0;   \
 unsigned int _cpu;      \
 for_each_possible_cpu(_cpu)     \
  res += per_cpu_ptr((part)->bd_stats, _cpu)->field; \
 res;        \
})

static inline void part_stat_set_all(struct block_device *part, int value)
{
 int i;

 for_each_possible_cpu(i)
  memset(per_cpu_ptr(part->bd_stats, i), value,
    sizeof(struct disk_stats));
}

#define part_stat_read_accum(part, field)    \
 (part_stat_read(part, field[STAT_READ]) +   \
  part_stat_read(part, field[STAT_WRITE]) +   \
  part_stat_read(part, field[STAT_DISCARD]))

#define __part_stat_add(part, field, addnd)    \
 __this_cpu_add((part)->bd_stats->field, addnd)

#define part_stat_add(part, field, addnd) do {   \
 __part_stat_add((part), field, addnd);    \
 if (bdev_is_partition(part))     \
  __part_stat_add(bdev_whole(part), field, addnd); \
while (0)

#define part_stat_dec(part, field)     \
 part_stat_add(part, field, -1)
#define part_stat_inc(part, field)     \
 part_stat_add(part, field, 1)
#define part_stat_sub(part, field, subnd)    \
 part_stat_add(part, field, -subnd)

#define part_stat_local_dec(part, field)    \
 local_dec(&(part_stat_get(part, field)))
#define part_stat_local_inc(part, field)    \
 local_inc(&(part_stat_get(part, field)))
#define part_stat_local_read(part, field)    \
 local_read(&(part_stat_get(part, field)))
#define part_stat_local_read_cpu(part, field, cpu)   \
 local_read(&(part_stat_get_cpu(part, field, cpu)))

unsigned int bdev_count_inflight(struct block_device *part);

#endif /* _LINUX_PART_STAT_H */

77%


¤ Dauer der Verarbeitung: 0.12 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 ist noch experimentell.