Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/net/mac80211/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 65 kB image not shown  

Quelle  dim.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
/*
 * Copyright (c) 2019, Mellanox Technologies inc.  All rights reserved.
 */


#include <linux/dim.h>

bool dim_on_top(struct dim *dim)
{
 switch (dim->tune_state) {
 case DIM_PARKING_ON_TOP:
 case DIM_PARKING_TIRED:
  return true;
 case DIM_GOING_RIGHT:
  return (dim->steps_left > 1) && (dim->steps_right == 1);
 default/* DIM_GOING_LEFT */
  return (dim->steps_right > 1) && (dim->steps_left == 1);
 }
}
EXPORT_SYMBOL(dim_on_top);

void dim_turn(struct dim *dim)
{
 switch (dim->tune_state) {
 case DIM_PARKING_ON_TOP:
 case DIM_PARKING_TIRED:
  break;
 case DIM_GOING_RIGHT:
  dim->tune_state = DIM_GOING_LEFT;
  dim->steps_left = 0;
  break;
 case DIM_GOING_LEFT:
  dim->tune_state = DIM_GOING_RIGHT;
  dim->steps_right = 0;
  break;
 }
}
EXPORT_SYMBOL(dim_turn);

void dim_park_on_top(struct dim *dim)
{
 dim->steps_right  = 0;
 dim->steps_left   = 0;
 dim->tired        = 0;
 dim->tune_state   = DIM_PARKING_ON_TOP;
}
EXPORT_SYMBOL(dim_park_on_top);

void dim_park_tired(struct dim *dim)
{
 dim->steps_right  = 0;
 dim->steps_left   = 0;
 dim->tune_state   = DIM_PARKING_TIRED;
}
EXPORT_SYMBOL(dim_park_tired);

bool dim_calc_stats(const struct dim_sample *start,
      const struct dim_sample *end,
      struct dim_stats *curr_stats)
{
 /* u32 holds up to 71 minutes, should be enough */
 u32 delta_us = ktime_us_delta(end->time, start->time);
 u32 npkts = BIT_GAP(BITS_PER_TYPE(u32), end->pkt_ctr, start->pkt_ctr);
 u32 nbytes = BIT_GAP(BITS_PER_TYPE(u32), end->byte_ctr,
        start->byte_ctr);
 u32 ncomps = BIT_GAP(BITS_PER_TYPE(u32), end->comp_ctr,
        start->comp_ctr);

 if (!delta_us)
  return false;

 curr_stats->ppms = DIV_ROUND_UP(npkts * USEC_PER_MSEC, delta_us);
 curr_stats->bpms = DIV_ROUND_UP(nbytes * USEC_PER_MSEC, delta_us);
 curr_stats->epms = DIV_ROUND_UP(DIM_NEVENTS * USEC_PER_MSEC,
     delta_us);
 curr_stats->cpms = DIV_ROUND_UP(ncomps * USEC_PER_MSEC, delta_us);
 if (curr_stats->epms != 0)
  curr_stats->cpe_ratio = DIV_ROUND_DOWN_ULL(
   curr_stats->cpms * 100, curr_stats->epms);
 else
  curr_stats->cpe_ratio = 0;

 return true;
}
EXPORT_SYMBOL(dim_calc_stats);

MODULE_DESCRIPTION("Dynamic Interrupt Moderation (DIM) library");
MODULE_LICENSE("Dual BSD/GPL");

Messung V0.5
C=94 H=92 G=92

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