/*
 * Utility functions to read our own memory map
 *
 * Copyright (c) 2020 Linaro Ltd
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

#ifndef SELFMAP_H
#define SELFMAP_H

#include "qemu/interval-tree.h"

typedef struct {
    IntervalTreeNode itree;

    /* flags */
    bool is_read;
    bool is_write;
    bool is_exec;
    bool is_priv;

    dev_t dev;
    ino_t inode;
    uint64_t offset;
    const char *path;
} MapInfo;

/**
 * read_self_maps:
 *
 * Read /proc/self/maps and return a tree of MapInfo structures.
 */
IntervalTreeRoot *read_self_maps(void);

/**
 * free_self_maps:
 * @info: an interval tree
 *
 * Free a tree of MapInfo structures.
 */
void free_self_maps(IntervalTreeRoot *root);

#endif /* SELFMAP_H */
