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

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

?? mem_user.c

?? h內核
?? C
字號:
/* * arch/um/kernel/mem_user.c * * BRIEF MODULE DESCRIPTION * user side memory routines for supporting IO memory inside user mode linux * * Copyright (C) 2001 RidgeRun, Inc. * Author: RidgeRun, Inc. *         Greg Lonnon glonnon@ridgerun.com or info@ridgerun.com * *  This program is free software; you can redistribute  it and/or modify it *  under  the terms of  the GNU General  Public License as published by the *  Free Software Foundation;  either version 2 of the  License, or (at your *  option) any later version. * *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT, *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *  You should have received a copy of the  GNU General Public License along *  with this program; if not, write  to the Free Software Foundation, Inc., *  675 Mass Ave, Cambridge, MA 02139, USA. */#include <stdio.h>#include <stdlib.h>#include <stddef.h>#include <stdarg.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <fcntl.h>#include <sys/types.h>#include <sys/mman.h>#include "kern_util.h"#include "user.h"#include "user_util.h"#include "mem_user.h"#include "init.h"#include "os.h"#include "tempfile.h"#include "kern_constants.h"#define TEMPNAME_TEMPLATE "vm_file-XXXXXX"static int create_tmp_file(unsigned long len){	int fd, err;	char zero;	fd = make_tempfile(TEMPNAME_TEMPLATE, NULL, 1);	if(fd < 0) {		os_print_error(fd, "make_tempfile");		exit(1);	}	err = os_mode_fd(fd, 0777);	if(err < 0){		os_print_error(err, "os_mode_fd");		exit(1);	}	err = os_seek_file(fd, len);	if(err < 0){		os_print_error(err, "os_seek_file");		exit(1);	}	zero = 0;	err = os_write_file(fd, &zero, 1);	if(err != 1){		os_print_error(err, "os_write_file");		exit(1);	}	return(fd);}void check_tmpexec(void){	void *addr;	int err, fd = create_tmp_file(UM_KERN_PAGE_SIZE);	addr = mmap(NULL, UM_KERN_PAGE_SIZE,		    PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, fd, 0);	printf("Checking PROT_EXEC mmap in /tmp...");	fflush(stdout);	if(addr == MAP_FAILED){		err = errno;		perror("failed");		if(err == EPERM)			printf("/tmp must be not mounted noexec\n");		exit(1);	}	printf("OK\n");	munmap(addr, UM_KERN_PAGE_SIZE);	os_close_file(fd);}static int have_devanon = 0;void check_devanon(void){	int fd;	printk("Checking for /dev/anon on the host...");	fd = open("/dev/anon", O_RDWR);	if(fd < 0){		printk("Not available (open failed with errno %d)\n", errno);		return;	}	printk("OK\n");	have_devanon = 1;}static int create_anon_file(unsigned long len){	void *addr;	int fd;	fd = open("/dev/anon", O_RDWR);	if(fd < 0) {		os_print_error(fd, "opening /dev/anon");		exit(1);	}	addr = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);	if(addr == MAP_FAILED){		perror("mapping physmem file");		exit(1);	}	munmap(addr, len);	return(fd);}int create_mem_file(unsigned long len){	int err, fd;	if(have_devanon)		fd = create_anon_file(len);	else fd = create_tmp_file(len);	err = os_set_exec_close(fd, 1);	if(err < 0)		os_print_error(err, "exec_close");	return(fd);}struct iomem_region *iomem_regions = NULL;int iomem_size = 0;static int __init parse_iomem(char *str, int *add){	struct iomem_region *new;	struct uml_stat buf;	char *file, *driver;	int fd, err, size;	driver = str;	file = strchr(str,',');	if(file == NULL){		printf("parse_iomem : failed to parse iomem\n");		goto out;	}	*file = '\0';	file++;	fd = os_open_file(file, of_rdwr(OPENFLAGS()), 0);	if(fd < 0){		os_print_error(fd, "parse_iomem - Couldn't open io file");		goto out;	}	err = os_stat_fd(fd, &buf);	if(err < 0){		os_print_error(err, "parse_iomem - cannot stat_fd file");		goto out_close;	}	new = malloc(sizeof(*new));	if(new == NULL){		perror("Couldn't allocate iomem_region struct");		goto out_close;	}	size = (buf.ust_size + UM_KERN_PAGE_SIZE) & ~(UM_KERN_PAGE_SIZE - 1);	*new = ((struct iomem_region) { .next		= iomem_regions,					.driver		= driver,					.fd		= fd,					.size		= size,					.phys		= 0,					.virt		= 0 });	iomem_regions = new;	iomem_size += new->size + UM_KERN_PAGE_SIZE;	return(0); out_close:	os_close_file(fd); out:	return(1);}__uml_setup("iomem=", parse_iomem,"iomem=<name>,<file>\n""    Configure <file> as an IO memory region named <name>.\n\n");int protect_memory(unsigned long addr, unsigned long len, int r, int w, int x,		   int must_succeed){	int err;	err = os_protect_memory((void *) addr, len, r, w, x);	if(err < 0){                if(must_succeed)			panic("protect failed, err = %d", -err);		else return(err);	}	return(0);}#if 0/* Debugging facility for dumping stuff out to the host, avoiding the timing * problems that come with printf and breakpoints. * Enable in case of emergency. */int logging = 1;int logging_fd = -1;int logging_line = 0;char logging_buf[512];void log(char *fmt, ...){        va_list ap;        struct timeval tv;        struct openflags flags;        if(logging == 0) return;        if(logging_fd < 0){                flags = of_create(of_trunc(of_rdwr(OPENFLAGS())));                logging_fd = os_open_file("log", flags, 0644);        }        gettimeofday(&tv, NULL);        sprintf(logging_buf, "%d\t %u.%u  ", logging_line++, tv.tv_sec,                tv.tv_usec);        va_start(ap, fmt);        vsprintf(&logging_buf[strlen(logging_buf)], fmt, ap);        va_end(ap);        write(logging_fd, logging_buf, strlen(logging_buf));}#endif/* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only.  This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-file-style: "linux" * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人鲁色资源国产91色综| 国产精品国产自产拍高清av| 成人av先锋影音| 午夜精品爽啪视频| 日本一区二区不卡视频| 欧美日韩情趣电影| 99精品在线观看视频| 久久99这里只有精品| 一区二区三区美女视频| 国产欧美精品一区二区三区四区| 欧美视频一区二区| 欧美精品久久久久久久多人混战 | 国产精品人妖ts系列视频| 欧美乱妇20p| 色欧美日韩亚洲| 粉嫩欧美一区二区三区高清影视| 免费看欧美女人艹b| 亚洲一区二区三区四区在线免费观看 | 92国产精品观看| 国内精品在线播放| 五月天久久比比资源色| 综合欧美亚洲日本| 中文子幕无线码一区tr| www激情久久| 欧美videofree性高清杂交| 欧美猛男gaygay网站| 91亚洲精品久久久蜜桃| 不卡av电影在线播放| 国产麻豆日韩欧美久久| 麻豆91精品91久久久的内涵| 日韩国产一二三区| 亚洲一二三区在线观看| 亚洲欧美国产77777| 国产清纯白嫩初高生在线观看91| 欧美一区二区啪啪| 91精品国产福利在线观看| 欧美日韩国产影片| 在线观看区一区二| 在线视频一区二区免费| 91福利视频在线| 91麻豆成人久久精品二区三区| 成人综合婷婷国产精品久久蜜臀 | 亚洲免费三区一区二区| 国产精品福利一区二区三区| 国产精品毛片无遮挡高清| 国产欧美综合在线观看第十页| 亚洲精品一区二区在线观看| 久久一二三国产| 欧美国产日本视频| 17c精品麻豆一区二区免费| 亚洲少妇30p| 亚洲成人免费视频| 天天综合天天综合色| 日韩精品1区2区3区| 日韩av在线播放中文字幕| 久久精品国产99久久6| 国产精品1区2区3区| 高清国产午夜精品久久久久久| 国产+成+人+亚洲欧洲自线| 成人h精品动漫一区二区三区| eeuss鲁片一区二区三区在线看| 99r国产精品| 亚洲欧洲色图综合| 亚洲丰满少妇videoshd| 日韩国产高清影视| 国产精品18久久久久| 成人av资源下载| 欧美主播一区二区三区| 日韩手机在线导航| 中文字幕av一区二区三区免费看 | 成人污污视频在线观看| 在线视频你懂得一区| 日韩一区二区三区视频在线| 久久九九久久九九| 亚洲欧美日韩国产中文在线| 天天av天天翘天天综合网 | 亚洲永久精品大片| 久久精品国产久精国产爱| 国产91在线看| 7777精品伊人久久久大香线蕉 | 精品理论电影在线| 中文字幕在线播放不卡一区| 日韩精品久久理论片| 成人黄色综合网站| 欧美日韩高清在线播放| 精品日韩99亚洲| 日韩美女视频一区二区| 久久精品72免费观看| av亚洲产国偷v产偷v自拍| 91精品国产综合久久蜜臀| 国产欧美日韩综合| 日韩制服丝袜先锋影音| 丁香激情综合国产| 7777精品久久久大香线蕉| 国产清纯白嫩初高生在线观看91 | 亚洲福利视频一区| 国产91在线看| 欧美精三区欧美精三区| 一区在线观看视频| 青青草97国产精品免费观看| 色吊一区二区三区| 久久午夜羞羞影院免费观看| 亚洲一区在线视频观看| 成人一区二区三区视频| 欧美va亚洲va| 亚洲一区二区欧美| 99久久免费国产| 久久先锋影音av鲁色资源网| 石原莉奈在线亚洲三区| 日本道精品一区二区三区| 久久精品视频在线免费观看| 日韩—二三区免费观看av| 色综合av在线| 国产精品久久久久久久午夜片| 久久国产精品99久久人人澡| 欧美欧美欧美欧美首页| 亚洲午夜精品一区二区三区他趣| 成人免费毛片a| 国产无一区二区| 国产在线一区二区| 欧美一级精品在线| 亚洲成av人片在www色猫咪| 91美女在线看| 国产精品久久二区二区| 粉嫩aⅴ一区二区三区四区五区| 精品国精品国产| 91网站视频在线观看| 国产精品久久综合| 国产91色综合久久免费分享| www一区二区| 国产盗摄视频一区二区三区| 精品少妇一区二区三区| 麻豆专区一区二区三区四区五区| 91麻豆精品91久久久久同性| 亚洲电影一区二区| 91国偷自产一区二区三区观看| 亚洲婷婷综合色高清在线| av动漫一区二区| 亚洲视频 欧洲视频| 91蜜桃视频在线| 亚洲理论在线观看| 91麻豆文化传媒在线观看| 亚洲柠檬福利资源导航| 91免费在线看| 亚洲韩国一区二区三区| 欧美日韩免费一区二区三区视频 | 紧缚奴在线一区二区三区| 久久理论电影网| 国产成人一级电影| 国产精品久久久爽爽爽麻豆色哟哟 | 久久精品这里都是精品| 成人午夜碰碰视频| 亚洲视频在线观看三级| 在线观看网站黄不卡| 亚洲mv大片欧洲mv大片精品| 欧美一区二视频| 国产福利一区二区三区视频在线 | 亚洲欧美日韩在线| 欧美天堂一区二区三区| 视频一区国产视频| 久久亚洲春色中文字幕久久久| 国产99精品国产| 亚洲美女屁股眼交| 欧美精品久久天天躁| 欧美日韩电影在线播放| 人人精品人人爱| 国产蜜臀97一区二区三区| 色噜噜狠狠色综合中国| 秋霞午夜av一区二区三区| 久久亚洲一区二区三区明星换脸 | 亚洲一二三四在线| 欧美一区二区三区日韩| 福利视频网站一区二区三区| 亚洲欧美二区三区| 日韩免费高清av| 91在线观看成人| 麻豆91在线看| 亚洲日本在线视频观看| 日韩欧美一卡二卡| 成人黄页在线观看| 日本不卡视频一二三区| 国产欧美一区二区精品仙草咪| 欧美亚洲愉拍一区二区| 国产自产2019最新不卡| 亚洲理论在线观看| 久久亚洲一区二区三区明星换脸| 日本道色综合久久| 久久66热re国产| 亚洲欧美一区二区三区国产精品 | 91精品国产手机| 从欧美一区二区三区| 亚洲免费观看在线视频| 精品理论电影在线观看| 97国产精品videossex| 婷婷久久综合九色国产成人| 国产精品久久久久永久免费观看| 欧美精品免费视频| 不卡大黄网站免费看| 国产一区二区0| 亚洲国产精品嫩草影院|