arch/x86/events/probe.c

Source file repositories/reference/linux-study-clean/arch/x86/events/probe.c

File Facts

System
Linux kernel
Corpus path
arch/x86/events/probe.c
Extension
.c
Size
1370 bytes
Lines
66
Domain
Architecture Layer
Bucket
arch/x86
Inferred role
Architecture Layer: exported/initcall integration point
Status
integration implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

if (!msr[bit].no_check) {
			struct attribute_group *grp = msr[bit].grp;
			u64 mask;

			/* skip entry with no group */
			if (!grp)
				continue;

			grp->is_visible = not_visible;

			/* skip unpopulated entry */
			if (!msr[bit].msr)
				continue;

			if (msr[bit].test && !msr[bit].test(bit, data))
				continue;
			/* Virt sucks; you cannot tell if a R/O MSR is present :/ */
			if (rdmsrq_safe(msr[bit].msr, &val))
				continue;

			mask = msr[bit].mask;
			if (!mask)
				mask = ~0ULL;
			/* Disable zero counters if requested. */
			if (!zero && !(val & mask))
				continue;

			grp->is_visible = NULL;
		}
		avail |= BIT(bit);
	}

	return avail;
}
EXPORT_SYMBOL_GPL(perf_msr_probe);

Annotation

Implementation Notes