include/trace/events/firewire_ohci.h
Source file repositories/reference/linux-study-clean/include/trace/events/firewire_ohci.h
File Facts
- System
- Linux kernel
- Corpus path
include/trace/events/firewire_ohci.h- Extension
.h- Size
- 3496 bytes
- Lines
- 102
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
Dependency Surface
linux/tracepoint.htrace/define_trace.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2024 Takashi Sakamoto
#undef TRACE_SYSTEM
#define TRACE_SYSTEM firewire_ohci
#if !defined(_FIREWIRE_OHCI_TRACE_EVENT_H) || defined(TRACE_HEADER_MULTI_READ)
#define _FIREWIRE_OHCI_TRACE_EVENT_H
#include <linux/tracepoint.h>
// Some macros and helper functions are defined in 'drivers/firewire/ohci.c'.
TRACE_EVENT(irqs,
TP_PROTO(unsigned int card_index, u32 events),
TP_ARGS(card_index, events),
TP_STRUCT__entry(
__field(u8, card_index)
__field(u32, events)
),
TP_fast_assign(
__entry->card_index = card_index;
__entry->events = events;
),
TP_printk(
"card_index=%u events=%s",
__entry->card_index,
__print_flags(__entry->events, "|",
{ OHCI1394_selfIDComplete, "selfIDComplete" },
{ OHCI1394_RQPkt, "RQPkt" },
{ OHCI1394_RSPkt, "RSPkt" },
{ OHCI1394_reqTxComplete, "reqTxComplete" },
{ OHCI1394_respTxComplete, "respTxComplete" },
{ OHCI1394_isochRx, "isochRx" },
{ OHCI1394_isochTx, "isochTx" },
{ OHCI1394_postedWriteErr, "postedWriteErr" },
{ OHCI1394_cycleTooLong, "cycleTooLong" },
{ OHCI1394_cycle64Seconds, "cycle64Seconds" },
{ OHCI1394_cycleInconsistent, "cycleInconsistent" },
{ OHCI1394_regAccessFail, "regAccessFail" },
{ OHCI1394_unrecoverableError, "unrecoverableError" },
{ OHCI1394_busReset, "busReset" }
)
)
);
#define QUADLET_SIZE 4
#define SELF_ID_COUNT_IS_ERROR(reg) \
(!!(((reg) & OHCI1394_SelfIDCount_selfIDError_MASK) >> OHCI1394_SelfIDCount_selfIDError_SHIFT))
#define SELF_ID_COUNT_GET_GENERATION(reg) \
(((reg) & OHCI1394_SelfIDCount_selfIDGeneration_MASK) >> OHCI1394_SelfIDCount_selfIDGeneration_SHIFT)
#define SELF_ID_RECEIVE_Q0_GET_GENERATION(quadlet) \
(((quadlet) & OHCI1394_SELF_ID_RECEIVE_Q0_GENERATION_MASK) >> OHCI1394_SELF_ID_RECEIVE_Q0_GENERATION_SHIFT)
#define SELF_ID_RECEIVE_Q0_GET_TIMESTAMP(quadlet) \
(((quadlet) & OHCI1394_SELF_ID_RECEIVE_Q0_TIMESTAMP_MASK) >> OHCI1394_SELF_ID_RECEIVE_Q0_TIMESTAMP_SHIFT)
TRACE_EVENT(self_id_complete,
TP_PROTO(unsigned int card_index, u32 reg, const __le32 *self_id_receive, bool has_be_header_quirk),
TP_ARGS(card_index, reg, self_id_receive, has_be_header_quirk),
TP_STRUCT__entry(
__field(u8, card_index)
__field(u32, reg)
__dynamic_array(u32, self_id_receive, ohci1394_self_id_count_get_size(reg))
),
TP_fast_assign(
__entry->card_index = card_index;
__entry->reg = reg;
{
u32 *ptr = __get_dynamic_array(self_id_receive);
int i;
for (i = 0; i < __get_dynamic_array_len(self_id_receive) / QUADLET_SIZE; ++i)
ptr[i] = cond_le32_to_cpu(self_id_receive[i], has_be_header_quirk);
}
),
TP_printk(
"card_index=%u is_error=%s generation_at_bus_reset=%u generation_at_completion=%u timestamp=0x%04x packet_data=%s",
__entry->card_index,
SELF_ID_COUNT_IS_ERROR(__entry->reg) ? "true" : "false",
SELF_ID_COUNT_GET_GENERATION(__entry->reg),
SELF_ID_RECEIVE_Q0_GET_GENERATION(((const u32 *)__get_dynamic_array(self_id_receive))[0]),
SELF_ID_RECEIVE_Q0_GET_TIMESTAMP(((const u32 *)__get_dynamic_array(self_id_receive))[0]),
__print_array(((const u32 *)__get_dynamic_array(self_id_receive)) + 1,
(__get_dynamic_array_len(self_id_receive) / QUADLET_SIZE) - 1, QUADLET_SIZE)
)
);
Annotation
- Immediate include surface: `linux/tracepoint.h`, `trace/define_trace.h`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.