root/include/trace/events/objagg.h
/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
/* Copyright (c) 2018 Mellanox Technologies. All rights reserved */

#undef TRACE_SYSTEM
#define TRACE_SYSTEM objagg

#if !defined(__TRACE_OBJAGG_H) || defined(TRACE_HEADER_MULTI_READ)
#define __TRACE_OBJAGG_H

#include <linux/tracepoint.h>

struct objagg;
struct objagg_obj;

TRACE_EVENT(objagg_create,
        TP_PROTO(const struct objagg *objagg),

        TP_ARGS(objagg),

        TP_STRUCT__entry(
                __field(const void *, objagg)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
        ),

        TP_printk("objagg %p", __entry->objagg)
);

TRACE_EVENT(objagg_destroy,
        TP_PROTO(const struct objagg *objagg),

        TP_ARGS(objagg),

        TP_STRUCT__entry(
                __field(const void *, objagg)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
        ),

        TP_printk("objagg %p", __entry->objagg)
);

TRACE_EVENT(objagg_obj_create,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj),

        TP_ARGS(objagg, obj),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
        ),

        TP_printk("objagg %p, obj %p", __entry->objagg, __entry->obj)
);

TRACE_EVENT(objagg_obj_destroy,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj),

        TP_ARGS(objagg, obj),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
        ),

        TP_printk("objagg %p, obj %p", __entry->objagg, __entry->obj)
);

TRACE_EVENT(objagg_obj_get,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj,
                 unsigned int refcount),

        TP_ARGS(objagg, obj, refcount),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
                __field(unsigned int, refcount)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
                __entry->refcount = refcount;
        ),

        TP_printk("objagg %p, obj %p, refcount %u",
                  __entry->objagg, __entry->obj, __entry->refcount)
);

TRACE_EVENT(objagg_obj_put,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj,
                 unsigned int refcount),

        TP_ARGS(objagg, obj, refcount),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
                __field(unsigned int, refcount)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
                __entry->refcount = refcount;
        ),

        TP_printk("objagg %p, obj %p, refcount %u",
                  __entry->objagg, __entry->obj, __entry->refcount)
);

TRACE_EVENT(objagg_obj_parent_assign,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj,
                 const struct objagg_obj *parent,
                 unsigned int parent_refcount),

        TP_ARGS(objagg, obj, parent, parent_refcount),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
                __field(const void *, parent)
                __field(unsigned int, parent_refcount)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
                __entry->parent = parent;
                __entry->parent_refcount = parent_refcount;
        ),

        TP_printk("objagg %p, obj %p, parent %p, parent_refcount %u",
                  __entry->objagg, __entry->obj,
                  __entry->parent, __entry->parent_refcount)
);

TRACE_EVENT(objagg_obj_parent_unassign,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj,
                 const struct objagg_obj *parent,
                 unsigned int parent_refcount),

        TP_ARGS(objagg, obj, parent, parent_refcount),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
                __field(const void *, parent)
                __field(unsigned int, parent_refcount)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
                __entry->parent = parent;
                __entry->parent_refcount = parent_refcount;
        ),

        TP_printk("objagg %p, obj %p, parent %p, parent_refcount %u",
                  __entry->objagg, __entry->obj,
                  __entry->parent, __entry->parent_refcount)
);

TRACE_EVENT(objagg_obj_root_create,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj),

        TP_ARGS(objagg, obj),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
        ),

        TP_printk("objagg %p, obj %p",
                  __entry->objagg, __entry->obj)
);

TRACE_EVENT(objagg_obj_root_destroy,
        TP_PROTO(const struct objagg *objagg,
                 const struct objagg_obj *obj),

        TP_ARGS(objagg, obj),

        TP_STRUCT__entry(
                __field(const void *, objagg)
                __field(const void *, obj)
        ),

        TP_fast_assign(
                __entry->objagg = objagg;
                __entry->obj = obj;
        ),

        TP_printk("objagg %p, obj %p",
                  __entry->objagg, __entry->obj)
);

#endif /* __TRACE_OBJAGG_H */

/* This part must be outside protection */
#include <trace/define_trace.h>