• 大小: 172KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: kqemu  qemu  

资源简介

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个文件信息

评论

共有 条评论