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

Quelle  cma_trace.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Trace point definitions for the RDMA Connect Manager.
 *
 * Author: Chuck Lever <chuck.lever@oracle.com>
 *
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
 */


#undef TRACE_SYSTEM
#define TRACE_SYSTEM rdma_cma

#if !defined(_TRACE_RDMA_CMA_H) || defined(TRACE_HEADER_MULTI_READ)

#define _TRACE_RDMA_CMA_H

#include <linux/tracepoint.h>
#include <trace/misc/rdma.h>


DECLARE_EVENT_CLASS(cma_fsm_class,
 TP_PROTO(
  const struct rdma_id_private *id_priv
 ),

 TP_ARGS(id_priv),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __field(u32, tos)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  __entry->tos = id_priv->tos;
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos
 )
);

#define DEFINE_CMA_FSM_EVENT(name)      \
  DEFINE_EVENT(cma_fsm_class, cm_##name,    \
    TP_PROTO(     \
     const struct rdma_id_private *id_priv \
    ),      \
    TP_ARGS(id_priv))

DEFINE_CMA_FSM_EVENT(send_rtu);
DEFINE_CMA_FSM_EVENT(send_rej);
DEFINE_CMA_FSM_EVENT(prepare_mra);
DEFINE_CMA_FSM_EVENT(send_sidr_req);
DEFINE_CMA_FSM_EVENT(send_sidr_rep);
DEFINE_CMA_FSM_EVENT(disconnect);
DEFINE_CMA_FSM_EVENT(sent_drep);
DEFINE_CMA_FSM_EVENT(sent_dreq);
DEFINE_CMA_FSM_EVENT(id_destroy);

TRACE_EVENT(cm_id_attach,
 TP_PROTO(
  const struct rdma_id_private *id_priv,
  const struct ib_device *device
 ),

 TP_ARGS(id_priv, device),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
  __string(devname, device->name)
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
  __assign_str(devname);
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc device=%s",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr,
  __get_str(devname)
 )
);

DECLARE_EVENT_CLASS(cma_qp_class,
 TP_PROTO(
  const struct rdma_id_private *id_priv
 ),

 TP_ARGS(id_priv),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __field(u32, tos)
  __field(u32, qp_num)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  __entry->tos = id_priv->tos;
  __entry->qp_num = id_priv->qp_num;
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u qp_num=%u",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
  __entry->qp_num
 )
);

#define DEFINE_CMA_QP_EVENT(name)      \
  DEFINE_EVENT(cma_qp_class, cm_##name,    \
    TP_PROTO(     \
     const struct rdma_id_private *id_priv \
    ),      \
    TP_ARGS(id_priv))

DEFINE_CMA_QP_EVENT(send_req);
DEFINE_CMA_QP_EVENT(send_rep);
DEFINE_CMA_QP_EVENT(qp_destroy);

/*
 * enum ib_wp_type, from include/rdma/ib_verbs.h
 */

#define IB_QP_TYPE_LIST    \
 ib_qp_type(SMI)    \
 ib_qp_type(GSI)    \
 ib_qp_type(RC)    \
 ib_qp_type(UC)    \
 ib_qp_type(UD)    \
 ib_qp_type(RAW_IPV6)   \
 ib_qp_type(RAW_ETHERTYPE)  \
 ib_qp_type(RAW_PACKET)   \
 ib_qp_type(XRC_INI)   \
 ib_qp_type_end(XRC_TGT)

#undef ib_qp_type
#undef ib_qp_type_end

#define ib_qp_type(x)  TRACE_DEFINE_ENUM(IB_QPT_##x);
#define ib_qp_type_end(x) TRACE_DEFINE_ENUM(IB_QPT_##x);

IB_QP_TYPE_LIST

#undef ib_qp_type
#undef ib_qp_type_end

#define ib_qp_type(x)  { IB_QPT_##x, #x },
#define ib_qp_type_end(x) { IB_QPT_##x, #x }

#define rdma_show_qp_type(x) \
  __print_symbolic(x, IB_QP_TYPE_LIST)


TRACE_EVENT(cm_qp_create,
 TP_PROTO(
  const struct rdma_id_private *id_priv,
  const struct ib_pd *pd,
  const struct ib_qp_init_attr *qp_init_attr,
  int rc
 ),

 TP_ARGS(id_priv, pd, qp_init_attr, rc),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __field(u32, pd_id)
  __field(u32, tos)
  __field(u32, qp_num)
  __field(u32, send_wr)
  __field(u32, recv_wr)
  __field(int, rc)
  __field(unsigned long, qp_type)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  __entry->pd_id = pd->res.id;
  __entry->tos = id_priv->tos;
  __entry->send_wr = qp_init_attr->cap.max_send_wr;
  __entry->recv_wr = qp_init_attr->cap.max_recv_wr;
  __entry->rc = rc;
  if (!rc) {
   __entry->qp_num = id_priv->qp_num;
   __entry->qp_type = id_priv->id.qp_type;
  } else {
   __entry->qp_num = 0;
   __entry->qp_type = 0;
  }
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u pd.id=%u qp_type=%s"
  " send_wr=%u recv_wr=%u qp_num=%u rc=%d",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr,
  __entry->tos, __entry->pd_id,
  rdma_show_qp_type(__entry->qp_type), __entry->send_wr,
  __entry->recv_wr, __entry->qp_num, __entry->rc
 )
);

TRACE_EVENT(cm_req_handler,
 TP_PROTO(
  const struct rdma_id_private *id_priv,
  int event
 ),

 TP_ARGS(id_priv, event),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __field(u32, tos)
  __field(unsigned long, event)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  __entry->tos = id_priv->tos;
  __entry->event = event;
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s (%lu)",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
  rdma_show_ib_cm_event(__entry->event), __entry->event
 )
);

TRACE_EVENT(cm_event_handler,
 TP_PROTO(
  const struct rdma_id_private *id_priv,
  const struct rdma_cm_event *event
 ),

 TP_ARGS(id_priv, event),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __field(u32, tos)
  __field(unsigned long, event)
  __field(int, status)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  __entry->tos = id_priv->tos;
  __entry->event = event->event;
  __entry->status = event->status;
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s (%lu/%d)",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
  rdma_show_cm_event(__entry->event), __entry->event,
  __entry->status
 )
);

TRACE_EVENT(cm_event_done,
 TP_PROTO(
  const struct rdma_id_private *id_priv,
  const struct rdma_cm_event *event,
  int result
 ),

 TP_ARGS(id_priv, event, result),

 TP_STRUCT__entry(
  __field(u32, cm_id)
  __field(u32, tos)
  __field(unsigned long, event)
  __field(int, result)
  __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
  __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
 ),

 TP_fast_assign(
  __entry->cm_id = id_priv->res.id;
  __entry->tos = id_priv->tos;
  __entry->event = event->event;
  __entry->result = result;
  memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
         sizeof(struct sockaddr_in6));
  memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
         sizeof(struct sockaddr_in6));
 ),

 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s consumer returns %d",
  __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
  rdma_show_cm_event(__entry->event), __entry->result
 )
);

DECLARE_EVENT_CLASS(cma_client_class,
 TP_PROTO(
  const struct ib_device *device
 ),

 TP_ARGS(device),

 TP_STRUCT__entry(
  __string(name, device->name)
 ),

 TP_fast_assign(
  __assign_str(name);
 ),

 TP_printk("device name=%s",
  __get_str(name)
 )
);

#define DEFINE_CMA_CLIENT_EVENT(name)      \
  DEFINE_EVENT(cma_client_class, cm_##name,   \
    TP_PROTO(     \
     const struct ib_device *device  \
    ),      \
    TP_ARGS(device))

DEFINE_CMA_CLIENT_EVENT(add_one);
DEFINE_CMA_CLIENT_EVENT(remove_one);

#endif /* _TRACE_RDMA_CMA_H */

#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#define TRACE_INCLUDE_FILE cma_trace

#include <trace/define_trace.h>

Messung V0.5
C=96 H=92 G=93

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