xref: /csrg-svn/sys/vm/vm.h (revision 69386)
149179Skarels /*
263379Sbostic  * Copyright (c) 1991, 1993
363379Sbostic  *	The Regents of the University of California.  All rights reserved.
449179Skarels  *
549179Skarels  * %sccs.include.redist.c%
649179Skarels  *
7*69386Smckusick  *	@(#)vm.h	8.5 (Berkeley) 05/11/95
849179Skarels  */
949179Skarels 
1049179Skarels #ifndef VM_H
1149179Skarels #define VM_H
1253333Sbostic 
1353333Sbostic typedef int vm_inherit_t;		/* XXX: inheritance codes */
1453333Sbostic 
1553333Sbostic union vm_map_object;
1653333Sbostic typedef union vm_map_object vm_map_object_t;
1753333Sbostic 
1853333Sbostic struct vm_map_entry;
1953333Sbostic typedef struct vm_map_entry *vm_map_entry_t;
2053333Sbostic 
2153333Sbostic struct vm_map;
2253333Sbostic typedef struct vm_map *vm_map_t;
2353333Sbostic 
2453333Sbostic struct vm_object;
2553333Sbostic typedef struct vm_object *vm_object_t;
2653333Sbostic 
2753333Sbostic struct vm_page;
2853333Sbostic typedef struct vm_page  *vm_page_t;
2953333Sbostic 
3053333Sbostic struct pager_struct;
3153333Sbostic typedef struct pager_struct *vm_pager_t;
3253333Sbostic 
3368794Smckusick /*
34*69386Smckusick  *	MACH VM locking type mappings to kernel types
3568794Smckusick  */
3668924Smckusick typedef struct simplelock	simple_lock_data_t;
3768924Smckusick typedef struct simplelock	*simple_lock_t;
3868794Smckusick typedef struct lock		lock_data_t;
3968794Smckusick typedef struct lock		*lock_t;
4068794Smckusick 
4153333Sbostic #include <sys/vmmeter.h>
4256439Smckusick #include <sys/queue.h>
43*69386Smckusick #include <vm/vm_param.h>
4468794Smckusick #include <sys/lock.h>
4549179Skarels #include <vm/vm_prot.h>
4649179Skarels #include <vm/vm_inherit.h>
4749179Skarels #include <vm/vm_map.h>
4849179Skarels #include <vm/vm_object.h>
4949179Skarels #include <vm/pmap.h>
5053333Sbostic #include <vm/vm_extern.h>
5149179Skarels 
5249179Skarels /*
5349179Skarels  * Shareable process virtual address space.
5449179Skarels  * May eventually be merged with vm_map.
5549179Skarels  * Several fields are temporary (text, data stuff).
5649179Skarels  */
5749179Skarels struct vmspace {
5849179Skarels 	struct	vm_map vm_map;	/* VM address map */
5949179Skarels 	struct	pmap vm_pmap;	/* private physical map */
6049179Skarels 	int	vm_refcnt;	/* number of references */
6149179Skarels 	caddr_t	vm_shm;		/* SYS5 shared memory private data XXX */
6249179Skarels /* we copy from vm_startcopy to the end of the structure on fork */
6349179Skarels #define vm_startcopy vm_rssize
6449179Skarels 	segsz_t vm_rssize; 	/* current resident set size in pages */
6549179Skarels 	segsz_t vm_swrss;	/* resident set size before last swap */
6649179Skarels 	segsz_t vm_tsize;	/* text size (pages) XXX */
6749179Skarels 	segsz_t vm_dsize;	/* data size (pages) XXX */
6849179Skarels 	segsz_t vm_ssize;	/* stack size (pages) */
6949179Skarels 	caddr_t	vm_taddr;	/* user virtual address of text XXX */
7049179Skarels 	caddr_t	vm_daddr;	/* user virtual address of data XXX */
7149179Skarels 	caddr_t vm_maxsaddr;	/* user VA at max stack growth */
7249179Skarels };
7349179Skarels #endif /* VM_H */
74