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

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

?? mmap.c

?? Linux設備驅動的經典教材, 該電子書是第三版,并附有全部配套代碼.
?? C
字號:
/*  -*- C -*- * mmap.c -- memory mapping for the scullv char module * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet * Copyright (C) 2001 O'Reilly & Associates * * The source code in this file can be freely used, adapted, * and redistributed in source or binary form, so long as an * acknowledgment appears in derived source files.  The citation * should list that the code comes from the book "Linux Device * Drivers" by Alessandro Rubini and Jonathan Corbet, published * by O'Reilly & Associates.   No warranty is attached; * we cannot take responsibility for errors or fitness for use. * * $Id: _mmap.c.in,v 1.13 2004/10/18 18:07:36 corbet Exp $ */#include <linux/config.h>#include <linux/module.h>#include <linux/mm.h>		/* everything */#include <linux/errno.h>	/* error codes */#include <asm/pgtable.h>#include "scullv.h"		/* local definitions *//* * open and close: just keep track of how many times the device is * mapped, to avoid releasing it. */void scullv_vma_open(struct vm_area_struct *vma){	struct scullv_dev *dev = vma->vm_private_data;	dev->vmas++;}void scullv_vma_close(struct vm_area_struct *vma){	struct scullv_dev *dev = vma->vm_private_data;	dev->vmas--;}/* * The nopage method: the core of the file. It retrieves the * page required from the scullv device and returns it to the * user. The count for the page must be incremented, because * it is automatically decremented at page unmap. * * For this reason, "order" must be zero. Otherwise, only the first * page has its count incremented, and the allocating module must * release it as a whole block. Therefore, it isn't possible to map * pages from a multipage block: when they are unmapped, their count * is individually decreased, and would drop to 0. */struct page *scullv_vma_nopage(struct vm_area_struct *vma,                                unsigned long address, int *type){	unsigned long offset;	struct scullv_dev *ptr, *dev = vma->vm_private_data;	struct page *page = NOPAGE_SIGBUS;	void *pageptr = NULL; /* default to "missing" */	down(&dev->sem);	offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT);	if (offset >= dev->size) goto out; /* out of range */	/*	 * Now retrieve the scullv device from the list,then the page.	 * If the device has holes, the process receives a SIGBUS when	 * accessing the hole.	 */	offset >>= PAGE_SHIFT; /* offset is a number of pages */	for (ptr = dev; ptr && offset >= dev->qset;) {		ptr = ptr->next;		offset -= dev->qset;	}	if (ptr && ptr->data) pageptr = ptr->data[offset];	if (!pageptr) goto out; /* hole or end-of-file */	/*	 * After scullv lookup, "page" is now the address of the page	 * needed by the current process. Since it's a vmalloc address,	 * turn it into a struct page.	 */	page = vmalloc_to_page(pageptr);	/* got it, now increment the count */	get_page(page);	if (type)		*type = VM_FAULT_MINOR;  out:	up(&dev->sem);	return page;}struct vm_operations_struct scullv_vm_ops = {	.open =     scullv_vma_open,	.close =    scullv_vma_close,	.nopage =   scullv_vma_nopage,};int scullv_mmap(struct file *filp, struct vm_area_struct *vma){	/* don't do anything here: "nopage" will set up page table entries */	vma->vm_ops = &scullv_vm_ops;	vma->vm_flags |= VM_RESERVED;	vma->vm_private_data = filp->private_data;	scullv_vma_open(vma);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区日产乱码| 中文字幕一区二区三区在线不卡| 粉嫩一区二区三区在线看| 国产亚洲一本大道中文在线| 99视频有精品| 国产一区中文字幕| 亚洲一区二区三区小说| 欧美日韩亚洲综合在线| 日韩中文字幕区一区有砖一区 | 久久影院视频免费| 风流少妇一区二区| 日韩精品亚洲一区| 亚洲乱码一区二区三区在线观看| 午夜日韩在线观看| 国产精品午夜在线观看| 日韩欧美123| 91在线一区二区| 国产福利一区二区三区视频在线| 日本韩国精品在线| 成人性生交大片免费看中文 | 日本欧美一区二区| 国产精品久久久久影院亚瑟| 国产亚洲自拍一区| 国产欧美日韩麻豆91| 久久久久久毛片| 国产精品视频观看| 中文字幕欧美一| 亚洲男人的天堂av| 麻豆精品蜜桃视频网站| 精品亚洲成a人| 国产激情视频一区二区在线观看 | 国产日韩欧美电影| 日韩欧美国产午夜精品| 久久久久国产免费免费| 国产精品久久三区| 午夜激情一区二区三区| 免费看欧美美女黄的网站| 免费观看一级特黄欧美大片| 日本成人在线一区| www.日韩精品| 7777精品伊人久久久大香线蕉完整版 | 亚洲综合图片区| 天堂va蜜桃一区二区三区| 国产精品一品二品| 成人av午夜影院| 91精品国产综合久久久久久久| 强制捆绑调教一区二区| 成人精品免费视频| 欧美一区二区免费视频| 中文字幕不卡的av| 日本不卡高清视频| 91老司机福利 在线| 欧美日韩高清一区二区| 一级精品视频在线观看宜春院 | 在线亚洲+欧美+日本专区| 91精品欧美一区二区三区综合在| 精品无人码麻豆乱码1区2区| 国产精品一二三四区| 日韩欧美www| 日韩av不卡一区二区| 欧美日韩国产精品成人| 国产精品理伦片| 精品一区二区av| 色悠久久久久综合欧美99| 精品99一区二区| 奇米精品一区二区三区在线观看一| 国产午夜精品一区二区| 蜜臀av亚洲一区中文字幕| 制服丝袜av成人在线看| 亚洲国产一区二区视频| 欧美性色黄大片| 亚洲综合视频网| 欧美精品国产精品| 久久99久久久欧美国产| 欧美xxxxx裸体时装秀| 国产精品一品二品| 国产精品久久久久四虎| 成人三级伦理片| 18成人在线观看| 91精品国产综合久久久久久久| 欧美优质美女网站| 欧美a级理论片| 国产日韩高清在线| 在线这里只有精品| 韩国v欧美v亚洲v日本v| 国产精品久久毛片a| 欧美日韩精品欧美日韩精品一| 色综合久久中文字幕| 亚洲高清久久久| 久久久精品日韩欧美| 一本久久综合亚洲鲁鲁五月天 | 欧美大片在线观看一区二区| 日韩欧美一二三区| 99久久久国产精品| 国产精品123| 国产精品欧美久久久久一区二区 | 久久婷婷国产综合精品青草| 精品一区二区三区av| 石原莉奈在线亚洲二区| 日韩一区国产二区欧美三区| 国产日产欧美精品一区二区三区| 国产精品青草久久| 欧美一二区视频| 欧美性大战久久久久久久蜜臀 | 欧美日韩第一区日日骚| 国产真实乱子伦精品视频| 一区二区久久久| 亚洲成在线观看| 亚洲国产精品影院| 肉色丝袜一区二区| 日韩高清一级片| 久久国产麻豆精品| 久久99精品久久久久久国产越南 | 精品国产乱码久久久久久牛牛| 日韩理论片一区二区| 欧美国产综合色视频| 国产亚洲欧美中文| 中文字幕一区免费在线观看| 国产精品黄色在线观看| 综合激情网...| 亚洲精品精品亚洲| 日韩电影在线一区二区三区| 蜜臀久久久99精品久久久久久| 国产成人午夜高潮毛片| 色婷婷av一区二区三区之一色屋| 久久网这里都是精品| 欧美综合在线视频| 欧美一区二区三区系列电影| 精品久久人人做人人爰| 亚洲欧美在线观看| 日本不卡1234视频| 国产99久久久国产精品潘金| 欧日韩精品视频| 国产精品少妇自拍| 精品一区二区三区日韩| 91免费国产在线观看| 国产色91在线| 美女视频一区在线观看| 在线观看国产日韩| 久久免费电影网| 免费在线看一区| 在线免费一区三区| 亚洲天堂2016| 成人深夜视频在线观看| 久久丝袜美腿综合| 久久99国内精品| 51久久夜色精品国产麻豆| 一区二区三区免费观看| 高清久久久久久| 国产夜色精品一区二区av| 国产一区二区调教| 26uuu精品一区二区| 麻豆91在线播放免费| 欧美性欧美巨大黑白大战| 亚洲精品国产第一综合99久久 | 国产精品久久久久精k8| 视频在线在亚洲| 欧美精品一区男女天堂| 午夜精品视频一区| 激情深爱一区二区| 国产激情偷乱视频一区二区三区 | 精品免费99久久| 免费精品99久久国产综合精品| 精品国产1区二区| 欧美亚洲图片小说| 亚洲精品一二三| 欧美日韩一卡二卡三卡 | 99久久国产综合精品女不卡| 国产欧美视频一区二区| 91成人免费电影| 国产一区二区三区黄视频| 国产日韩亚洲欧美综合| 欧美性大战久久久久久久蜜臀 | 精品黑人一区二区三区久久 | 亚洲国产高清在线观看视频| 国产凹凸在线观看一区二区| 一区二区国产视频| |精品福利一区二区三区| 国产一区二三区| 青青草原综合久久大伊人精品优势| 视频一区二区三区中文字幕| 91理论电影在线观看| 亚洲午夜电影在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美日韩在线三区| 天天综合色天天综合色h| 8x8x8国产精品| 成人不卡免费av| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美伦理影视网| 免费av成人在线| 久久精品一区二区三区四区| 色综合久久久久综合99| 亚洲视频在线一区| 色狠狠一区二区| 国产精品91xxx| 麻豆一区二区99久久久久| 亚洲精品欧美在线| 亚洲女人的天堂| 久久精品亚洲精品国产欧美kt∨|