#ifndef MAP_STRUCT_H
#define MAP_STRUCT_H
struct segment_struct {
unsigned long start;
unsigned long end;
};
struct map_struct;
struct map_info_struct;
struct map_operations_struct {
void (*do_destroy)(struct map_struct *);
void (*do_clone)(const struct map_struct *, struct map_struct *);
int (*do_is_mergeable)(const struct map_struct *, const struct map_struct *);
void (*do_merge)(struct map_struct *, struct map_struct *);
void (*do_grow_down)(struct map_struct *);
int (*do_fill_page)(const struct map_struct *, unsigned long);
unsigned long (*do_get_clean_page_frame)(const struct map_struct *, unsigned long);
void (*do_set_clean_page_frame)(const struct map_struct *, unsigned long, unsigned long);
void (*do_dirty_page)(const struct map_struct *, unsigned long, unsigned long);
int (*do_get_info)(const struct map_struct *, struct map_info_struct *);
};
struct map_struct {
struct segment_struct segment;
int prot;
int grows_down;
const struct map_operations_struct *operations;
union {
struct {
void *mem_start;
};
struct {
const char *name;
};
struct {
struct file_struct *file;
unsigned long offset;
};
};
struct map_struct *previous;
struct map_struct *next;
};
#endif