资源简介
KQEMU[QEMU Accelerator]: QEMU加速器KQEMU是一操作系统驱动开源软件,可以帮助QEMU PC仿真器运行更快. QEMU可以在x86体系的主机上仿真PC.KQEMU现可运行在基于x86或x86_64的Linux2.4或Linux 2.6主机上.对FreBSD和Windows NT/2000/2003/XP的支持也在开发中.
代码片段和文件信息
/* $Id: kqemu-freebsd.cv 1.6 2006/04/25 22:16:42 bellard Exp $ */
#include
#include
#include
#include
#include
#include
#include
#include
#if __FreeBSD_version >= 500000
#include
#endif
#include
#include
#if __FreeBSD_version >= 500000
#include
#endif
#include
#include
#include
#include
#if __FreeBSD_version < 500000
#include
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “kqemu-kernel.h“
#ifndef KQEMU_MAJOR
#define KQEMU_MAJOR 250
#endif
MALLOC_DECLARE(M_KQEMU);
MALLOC_DEFINE(M_KQEMU “kqemu“ “kqemu buffers“);
int kqemu_debug;
SYSCTL_INT(_debug OID_AUTO kqemu_debug CTLFLAG_RW &kqemu_debug 0
“kqemu debug flag“);
#define USER_base 0x1000
/* lock the page at virtual address ‘user_addr‘ and return its
physical page index. Return NULL if error */
struct kqemu_user_page *CDECL kqemu_lock_user_page(unsigned long *ppage_index
unsigned long user_addr)
{
struct vmspace *vm = curproc->p_vmspace;
vm_offset_t va = user_addr;
vm_paddr_t pa = 0;
int ret;
pmap_t pmap;
#if __FreeBSD_version >= 500000
ret = vm_map_wire(&vm->vm_map va va+PAGE_SIZE VM_MAP_WIRE_USER);
#else
ret = vm_map_user_pageable(&vm->vm_map va va+PAGE_SIZE FALSE);
#endif
if (ret != KERN_SUCCESS) {
kqemu_log(“kqemu_lock_user_page(%08lx) failed ret=%d\n“ user_addr ret);
return NULL;
}
pmap = vm_map_pmap(&vm->vm_map);
pa = pmap_extract(pmap va);
/* kqemu_log(“kqemu_lock_user_page(%08lx) va=%08x pa=%08x\n“ user_addr va pa); */
*ppage_index = pa >> PAGE_SHIFT;
return (struct kqemu_user_page *)va;
}
void CDECL kqemu_unlock_user_page(struct kqemu_user_page *page)
{
struct vmspace *vm = curproc->p_vmspace;
vm_offset_t va;
int ret;
/* kqemu_log(“kqemu_unlock_user_page(%08lx)\n“ page_index); */
va = (vm_offset_t)page;
#if __FreeBSD_version >= 500000
ret = vm_map_unwire(&vm->vm_map va va+PAGE_SIZE VM_MAP_WIRE_USER);
#else
ret = vm_map_user_pageable(&vm->vm_map va va+PAGE_SIZE TRUE);
#endif
#if 0
if (ret != KERN_SUCCESS) {
kqemu_log(“kqemu_unlock_user_page(%08lx) failed ret=%d\n“ page_index ret);
}
#endif
}
/*
* Allocate a new page. The page must be mapped in the kernel space.
* Return the page_index or -1 if error.
*/
struct kqemu_page *CDECL kqemu_alloc_zeroed_page(unsigned long *ppage_index)
{
pmap_t pmap;
vm_offset_t va;
vm_paddr_t pa;
va = kmem_alloc(kernel_map PAGE_SIZE);
if (va == 0) {
kqemu_log(“kqemu_alloc_zeroed_page: NULL\n“);
return NULL;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1733 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\Changelog
文件 23393 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\common.c
文件 1090 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\genmon.c
文件 2503 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\genoffsets.c
文件 1223 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\i386\kernel_asm.S
文件 393 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\i386\monitor.ld
文件 10372 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\i386\monitor_asm.S
文件 5580 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\i386\nexus_asm.S
目录 0 2008-07-09 10:10 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\i386
文件 7743 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\insn_table.h
文件 160346 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\interp.c
文件 41004 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\kernel.c
文件 37470 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\kqemu_int.h
文件 3617 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\Makefile
文件 4847 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\monitor-utils.c
文件 64510 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\monitor.c
文件 1223 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\x86_64\kernel_asm.S
文件 426 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\x86_64\monitor.ld
文件 8992 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\x86_64\monitor_asm.S
文件 5662 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\x86_64\nexus_asm.S
目录 0 2008-07-09 10:10 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common\x86_64
目录 0 2008-07-09 10:10 kqemu-1.3.0pre11\kqemu-1.3.0pre11\common
文件 7274 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\configure
文件 17976 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\COPYING
文件 287 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\install.sh
文件 8243 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\kqemu-doc.html
文件 6524 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\kqemu-doc.texi
文件 12380 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\kqemu-freebsd.c
文件 1586 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\kqemu-kernel.h
文件 9905 2007-02-07 05:02 kqemu-1.3.0pre11\kqemu-1.3.0pre11\kqemu-linux.c
............此处省略27个文件信息
- 上一篇:完美破解word文档打开密码
- 下一篇:使xp支持syn扫描
评论
共有 条评论