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

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

?? mmap.c

?? linux設備驅動(第二版) 附帶源碼 經典linux驅動圖書
?? C
字號:
/*  -*- C -*- * mmap.c -- memory mapping for the sculld 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 "sculld.h"		/* local definitions *//* * open and close: just keep track of how many times the device is * mapped, to avoid releasing it. */void sculld_vma_open(struct vm_area_struct *vma){	struct sculld_dev *dev = vma->vm_private_data;	dev->vmas++;}void sculld_vma_close(struct vm_area_struct *vma){	struct sculld_dev *dev = vma->vm_private_data;	dev->vmas--;}/* * The nopage method: the core of the file. It retrieves the * page required from the sculld 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 *sculld_vma_nopage(struct vm_area_struct *vma,                                unsigned long address, int *type){	unsigned long offset;	struct sculld_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 sculld 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 */	/* 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 sculld_vm_ops = {	.open =     sculld_vma_open,	.close =    sculld_vma_close,	.nopage =   sculld_vma_nopage,};int sculld_mmap(struct file *filp, struct vm_area_struct *vma){	struct inode *inode = filp->f_dentry->d_inode;	/* refuse to map if order is not 0 */	if (sculld_devices[iminor(inode)].order)		return -ENODEV;	/* don't do anything here: "nopage" will set up page table entries */	vma->vm_ops = &sculld_vm_ops;	vma->vm_flags |= VM_RESERVED;	vma->vm_private_data = filp->private_data;	sculld_vma_open(vma);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1024久久| 精品在线一区二区| 亚洲一区二区三区爽爽爽爽爽| 国产精品国产精品国产专区不蜜| 国产精品超碰97尤物18| 最近中文字幕一区二区三区| 一区二区三区影院| 国产精品一品视频| 色欧美日韩亚洲| 久久影院午夜片一区| 亚洲美腿欧美偷拍| 精油按摩中文字幕久久| 色综合一区二区三区| 日韩欧美专区在线| 亚洲色图色小说| 成人毛片视频在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 99久久综合狠狠综合久久| 欧美日韩综合在线| 国产网红主播福利一区二区| 天天色综合成人网| 一本色道亚洲精品aⅴ| 久久久久高清精品| 久久超碰97中文字幕| 91.com视频| 丝袜脚交一区二区| 欧美综合欧美视频| 亚洲精品综合在线| 菠萝蜜视频在线观看一区| 欧美国产禁国产网站cc| 经典三级视频一区| 精品嫩草影院久久| 精品一区二区三区久久久| 日韩欧美在线影院| 麻豆精品视频在线| 26uuu成人网一区二区三区| 久久超级碰视频| 久久综合久久综合亚洲| 国产麻豆成人精品| 国产精品国产三级国产aⅴ原创| 成人激情校园春色| 综合色天天鬼久久鬼色| 一本一道久久a久久精品| 一区二区激情视频| 欧美久久久久免费| 美女在线观看视频一区二区| 精品av久久707| av午夜精品一区二区三区| 一区二区三区四区五区视频在线观看| 91小视频免费观看| 午夜电影久久久| 国产亚洲精品资源在线26u| 色综合久久综合网97色综合| 亚洲午夜久久久久久久久电影院 | 日韩精品资源二区在线| 白白色亚洲国产精品| 亚洲自拍偷拍av| 国产日韩综合av| 欧美人动与zoxxxx乱| 精彩视频一区二区三区| 国产精品无码永久免费888| 在线这里只有精品| 综合久久一区二区三区| 日韩三级视频中文字幕| 91精品福利在线一区二区三区| 欧美精品自拍偷拍| 国产乱人伦精品一区二区在线观看| 国产精品久久久久精k8| 日韩免费视频线观看| 欧美午夜精品久久久久久超碰 | 欧美人伦禁忌dvd放荡欲情| 色综合一区二区| 成人动漫中文字幕| 国产不卡免费视频| 国产精品亚洲成人| 国产成人综合自拍| 国产黄色精品网站| 成人午夜视频在线观看| 国产麻豆视频一区| 国模无码大尺度一区二区三区| 日一区二区三区| 日韩电影在线一区| 日本亚洲欧美天堂免费| 午夜视频一区在线观看| 香蕉av福利精品导航| 天使萌一区二区三区免费观看| 亚洲国产婷婷综合在线精品| 亚洲第一会所有码转帖| 性做久久久久久免费观看欧美| 五月天激情小说综合| 国产在线精品视频| 9色porny自拍视频一区二区| 色噜噜偷拍精品综合在线| 欧美mv日韩mv| 亚洲欧洲综合另类| 麻豆91小视频| 91麻豆视频网站| 欧美zozozo| 夜夜操天天操亚洲| 毛片av一区二区三区| 成人激情小说网站| 欧美日本在线一区| 中文字幕不卡的av| 日本va欧美va欧美va精品| 国产一区二区三区不卡在线观看| 色综合婷婷久久| 国产欧美日韩视频一区二区| 亚洲国产aⅴ成人精品无吗| 国产福利一区二区三区视频| 欧美日韩免费一区二区三区| 欧美国产精品一区二区| 奇米四色…亚洲| 欧美综合视频在线观看| 日韩一区在线播放| 韩国一区二区视频| 91精品综合久久久久久| 亚洲午夜一区二区| 91首页免费视频| 国产精品妹子av| 成人一区在线观看| 3d成人动漫网站| 国产精品久久毛片| 激情久久五月天| 欧美变态tickling挠脚心| 免费在线观看成人| 日韩欧美中文一区| 久久精品久久久精品美女| 91精品国产乱码久久蜜臀| 亚洲成a人片综合在线| 欧洲av一区二区嗯嗯嗯啊| 一区二区三区国产| 欧美一区二区三区在线观看| 日韩成人一区二区三区在线观看| 欧美日韩美少妇 | 香蕉久久夜色精品国产使用方法| 国产成人99久久亚洲综合精品| 久久综合中文字幕| 高清成人免费视频| 亚洲免费伊人电影| 欧美一区二区三区免费观看视频| 精一区二区三区| 国产精品久久久久久久久晋中| 在线视频你懂得一区二区三区| 日本一道高清亚洲日美韩| 日韩欧美一级精品久久| 国产一区二区精品在线观看| 国产精品久久精品日日| 欧美激情中文不卡| 在线视频欧美区| 国产91富婆露脸刺激对白| 亚洲美女在线一区| 国产女主播视频一区二区| 欧美日韩你懂的| 99久久精品免费| 国产一区二区三区久久久| 亚洲免费大片在线观看| 亚洲尤物在线视频观看| 日韩亚洲欧美一区| 91精品国模一区二区三区| 99re在线视频这里只有精品| 麻豆精品久久精品色综合| 亚洲中国最大av网站| 中文乱码免费一区二区| 久久久777精品电影网影网| 日韩欧美亚洲一区二区| 欧美日韩午夜在线视频| 欧美色精品在线视频| 色综合色综合色综合色综合色综合| 欧美写真视频网站| 久久精品欧美一区二区三区不卡 | 美国欧美日韩国产在线播放| 欧美日韩国产乱码电影| 成人av网站在线观看免费| 美女精品自拍一二三四| 一个色妞综合视频在线观看| 精品久久久久久久人人人人传媒| 欧美一卡2卡三卡4卡5免费| 欧美一级高清大全免费观看| 国产成人亚洲综合a∨婷婷图片| 日本最新不卡在线| 中日韩免费视频中文字幕| 99热在这里有精品免费| 国产一区激情在线| 日产欧产美韩系列久久99| 天堂成人免费av电影一区| 亚洲成人动漫一区| 另类欧美日韩国产在线| 亚洲精品少妇30p| 国产女人18水真多18精品一级做| 欧美肥大bbwbbw高潮| 国产.精品.日韩.另类.中文.在线.播放 | 成人一区二区三区| 色综合久久88色综合天天6 | 亚洲国产精品一区二区久久恐怖片 | 美女视频第一区二区三区免费观看网站| 国产精品嫩草99a| 日韩一区二区在线看| 国产欧美一区二区精品秋霞影院| 亚洲免费av高清| 国产成人自拍高清视频在线免费播放|