tools/perf/util/units.c
Source file repositories/reference/linux-study-clean/tools/perf/util/units.c
File Facts
- System
- Linux kernel
- Corpus path
tools/perf/util/units.c- Extension
.c- Size
- 1246 bytes
- Lines
- 77
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
units.hinttypes.hlimits.hstdlib.hstring.hlinux/kernel.hlinux/time64.h
Detected Declarations
function parse_tag_valuefunction convert_unit_doublefunction convert_unitfunction unit_number__scnprintf
Annotated Snippet
if (s) {
unsigned long int value;
char *endptr;
value = strtoul(str, &endptr, 10);
if (s != endptr)
break;
if (value > ULONG_MAX / i->mult)
break;
value *= i->mult;
return value;
}
i++;
}
return (unsigned long) -1;
}
double convert_unit_double(double value, char *unit)
{
*unit = ' ';
if (value > 1000.0) {
value /= 1000.0;
*unit = 'K';
}
if (value > 1000.0) {
value /= 1000.0;
*unit = 'M';
}
if (value > 1000.0) {
value /= 1000.0;
*unit = 'G';
}
return value;
}
unsigned long convert_unit(unsigned long value, char *unit)
{
double v = convert_unit_double((double)value, unit);
return (unsigned long)v;
}
int unit_number__scnprintf(char *buf, size_t size, u64 n)
{
char unit[] = "BKMG";
int i = 0;
while (((n / 1024) > 1) && (i < 3)) {
n /= 1024;
i++;
}
return scnprintf(buf, size, "%" PRIu64 "%c", n, unit[i]);
}
Annotation
- Immediate include surface: `units.h`, `inttypes.h`, `limits.h`, `stdlib.h`, `string.h`, `linux/kernel.h`, `linux/time64.h`.
- Detected declarations: `function parse_tag_value`, `function convert_unit_double`, `function convert_unit`, `function unit_number__scnprintf`.
- Atlas domain: Support Tooling And Documentation / tools.
- 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.