Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  ibumad_kern.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB

/*
 * ibumad BPF sample kernel side
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 *
 * Copyright(c) 2018 Ira Weiny, Intel Corporation
 */


#define KBUILD_MODNAME "ibumad_count_pkts_by_class"
#include <uapi/linux/bpf.h>

#include <bpf/bpf_helpers.h>


struct {
 __uint(type, BPF_MAP_TYPE_ARRAY);
 __type(key, u32); /* class; u32 required */
 __type(value, u64); /* count of mads read */
 __uint(max_entries, 256); /* Room for all Classes */
} read_count SEC(".maps");

struct {
 __uint(type, BPF_MAP_TYPE_ARRAY);
 __type(key, u32); /* class; u32 required */
 __type(value, u64); /* count of mads written */
 __uint(max_entries, 256); /* Room for all Classes */
} write_count SEC(".maps");

#undef DEBUG
#ifndef DEBUG
#undef bpf_printk
#define bpf_printk(fmt, ...)
#endif

/* Taken from the current format defined in
 * include/trace/events/ib_umad.h
 * and
 * /sys/kernel/tracing/events/ib_umad/ib_umad_read/format
 * /sys/kernel/tracing/events/ib_umad/ib_umad_write/format
 */

struct ib_umad_rw_args {
 u64 pad;
 u8 port_num;
 u8 sl;
 u8 path_bits;
 u8 grh_present;
 u32 id;
 u32 status;
 u32 timeout_ms;
 u32 retires;
 u32 length;
 u32 qpn;
 u32 qkey;
 u8 gid_index;
 u8 hop_limit;
 u16 lid;
 u16 attr_id;
 u16 pkey_index;
 u8 base_version;
 u8 mgmt_class;
 u8 class_version;
 u8 method;
 u32 flow_label;
 u16 mad_status;
 u16 class_specific;
 u32 attr_mod;
 u64 tid;
 u8 gid[16];
 u32 dev_index;
 u8 traffic_class;
};

SEC("tracepoint/ib_umad/ib_umad_read_recv")
int on_ib_umad_read_recv(struct ib_umad_rw_args *ctx)
{
 u64 zero = 0, *val;
 u8 class = ctx->mgmt_class;

 bpf_printk("ib_umad read recv : class 0x%x\n"class);

 val = bpf_map_lookup_elem(&read_count, &class);
 if (!val) {
  bpf_map_update_elem(&read_count, &class, &zero, BPF_NOEXIST);
  val = bpf_map_lookup_elem(&read_count, &class);
  if (!val)
   return 0;
 }

 (*val) += 1;

 return 0;
}
SEC("tracepoint/ib_umad/ib_umad_read_send")
int on_ib_umad_read_send(struct ib_umad_rw_args *ctx)
{
 u64 zero = 0, *val;
 u8 class = ctx->mgmt_class;

 bpf_printk("ib_umad read send : class 0x%x\n"class);

 val = bpf_map_lookup_elem(&read_count, &class);
 if (!val) {
  bpf_map_update_elem(&read_count, &class, &zero, BPF_NOEXIST);
  val = bpf_map_lookup_elem(&read_count, &class);
  if (!val)
   return 0;
 }

 (*val) += 1;

 return 0;
}
SEC("tracepoint/ib_umad/ib_umad_write")
int on_ib_umad_write(struct ib_umad_rw_args *ctx)
{
 u64 zero = 0, *val;
 u8 class = ctx->mgmt_class;

 bpf_printk("ib_umad write : class 0x%x\n"class);

 val = bpf_map_lookup_elem(&write_count, &class);
 if (!val) {
  bpf_map_update_elem(&write_count, &class, &zero, BPF_NOEXIST);
  val = bpf_map_lookup_elem(&write_count, &class);
  if (!val)
   return 0;
 }

 (*val) += 1;

 return 0;
}

char _license[] SEC("license") = "GPL";

Messung V0.5
C=93 H=90 G=91

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






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge