tools/perf/util/data.h
Source file repositories/reference/linux-study-clean/tools/perf/util/data.h
File Facts
- System
- Linux kernel
- Corpus path
tools/perf/util/data.h- Extension
.h- Size
- 4010 bytes
- Lines
- 143
- 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
stdio.hstdbool.hunistd.hlinux/types.h
Detected Declarations
struct perf_data_filestruct perf_dataenum perf_data_modeenum perf_dir_versionfunction perf_data_file__fdfunction perf_data__is_readfunction perf_data__is_writefunction perf_data__is_pipefunction perf_data__is_dirfunction perf_data__is_single_filefunction perf_data__fd
Annotated Snippet
struct perf_data_file {
/**
* @path: Path of file. Generally a copy of perf_data.path but for a
* directory it is the file within the directory.
*/
char *path;
union {
/** @fd: File descriptor for read/writes. Valid if use_stdio is false. */
int fd;
/**
* @fptr: Stdio FILE. Valid if use_stdio is true, currently just
* pipes in perf inject.
*/
FILE *fptr;
};
/** @size: Size of file when opened. */
unsigned long size;
/** @use_stdio: Use buffered stdio operations. */
bool use_stdio;
};
/**
* struct perf_data: A wrapper around a file used for perf.data reading or writing.
*/
struct perf_data {
/** @path: Path to open and of the file. NULL implies 'perf.data' will be used. */
const char *path;
/** @file: Underlying file to be used. */
struct perf_data_file file;
/** @is_pipe: Underlying file is a pipe. */
bool is_pipe;
/** @is_dir: Underlying file is a directory. */
bool is_dir;
/** @force: Ignore opening a file creating created by a different user. */
bool force;
/** @in_place_update: A file opened for reading but will be written to. */
bool in_place_update;
/** @mode: Read or write mode. */
enum perf_data_mode mode;
struct {
/** @version: perf_dir_version. */
u64 version;
/** @files: perf data files for the directory. */
struct perf_data_file *files;
/** @nr: Number of perf data files for the directory. */
int nr;
} dir;
};
static inline int perf_data_file__fd(struct perf_data_file *file)
{
return file->use_stdio ? fileno(file->fptr) : file->fd;
}
ssize_t perf_data_file__write(struct perf_data_file *file,
void *buf, size_t size);
off_t perf_data_file__seek(struct perf_data_file *file, off_t offset, int whence);
static inline bool perf_data__is_read(struct perf_data *data)
{
return data->mode == PERF_DATA_MODE_READ;
}
static inline bool perf_data__is_write(struct perf_data *data)
{
return data->mode == PERF_DATA_MODE_WRITE;
}
static inline int perf_data__is_pipe(struct perf_data *data)
{
return data->is_pipe;
}
static inline bool perf_data__is_dir(struct perf_data *data)
{
return data->is_dir;
}
static inline bool perf_data__is_single_file(struct perf_data *data)
{
return data->dir.version == PERF_DIR_SINGLE_FILE;
}
static inline int perf_data__fd(struct perf_data *data)
{
return perf_data_file__fd(&data->file);
}
Annotation
- Immediate include surface: `stdio.h`, `stdbool.h`, `unistd.h`, `linux/types.h`.
- Detected declarations: `struct perf_data_file`, `struct perf_data`, `enum perf_data_mode`, `enum perf_dir_version`, `function perf_data_file__fd`, `function perf_data__is_read`, `function perf_data__is_write`, `function perf_data__is_pipe`, `function perf_data__is_dir`, `function perf_data__is_single_file`.
- 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.