diff --git a/qdf/Kbuild b/qdf/Kbuild index ada93aca3e..e55fca08f9 100644 --- a/qdf/Kbuild +++ b/qdf/Kbuild @@ -101,6 +101,10 @@ qdf-objs += \ $(HOST_CMN_CONVG_LOGGING)/src/wlan_logging_sock_svc.o endif +ifeq ($(WLAN_TRACEPOINTS),1) +qdf-objs += linux/src/qdf_tracepoint.o +endif + ifeq ($(WLAN_DEBUGFS),1) qdf-objs += linux/src/qdf_debugfs.o endif diff --git a/qdf/inc/qdf_tracepoint.h b/qdf/inc/qdf_tracepoint.h new file mode 100644 index 0000000000..4cac800074 --- /dev/null +++ b/qdf/inc/qdf_tracepoint.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ +/** + * DOC: qdf_tracepoint.h + * This file defines HLOS agnostic functions providing external interface + * for triggering tracepoints. + */ +#if !defined(_QDF_TRACEPOINT_H) +#define _QDF_TRACEPOINT_H + +#endif /* _QDF_TRACEPOINT_H */ diff --git a/qdf/linux/src/i_qdf_tracepoint.h b/qdf/linux/src/i_qdf_tracepoint.h new file mode 100644 index 0000000000..3ea544a043 --- /dev/null +++ b/qdf/linux/src/i_qdf_tracepoint.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: i_qdf_tracepoint.h + * This file provides internal interface for triggering tracepoints + */ +#if !defined(_I_QDF_TRACEPOINT_H) +#define _I_QDF_TRACEPOINT_H + +#include + +#endif /* _I_QDF_TRACEPOINT_H */ diff --git a/qdf/linux/src/qdf_tracepoint.c b/qdf/linux/src/qdf_tracepoint.c new file mode 100644 index 0000000000..16363a8e8e --- /dev/null +++ b/qdf/linux/src/qdf_tracepoint.c @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#define CREATE_TRACE_POINTS +#include "qdf_tracepoint_defs.h" diff --git a/qdf/linux/src/qdf_tracepoint_defs.h b/qdf/linux/src/qdf_tracepoint_defs.h new file mode 100644 index 0000000000..647e552eef --- /dev/null +++ b/qdf/linux/src/qdf_tracepoint_defs.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: qdf_tracepoint_defs.h + * This file provides OS abstraction for function tracing. + */ + +#if !defined(_QDF_TRACEPOINT_DEFS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _QDF_TRACEPOINT_DEFS_H + +#include + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM wlan + +#ifndef WLAN_TRACEPOINTS +#undef TRACE_EVENT +#define TRACE_EVENT(name, proto, args, tstruct, assign, print) \ + static inline void trace_##name(proto) {} \ + static inline bool trace_##name##_enabled(void) \ + { \ + return false; \ + } + +#undef DECLARE_EVENT_CLASS +#define DECLARE_EVENT_CLASS(name, proto, args, tstruct, assign, print) + +#undef DEFINE_EVENT +#define DEFINE_EVENT(evt_class, name, proto, args) \ + static inline void trace_##name(proto) {} \ + static inline bool trace_##name##_enabled(void) \ + { \ + return false; \ + } +#endif /* WLAN_TRACEPOINTS */ +#endif /* _QDF_TRACEPOINT_DEFS_H */ + +/* Below should be outside the protection */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE qdf_tracepoint_defs +#include