blob: 1b27384b98bdfa94321911ffaf0513aeb1f6e686 [file] [log] [blame]
/*
* Copyright (c) 2005
* The Regents of The University of Michigan
* All Rights Reserved
*
* This code is part of the M5 simulator, developed by Nathan Binkert,
* Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions
* from Ron Dreslinski, Dave Greene, Lisa Hsu, Kevin Lim, Ali Saidi,
* and Andrew Schultz.
*
* Permission is granted to use, copy, create derivative works and
* redistribute this software and such derivative works for any
* purpose, so long as the copyright notice above, this grant of
* permission, and the disclaimer below appear in all copies made; and
* so long as the name of The University of Michigan is not used in
* any advertising or publicity pertaining to the use or distribution
* of this software without specific, written prior authorization.
*
* THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE
* UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND
* WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE
* LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT,
* INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM
* ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
* IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGES.
*/
#include <stddef.h>
#include <asm/page.h>
#include <linux/dcache.h>
#include <linux/fs.h>
#include <linux/path.h>
#include <linux/sched.h>
#include <linux/mm_types.h>
/*
* Structure size information
*/
const int thread_info_size = sizeof(struct thread_info);
#ifndef CONFIG_THREAD_INFO_IN_TASK
const int thread_info_task = offsetof(struct thread_info, task);
#endif
const int task_struct_size = sizeof(struct task_struct);
const int task_struct_pid = offsetof(struct task_struct, pid);
const int task_struct_start_time = offsetof(struct task_struct, start_time);
const int task_struct_tgid = offsetof(struct task_struct, tgid);
const int task_struct_comm = offsetof(struct task_struct, comm);
const int task_struct_comm_size = TASK_COMM_LEN;
const int task_struct_mm = offsetof(struct task_struct, mm);
/*
* Virtual Memory structures
*/
const int mm_struct_size = sizeof(struct mm_struct);
// mm_struct ptr
const int mm_struct_mmap = offsetof(struct mm_struct, mmap);
const int vm_area_struct_size = sizeof(struct vm_area_struct);
const int vm_area_struct_vm_start = offsetof(struct vm_area_struct, vm_start);
const int vm_area_struct_vm_end = offsetof(struct vm_area_struct, vm_end);
const int vm_area_struct_vm_flags = offsetof(struct vm_area_struct, vm_flags);
const int vm_area_struct_vm_pgoff = offsetof(struct vm_area_struct, vm_pgoff);
const int vm_page_size = PAGE_SIZE;
// vm_area_struct ptr
const int vm_area_struct_vm_next = offsetof(struct vm_area_struct, vm_next);
// file ptr
const int vm_area_struct_vm_file = offsetof(struct vm_area_struct, vm_file);
/*
* File structures
*/
const int file_struct_size = sizeof(struct file);
// path ptr
const int file_struct_f_path = offsetof(struct file, f_path);
const int path_struct_size = sizeof(struct path);
// dentry ptr
const int path_struct_dentry = offsetof(struct path, dentry);
const int dentry_struct_size = sizeof(struct dentry);
// dentry ptr
const int dentry_struct_d_parent = offsetof(struct dentry, d_parent);
const int dentry_struct_d_name = offsetof(struct dentry, d_name);
const int qstr_struct_size = sizeof(struct qstr);
// char*
const int qstr_struct_name = offsetof(struct qstr, name);
const int qstr_struct_len = offsetof(struct qstr, len);