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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mlock.c

?? 嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開(kāi)發(fā)源碼
?? C
字號(hào):
/* *	linux/mm/mlock.c * *  (C) Copyright 1995 Linus Torvalds */#include <linux/slab.h>#include <linux/shm.h>#include <linux/mman.h>#include <linux/smp_lock.h>#include <linux/pagemap.h>#include <asm/uaccess.h>#include <asm/pgtable.h>static inline int mlock_fixup_all(struct vm_area_struct * vma, int newflags){	spin_lock(&vma->vm_mm->page_table_lock);	vma->vm_flags = newflags;	spin_unlock(&vma->vm_mm->page_table_lock);	return 0;}static inline int mlock_fixup_start(struct vm_area_struct * vma,	unsigned long end, int newflags){	struct vm_area_struct * n;	n = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);	if (!n)		return -EAGAIN;	*n = *vma;	n->vm_end = end;	n->vm_flags = newflags;	n->vm_raend = 0;	if (n->vm_file)		get_file(n->vm_file);	if (n->vm_ops && n->vm_ops->open)		n->vm_ops->open(n);	vma->vm_pgoff += (end - vma->vm_start) >> PAGE_SHIFT;	lock_vma_mappings(vma);	spin_lock(&vma->vm_mm->page_table_lock);	vma->vm_start = end;	__insert_vm_struct(current->mm, n);	spin_unlock(&vma->vm_mm->page_table_lock);	unlock_vma_mappings(vma);	return 0;}static inline int mlock_fixup_end(struct vm_area_struct * vma,	unsigned long start, int newflags){	struct vm_area_struct * n;	n = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);	if (!n)		return -EAGAIN;	*n = *vma;	n->vm_start = start;	n->vm_pgoff += (n->vm_start - vma->vm_start) >> PAGE_SHIFT;	n->vm_flags = newflags;	n->vm_raend = 0;	if (n->vm_file)		get_file(n->vm_file);	if (n->vm_ops && n->vm_ops->open)		n->vm_ops->open(n);	lock_vma_mappings(vma);	spin_lock(&vma->vm_mm->page_table_lock);	vma->vm_end = start;	__insert_vm_struct(current->mm, n);	spin_unlock(&vma->vm_mm->page_table_lock);	unlock_vma_mappings(vma);	return 0;}static inline int mlock_fixup_middle(struct vm_area_struct * vma,	unsigned long start, unsigned long end, int newflags){	struct vm_area_struct * left, * right;	left = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);	if (!left)		return -EAGAIN;	right = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);	if (!right) {		kmem_cache_free(vm_area_cachep, left);		return -EAGAIN;	}	*left = *vma;	*right = *vma;	left->vm_end = start;	right->vm_start = end;	right->vm_pgoff += (right->vm_start - left->vm_start) >> PAGE_SHIFT;	vma->vm_flags = newflags;	left->vm_raend = 0;	right->vm_raend = 0;	if (vma->vm_file)		atomic_add(2, &vma->vm_file->f_count);	if (vma->vm_ops && vma->vm_ops->open) {		vma->vm_ops->open(left);		vma->vm_ops->open(right);	}	vma->vm_raend = 0;	vma->vm_pgoff += (start - vma->vm_start) >> PAGE_SHIFT;	lock_vma_mappings(vma);	spin_lock(&vma->vm_mm->page_table_lock);	vma->vm_start = start;	vma->vm_end = end;	vma->vm_flags = newflags;	__insert_vm_struct(current->mm, left);	__insert_vm_struct(current->mm, right);	spin_unlock(&vma->vm_mm->page_table_lock);	unlock_vma_mappings(vma);	return 0;}static int mlock_fixup(struct vm_area_struct * vma, 	unsigned long start, unsigned long end, unsigned int newflags){	int pages, retval;	if (newflags == vma->vm_flags)		return 0;	if (start == vma->vm_start) {		if (end == vma->vm_end)			retval = mlock_fixup_all(vma, newflags);		else			retval = mlock_fixup_start(vma, end, newflags);	} else {		if (end == vma->vm_end)			retval = mlock_fixup_end(vma, start, newflags);		else			retval = mlock_fixup_middle(vma, start, end, newflags);	}	if (!retval) {		/* keep track of amount of locked VM */		pages = (end - start) >> PAGE_SHIFT;		if (newflags & VM_LOCKED) {			pages = -pages;			make_pages_present(start, end);		}		vma->vm_mm->locked_vm -= pages;	}	return retval;}static int do_mlock(unsigned long start, size_t len, int on){	unsigned long nstart, end, tmp;	struct vm_area_struct * vma, * next;	int error;	if (on && !capable(CAP_IPC_LOCK))		return -EPERM;	len = PAGE_ALIGN(len);	end = start + len;	if (end < start)		return -EINVAL;	if (end == start)		return 0;	vma = find_vma(current->mm, start);	if (!vma || vma->vm_start > start)		return -ENOMEM;	for (nstart = start ; ; ) {		unsigned int newflags;		/* Here we know that  vma->vm_start <= nstart < vma->vm_end. */		newflags = vma->vm_flags | VM_LOCKED;		if (!on)			newflags &= ~VM_LOCKED;		if (vma->vm_end >= end) {			error = mlock_fixup(vma, nstart, end, newflags);			break;		}		tmp = vma->vm_end;		next = vma->vm_next;		error = mlock_fixup(vma, nstart, tmp, newflags);		if (error)			break;		nstart = tmp;		vma = next;		if (!vma || vma->vm_start != nstart) {			error = -ENOMEM;			break;		}	}	return error;}asmlinkage long sys_mlock(unsigned long start, size_t len){	unsigned long locked;	unsigned long lock_limit;	int error = -ENOMEM;	down_write(&current->mm->mmap_sem);	len = PAGE_ALIGN(len + (start & ~PAGE_MASK));	start &= PAGE_MASK;	locked = len >> PAGE_SHIFT;	locked += current->mm->locked_vm;	lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;	lock_limit >>= PAGE_SHIFT;	/* check against resource limits */	if (locked > lock_limit)		goto out;	/* we may lock at most half of physical memory... */	/* (this check is pretty bogus, but doesn't hurt) */	if (locked > num_physpages/2)		goto out;	error = do_mlock(start, len, 1);out:	up_write(&current->mm->mmap_sem);	return error;}asmlinkage long sys_munlock(unsigned long start, size_t len){	int ret;	down_write(&current->mm->mmap_sem);	len = PAGE_ALIGN(len + (start & ~PAGE_MASK));	start &= PAGE_MASK;	ret = do_mlock(start, len, 0);	up_write(&current->mm->mmap_sem);	return ret;}static int do_mlockall(int flags){	int error;	unsigned int def_flags;	struct vm_area_struct * vma;	if (!capable(CAP_IPC_LOCK))		return -EPERM;	def_flags = 0;	if (flags & MCL_FUTURE)		def_flags = VM_LOCKED;	current->mm->def_flags = def_flags;	error = 0;	for (vma = current->mm->mmap; vma ; vma = vma->vm_next) {		unsigned int newflags;		newflags = vma->vm_flags | VM_LOCKED;		if (!(flags & MCL_CURRENT))			newflags &= ~VM_LOCKED;		error = mlock_fixup(vma, vma->vm_start, vma->vm_end, newflags);		if (error)			break;	}	return error;}asmlinkage long sys_mlockall(int flags){	unsigned long lock_limit;	int ret = -EINVAL;	down_write(&current->mm->mmap_sem);	if (!flags || (flags & ~(MCL_CURRENT | MCL_FUTURE)))		goto out;	lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;	lock_limit >>= PAGE_SHIFT;	ret = -ENOMEM;	if (current->mm->total_vm > lock_limit)		goto out;	/* we may lock at most half of physical memory... */	/* (this check is pretty bogus, but doesn't hurt) */	if (current->mm->total_vm > num_physpages/2)		goto out;	ret = do_mlockall(flags);out:	up_write(&current->mm->mmap_sem);	return ret;}asmlinkage long sys_munlockall(void){	int ret;	down_write(&current->mm->mmap_sem);	ret = do_mlockall(0);	up_write(&current->mm->mmap_sem);	return ret;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色porny在线视频| 国产天堂亚洲国产碰碰| 婷婷中文字幕综合| 亚洲一区在线视频| 亚洲一区二区在线免费观看视频 | 国产精品无码永久免费888| 日韩精品一区二| 欧美激情综合五月色丁香小说| 精品国产91乱码一区二区三区 | 亚洲欧美偷拍三级| 一二三区精品视频| 日本va欧美va瓶| 激情都市一区二区| a级高清视频欧美日韩| aaa欧美色吧激情视频| 一本久道中文字幕精品亚洲嫩| 日本电影欧美片| 日韩久久精品一区| 夜夜亚洲天天久久| 久久电影网站中文字幕 | 国产精品美女久久久久aⅴ| 亚洲人吸女人奶水| 激情综合色综合久久| 欧美日韩免费观看一区三区| 在线日韩国产精品| 亚洲精品在线免费播放| 亚洲精选免费视频| 成人永久免费视频| 制服视频三区第一页精品| 国产农村妇女精品| 亚洲欧美二区三区| 国产精品一区二区久激情瑜伽 | 亚洲精品一二三| 99国内精品久久| caoporn国产一区二区| 欧美日韩成人综合在线一区二区| 久久久久久久一区| 精品在线观看免费| 欧美一区二区啪啪| 亚洲国产精品久久艾草纯爱| 99热国产精品| 亚洲精选免费视频| 91小视频免费看| 一区二区三区视频在线看| 成人晚上爱看视频| 亚洲人一二三区| 色综合久久久网| 亚洲国产三级在线| 3d成人动漫网站| 国产精品1区二区.| 亚洲欧洲日韩综合一区二区| 在线一区二区三区四区五区| 26uuu精品一区二区| 99久久免费精品高清特色大片| 日韩毛片视频在线看| 欧美吻胸吃奶大尺度电影| 美女视频黄久久| 国产精品每日更新| 欧美一区2区视频在线观看| 国产一区啦啦啦在线观看| 亚洲日本一区二区| 欧美一区二区三区喷汁尤物| 国产成人免费在线观看不卡| 亚洲欧美激情视频在线观看一区二区三区 | 美女在线一区二区| 自拍偷自拍亚洲精品播放| 日韩美女主播在线视频一区二区三区 | 日本强好片久久久久久aaa| 中文乱码免费一区二区| 欧美日本一区二区| 91亚洲国产成人精品一区二三| 奇米精品一区二区三区在线观看| 中文字幕在线一区免费| 日韩三级中文字幕| 在线精品视频小说1| 粉嫩aⅴ一区二区三区四区| 青青草国产精品亚洲专区无| 亚洲男同性恋视频| 亚洲乱码国产乱码精品精可以看 | 国产一区二区三区香蕉| 午夜av一区二区三区| 国产精品成人免费精品自在线观看| 欧美人与性动xxxx| 在线亚洲欧美专区二区| 日本福利一区二区| 日本高清不卡视频| 欧美日韩免费高清一区色橹橹| 91丨porny丨首页| 色综合久久久久久久| 国产91丝袜在线播放| 成人一区二区视频| 91亚洲精品一区二区乱码| 91一区二区在线观看| 欧美三级在线看| 精品国产精品一区二区夜夜嗨 | 亚洲成av人影院在线观看网| 亚洲另类春色校园小说| 一区二区三区日韩欧美| 亚洲午夜久久久久久久久电影院| 亚洲国产精品嫩草影院| 日韩av中文在线观看| 国产综合久久久久久鬼色| 成人a区在线观看| 欧美日韩视频第一区| 日韩天堂在线观看| 日韩美女啊v在线免费观看| 婷婷激情综合网| 福利电影一区二区| 欧美人妖巨大在线| 亚洲视频网在线直播| 午夜视频一区二区| 97aⅴ精品视频一二三区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美电影免费观看完整版| 亚洲精品视频一区二区| 成人性生交大片免费看视频在线| 成人黄色国产精品网站大全在线免费观看| av成人动漫在线观看| 精品久久99ma| 亚洲成人av资源| 欧美中文字幕一区二区三区| 久久综合资源网| 美女免费视频一区二区| 欧美日韩国产精品自在自线| 亚洲国产成人自拍| 国产乱色国产精品免费视频| 91麻豆精品91久久久久同性| 亚洲一区二区五区| 日本韩国精品在线| 亚洲尤物视频在线| 欧美顶级少妇做爰| 日韩在线一区二区三区| 91精品国产综合久久婷婷香蕉 | 欧美亚一区二区| 亚洲一区二区不卡免费| 欧美日韩免费一区二区三区视频| 亚洲精品国产精品乱码不99| 色94色欧美sute亚洲线路一久 | 欧美视频一区二区三区| 亚洲成人综合视频| 欧美一区二区播放| 久久精品国产在热久久| 久久久亚洲精品一区二区三区 | 国产女同性恋一区二区| 成人av第一页| 日韩在线一区二区| 亚洲一区二三区| 欧美日韩国产高清一区二区三区 | 久久人人97超碰com| 国产成人高清在线| 亚洲r级在线视频| www久久精品| 欧美日韩不卡在线| 成人综合婷婷国产精品久久| 亚洲国产乱码最新视频| 日韩精品最新网址| 在线观看av不卡| 国产乱色国产精品免费视频| 麻豆国产精品777777在线| av一区二区三区四区| 亚洲激情中文1区| 久久久亚洲精华液精华液精华液| 色综合久久九月婷婷色综合| 国产在线日韩欧美| 午夜伦理一区二区| 亚洲精品国产a| 亚洲美女视频在线| 国产精品伦理在线| 精品三级在线观看| 日韩欧美中文字幕一区| 69久久夜色精品国产69蝌蚪网 | 国产午夜亚洲精品不卡| 欧美顶级少妇做爰| 日韩视频免费观看高清完整版 | 日本乱码高清不卡字幕| 成人app软件下载大全免费| 国产精品亚洲а∨天堂免在线| 久久电影国产免费久久电影| 蜜桃精品视频在线| 另类欧美日韩国产在线| 蜜臀久久99精品久久久画质超高清 | 亚洲va韩国va欧美va精品 | 在线一区二区观看| 欧美日韩综合一区| 欧美一级精品在线| 久久亚洲私人国产精品va媚药| 精品国产在天天线2019| 久久亚洲综合色一区二区三区| 国产人成一区二区三区影院| 国产女人18水真多18精品一级做| 亚洲欧美在线高清| 日韩国产精品久久久久久亚洲| 日韩和的一区二区| 国产乱子伦视频一区二区三区| 不卡一区二区在线| 这里是久久伊人| 欧美极品少妇xxxxⅹ高跟鞋| 午夜精品福利久久久| 国产精品性做久久久久久| 91极品美女在线|