亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mm.h

?? LINUX1.0源代碼,代碼條理清晰
?? H
字號:
#ifndef _LINUX_MM_H
#define _LINUX_MM_H

#include <linux/page.h>
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/kernel.h>

#define VERIFY_READ 0
#define VERIFY_WRITE 1

int __verify_write(unsigned long addr, unsigned long count);

extern inline int verify_area(int type, const void * addr, unsigned long size)
{
	if (TASK_SIZE <= (unsigned long) addr)
		return -EFAULT;
	if (size > TASK_SIZE - (unsigned long) addr)
		return -EFAULT;
	if (wp_works_ok || type == VERIFY_READ || !size)
		return 0;
	return __verify_write((unsigned long) addr,size);
}

/*
 * Linux kernel virtual memory manager primitives.
 * The idea being to have a "virtual" mm in the same way
 * we have a virtual fs - giving a cleaner interface to the
 * mm details, and allowing different kinds of memory mappings
 * (from shared memory to executable loading to arbitrary
 * mmap() functions).
 */

/*
 * This struct defines a memory VMM memory area. There is one of these
 * per VM-area/task.  A VM area is any part of the process virtual memory
 * space that has a special rule for the page-fault handlers (ie a shared
 * library, the executable area etc).
 */
struct vm_area_struct {
	struct task_struct * vm_task;		/* VM area parameters */
	unsigned long vm_start;
	unsigned long vm_end;
	unsigned short vm_page_prot;
	struct vm_area_struct * vm_next;	/* linked list */
	struct vm_area_struct * vm_share;	/* linked list */
	struct inode * vm_inode;
	unsigned long vm_offset;
	struct vm_operations_struct * vm_ops;
};

/*
 * These are the virtual MM functions - opening of an area, closing it (needed to
 * keep files on disk up-to-date etc), pointer to the functions called when a
 * no-page or a wp-page exception occurs, and the function which decides on sharing
 * of pages between different processes.
 */
struct vm_operations_struct {
	void (*open)(struct vm_area_struct * area);
	void (*close)(struct vm_area_struct * area);
	void (*nopage)(int error_code,
		       struct vm_area_struct * area, unsigned long address);
	void (*wppage)(struct vm_area_struct * area, unsigned long address);
	int (*share)(struct vm_area_struct * from, struct vm_area_struct * to, unsigned long address);
	int (*unmap)(struct vm_area_struct *area, unsigned long, size_t);
};

extern unsigned long __bad_page(void);
extern unsigned long __bad_pagetable(void);
extern unsigned long __zero_page(void);

#define BAD_PAGETABLE __bad_pagetable()
#define BAD_PAGE __bad_page()
#define ZERO_PAGE __zero_page()

extern volatile short free_page_ptr; /* used by malloc and tcp/ip. */

extern int nr_swap_pages;
extern int nr_free_pages;
extern unsigned long free_page_list;
extern int nr_secondary_pages;
extern unsigned long secondary_page_list;

#define MAX_SECONDARY_PAGES 20

/*
 * This is timing-critical - most of the time in getting a new page
 * goes to clearing the page. If you want a page without the clearing
 * overhead, just use __get_free_page() directly..
 */
extern unsigned long __get_free_page(int priority);
extern inline unsigned long get_free_page(int priority)
{
	unsigned long page;

	page = __get_free_page(priority);
	if (page)
		__asm__ __volatile__("rep ; stosl"
			: /* no outputs */ \
			:"a" (0),"c" (1024),"D" (page)
			:"di","cx");
	return page;
}

/* memory.c */

extern void free_page(unsigned long addr);
extern unsigned long put_dirty_page(struct task_struct * tsk,unsigned long page,
	unsigned long address);
extern void free_page_tables(struct task_struct * tsk);
extern void clear_page_tables(struct task_struct * tsk);
extern int copy_page_tables(struct task_struct * to);
extern int clone_page_tables(struct task_struct * to);
extern int unmap_page_range(unsigned long from, unsigned long size);
extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size, int mask);
extern int zeromap_page_range(unsigned long from, unsigned long size, int mask);

extern void do_wp_page(unsigned long error_code, unsigned long address,
	struct task_struct *tsk, unsigned long user_esp);
extern void do_no_page(unsigned long error_code, unsigned long address,
	struct task_struct *tsk, unsigned long user_esp);

extern unsigned long paging_init(unsigned long start_mem, unsigned long end_mem);
extern void mem_init(unsigned long low_start_mem,
		     unsigned long start_mem, unsigned long end_mem);
extern void show_mem(void);
extern void oom(struct task_struct * task);
extern void si_meminfo(struct sysinfo * val);

/* vmalloc.c */

extern void * vmalloc(unsigned long size);
extern void vfree(void * addr);
extern int vread(char *buf, char *addr, int count);

/* swap.c */

extern void swap_free(unsigned long page_nr);
extern unsigned long swap_duplicate(unsigned long page_nr);
extern void swap_in(unsigned long *table_ptr);
extern void si_swapinfo(struct sysinfo * val);
extern void rw_swap_page(int rw, unsigned long nr, char * buf);

/* mmap.c */
extern int do_mmap(struct file * file, unsigned long addr, unsigned long len,
	unsigned long prot, unsigned long flags, unsigned long off);
typedef int (*map_mergep_fnp)(const struct vm_area_struct *,
			      const struct vm_area_struct *, void *);
extern void merge_segments(struct vm_area_struct *, map_mergep_fnp, void *);
extern void insert_vm_struct(struct task_struct *, struct vm_area_struct *);
extern int ignoff_mergep(const struct vm_area_struct *,
			 const struct vm_area_struct *, void *);
extern int do_munmap(unsigned long, size_t);

#define read_swap_page(nr,buf) \
	rw_swap_page(READ,(nr),(buf))
#define write_swap_page(nr,buf) \
	rw_swap_page(WRITE,(nr),(buf))

#define invalidate() \
__asm__ __volatile__("movl %%cr3,%%eax\n\tmovl %%eax,%%cr3": : :"ax")

extern unsigned long high_memory;

#define MAP_NR(addr) ((addr) >> PAGE_SHIFT)
#define MAP_PAGE_RESERVED (1<<15)

extern unsigned short * mem_map;

#define PAGE_PRESENT	0x001
#define PAGE_RW		0x002
#define PAGE_USER	0x004
#define PAGE_PWT	0x008	/* 486 only - not used currently */
#define PAGE_PCD	0x010	/* 486 only - not used currently */
#define PAGE_ACCESSED	0x020
#define PAGE_DIRTY	0x040
#define PAGE_COW	0x200	/* implemented in software (one of the AVL bits) */

#define PAGE_PRIVATE	(PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED | PAGE_COW)
#define PAGE_SHARED	(PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)
#define PAGE_COPY	(PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED | PAGE_COW)
#define PAGE_READONLY	(PAGE_PRESENT | PAGE_USER | PAGE_ACCESSED)
#define PAGE_TABLE	(PAGE_PRESENT | PAGE_RW | PAGE_USER | PAGE_ACCESSED)

#define GFP_BUFFER	0x00
#define GFP_ATOMIC	0x01
#define GFP_USER	0x02
#define GFP_KERNEL	0x03


/* vm_ops not present page codes */
#define SHM_SWP_TYPE 0x41        
extern void shm_no_page (ulong *);

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一二三| 欧日韩精品视频| 经典一区二区三区| 免费观看91视频大全| 日本不卡高清视频| 秋霞午夜鲁丝一区二区老狼| 秋霞午夜av一区二区三区 | 国产一区二区三区免费观看| 日韩不卡在线观看日韩不卡视频| 婷婷久久综合九色综合伊人色| 亚洲在线免费播放| 天天影视涩香欲综合网| 麻豆一区二区三| 国产一区二区毛片| 99精品视频一区二区| 91一区二区三区在线观看| 欧美曰成人黄网| 欧美一级夜夜爽| 久久九九久久九九| 亚洲免费在线观看视频| 亚洲成人中文在线| 国产精品一区二区你懂的| 99vv1com这只有精品| 欧美在线观看一二区| 欧美高清视频在线高清观看mv色露露十八| 欧美一级艳片视频免费观看| 国产亚洲欧美日韩俺去了| 亚洲丝袜美腿综合| 日本中文在线一区| 粉嫩欧美一区二区三区高清影视| 99r精品视频| 精品噜噜噜噜久久久久久久久试看 | 国产呦萝稀缺另类资源| caoporen国产精品视频| 欧美日韩国产欧美日美国产精品| 欧美精品一区二区高清在线观看| 国产亚洲精品7777| 午夜电影久久久| 风流少妇一区二区| 欧美一级理论片| 亚洲精品视频免费观看| 国产一区二区在线看| 欧美色视频一区| 久久精品男人的天堂| 日韩精品成人一区二区三区| 成人精品视频一区二区三区| 91精品国产综合久久精品麻豆 | 亚洲男女毛片无遮挡| 国产一区二区三区电影在线观看 | 欧美精品丝袜久久久中文字幕| 国产精品人人做人人爽人人添| 五月天精品一区二区三区| 成人动漫av在线| 国产三级精品在线| 久草中文综合在线| 欧美日韩的一区二区| 亚洲精品欧美专区| 成人国产精品免费观看动漫| 久久毛片高清国产| 精品中文字幕一区二区小辣椒| 欧美日韩免费在线视频| 亚洲综合在线电影| 色视频一区二区| 一色桃子久久精品亚洲| 成人国产精品免费观看视频| 国产日韩欧美激情| 国产mv日韩mv欧美| 国产精品色呦呦| 大胆亚洲人体视频| 国产精品久久久久久久午夜片 | 一区二区中文字幕在线| 福利一区在线观看| 国产精品久久久久毛片软件| 不卡一区二区中文字幕| 亚洲色图欧洲色图| 欧美私人免费视频| 亚洲不卡一区二区三区| 欧美精品aⅴ在线视频| 日本成人在线看| 精品久久久久久最新网址| 蜜臀av一级做a爰片久久| 日韩欧美一区二区三区在线| 毛片不卡一区二区| xnxx国产精品| 成人理论电影网| 亚洲老妇xxxxxx| 制服丝袜国产精品| 国产一区二三区好的| 国产精品毛片久久久久久| 99精品在线观看视频| 亚洲成人一区二区| 久久久亚洲午夜电影| 成人app下载| 夜夜夜精品看看| 日韩欧美一区在线| 国产激情偷乱视频一区二区三区| 国产精品午夜免费| 欧美午夜精品一区二区蜜桃| 老色鬼精品视频在线观看播放| 久久新电视剧免费观看| 一本大道av伊人久久综合| 亚洲国产欧美日韩另类综合| 日韩欧美中文字幕一区| 成人激情动漫在线观看| 午夜不卡av在线| 中文字幕免费在线观看视频一区| 色av一区二区| 国产精品一区二区三区乱码| 亚洲人成小说网站色在线| 欧美日韩卡一卡二| 国产精品亚洲一区二区三区妖精 | 欧美日韩在线免费视频| 久久精品国产999大香线蕉| 国产精品视频第一区| 67194成人在线观看| av男人天堂一区| 日韩和欧美一区二区| 国产精品久久久久三级| 日韩免费视频一区| 一本一道久久a久久精品| 国产一区久久久| 日韩中文欧美在线| 亚洲综合色视频| 中文字幕制服丝袜成人av| 欧美一级生活片| 欧美无乱码久久久免费午夜一区| 国产成人午夜精品影院观看视频| 亚洲www啪成人一区二区麻豆| 国产精品嫩草99a| www成人在线观看| 91精品久久久久久久91蜜桃| 欧美在线观看视频一区二区| 成人av午夜影院| 韩日精品视频一区| 日韩av在线发布| 亚洲与欧洲av电影| 亚洲精品ww久久久久久p站| 日本一区二区视频在线观看| 欧美va在线播放| 日韩欧美国产三级电影视频| 欧美日韩激情一区二区三区| 91麻豆蜜桃一区二区三区| 成人短视频下载| 粉嫩av一区二区三区粉嫩| 韩国女主播一区二区三区| 久久超碰97中文字幕| 麻豆专区一区二区三区四区五区| 丝袜亚洲精品中文字幕一区| 亚洲成人免费在线| 午夜欧美一区二区三区在线播放| 亚洲主播在线播放| 亚洲午夜在线视频| 亚洲第一狼人社区| 午夜精品123| 免费人成网站在线观看欧美高清| 天天射综合影视| 蜜乳av一区二区| 久久99精品一区二区三区三区| 免费av网站大全久久| 国产在线不卡一区| 成人免费观看av| 色天使久久综合网天天| 欧美日韩一卡二卡三卡| 91精品国产乱| 久久久一区二区三区捆绑**| 中文字幕欧美国产| 亚洲综合久久久久| 日产欧产美韩系列久久99| 久草热8精品视频在线观看| 国产激情精品久久久第一区二区 | 有码一区二区三区| 亚洲一区二区三区四区五区黄| 婷婷综合五月天| 久久66热偷产精品| 99久久精品免费精品国产| 欧美午夜电影在线播放| 欧美成人猛片aaaaaaa| 中文成人av在线| 水野朝阳av一区二区三区| 国产剧情一区二区| 色噜噜狠狠色综合中国| 欧美一区二区三区白人| 国产日韩欧美高清| 香蕉成人伊视频在线观看| 国产在线不卡一区| 欧美色偷偷大香| 国产人成一区二区三区影院| 一级精品视频在线观看宜春院 | 国产目拍亚洲精品99久久精品| 亚洲欧洲日韩综合一区二区| 五月天欧美精品| 成人精品免费看| 日韩视频免费观看高清完整版| 中文字幕亚洲综合久久菠萝蜜| 亚洲成av人影院| 91老司机福利 在线| 精品乱人伦一区二区三区| 亚洲自拍与偷拍| 成人免费毛片片v| 精品久久国产字幕高潮|