本文整理汇总了C++中pmap_mapdev函数的典型用法代码示例。如果您正苦于以下问题:C++ pmap_mapdev函数的具体用法?C++ pmap_mapdev怎么用?C++ pmap_mapdev使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pmap_mapdev函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: bus_space_map
int
bus_space_map(bus_space_tag_t bst, bus_addr_t addr, bus_size_t size,
int flags __unused, bus_space_handle_t *bshp)
{
*bshp = (__predict_false(bst == IA64_BUS_SPACE_IO))
? addr : (uintptr_t)pmap_mapdev(addr, size);
return (0);
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:9,代码来源:bus_machdep.c
示例2: bus_space_map
/*
* Implementation of bus_space_map(), which effectively is a thin
* wrapper around pmap_mapdev() for memory mapped I/O space. It's
* implemented here and not in <x86/bus.h> to avoid pollution.
*/
int
bus_space_map(bus_space_tag_t tag, bus_addr_t addr, bus_size_t size,
int flags __unused, bus_space_handle_t *bshp)
{
*bshp = (tag == X86_BUS_SPACE_MEM)
? (uintptr_t)pmap_mapdev(addr, size)
: addr;
return (0);
}
开发者ID:2asoft,项目名称:freebsd,代码行数:15,代码来源:bus_machdep.c
示例3: xbox_remap
static void
xbox_remap(void *unused)
{
struct fb_info *info;
if (!arch_i386_is_xbox)
return;
info = &xboxfb_info;
info->fb_vbase = (intptr_t)pmap_mapdev(info->fb_pbase, info->fb_size);
}
开发者ID:dcui,项目名称:FreeBSD-9.3_kernel,代码行数:11,代码来源:xboxfb.c
示例4: s3lfb_map_buffer
static vm_offset_t
s3lfb_map_buffer(u_int paddr, size_t size)
{
vm_offset_t vaddr;
u_int off;
off = paddr - trunc_page(paddr);
vaddr = (vm_offset_t)pmap_mapdev(paddr - off, size + off);
return (vaddr + off);
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:11,代码来源:s3_pci.c
示例5: i80321_mem_bs_map
int
i80321_mem_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
vm_paddr_t pa, endpa;
pa = trunc_page(bpa);
endpa = round_page(bpa + size);
*bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa);
return (0);
}
开发者ID:Alkzndr,项目名称:freebsd,代码行数:13,代码来源:i80321_space.c
示例6: uninorth_attach
static int
uninorth_attach(device_t dev)
{
struct uninorth_softc *sc;
const char *compatible;
phandle_t node;
uint32_t reg[3];
uint64_t regbase;
cell_t acells;
node = ofw_bus_get_node(dev);
sc = device_get_softc(dev);
if (OF_getprop(node, "reg", reg, sizeof(reg)) < 8)
return (ENXIO);
sc->sc_ver = 0;
compatible = ofw_bus_get_compat(dev);
if (strcmp(compatible, "u3-agp") == 0)
sc->sc_ver = 3;
if (strcmp(compatible, "u4-pcie") == 0)
sc->sc_ver = 4;
acells = 1;
OF_getprop(OF_parent(node), "#address-cells", &acells, sizeof(acells));
regbase = reg[0];
if (acells == 2) {
regbase <<= 32;
regbase |= reg[1];
}
sc->sc_addr = (vm_offset_t)pmap_mapdev(regbase + 0x800000, PAGE_SIZE);
sc->sc_data = (vm_offset_t)pmap_mapdev(regbase + 0xc00000, PAGE_SIZE);
return (ofw_pci_attach(dev));
}
开发者ID:Alkzndr,项目名称:freebsd,代码行数:37,代码来源:uninorthpci.c
示例7: pxa_smi_activate_resource
static int
pxa_smi_activate_resource(device_t dev, device_t child, int type, int rid,
struct resource *r)
{
struct pxa_smi_softc *sc;
sc = (struct pxa_smi_softc *)device_get_softc(dev);
if (type == SYS_RES_IRQ)
return (bus_activate_resource(dev, SYS_RES_IRQ, rid, r));
rman_set_bushandle(r, (bus_space_handle_t)pmap_mapdev(rman_get_start(r),
rman_get_size(r)));
return (rman_activate_resource(r));
}
开发者ID:AhmadTux,项目名称:freebsd,代码行数:15,代码来源:pxa_smi.c
示例8: nexus_activate_resource
static int
nexus_activate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
int err;
bus_addr_t paddr;
bus_size_t psize;
bus_space_handle_t vaddr;
if ((err = rman_activate_resource(r)) != 0)
return (err);
/*
* If this is a memory resource, map it into the kernel.
*/
if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) {
paddr = (bus_addr_t)rman_get_start(r);
psize = (bus_size_t)rman_get_size(r);
#ifdef FDT
err = bus_space_map(fdtbus_bs_tag, paddr, psize, 0, &vaddr);
if (err != 0) {
rman_deactivate_resource(r);
return (err);
}
rman_set_bustag(r, fdtbus_bs_tag);
#else
vaddr = (bus_space_handle_t)pmap_mapdev((vm_offset_t)paddr,
(vm_size_t)psize);
if (vaddr == 0) {
rman_deactivate_resource(r);
return (ENOMEM);
}
rman_set_bustag(r, (void *)1);
#endif
rman_set_virtual(r, (void *)vaddr);
rman_set_bushandle(r, vaddr);
return (0);
} else if (type == SYS_RES_IRQ) {
#ifdef INTRNG
err = intr_activate_irq(child, r);
if (err != 0) {
rman_deactivate_resource(r);
return (err);
}
#endif
}
return (0);
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:48,代码来源:nexus.c
示例9: generic_bs_map
int
generic_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
void *va;
/*
* We don't even examine the passed-in flags. For ARM, the CACHEABLE
* flag doesn't make sense (we create PTE_DEVICE mappings), and the
* LINEAR flag is just implied because we use kva_alloc(size).
*/
if ((va = pmap_mapdev(bpa, size)) == NULL)
return (ENOMEM);
*bshp = (bus_space_handle_t)va;
return (0);
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:16,代码来源:bus_space_generic.c
示例10: madt_setup_local
/*
* Initialize the local APIC on the BSP.
*/
static int
madt_setup_local(void)
{
madt = pmap_mapdev(madt_physaddr, madt_length);
lapic_init((uintptr_t)madt->LocalApicAddress);
printf("ACPI APIC Table: <%.*s %.*s>\n",
(int)sizeof(madt->Header.OemId), madt->Header.OemId,
(int)sizeof(madt->Header.OemTableId), madt->Header.OemTableId);
/*
* We ignore 64-bit local APIC override entries. Should we
* perhaps emit a warning here if we find one?
*/
return (0);
}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:19,代码来源:madt.c
示例11: nexus_activate_resource
static int
nexus_activate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
#ifdef PC98
bus_space_handle_t bh;
int error;
#endif
void *vaddr;
/*
* If this is a memory resource, map it into the kernel.
*/
switch (type) {
case SYS_RES_IOPORT:
#ifdef PC98
error = i386_bus_space_handle_alloc(X86_BUS_SPACE_IO,
rman_get_start(r), rman_get_size(r), &bh);
if (error)
return (error);
rman_set_bushandle(r, bh);
#else
rman_set_bushandle(r, rman_get_start(r));
#endif
rman_set_bustag(r, X86_BUS_SPACE_IO);
break;
case SYS_RES_MEMORY:
#ifdef PC98
error = i386_bus_space_handle_alloc(X86_BUS_SPACE_MEM,
rman_get_start(r), rman_get_size(r), &bh);
if (error)
return (error);
#endif
vaddr = pmap_mapdev(rman_get_start(r), rman_get_size(r));
rman_set_virtual(r, vaddr);
rman_set_bustag(r, X86_BUS_SPACE_MEM);
#ifdef PC98
/* PC-98: the type of bus_space_handle_t is the structure. */
bh->bsh_base = (bus_addr_t) vaddr;
rman_set_bushandle(r, bh);
#else
/* IBM-PC: the type of bus_space_handle_t is u_int */
rman_set_bushandle(r, (bus_space_handle_t) vaddr);
#endif
}
return (rman_activate_resource(r));
}
开发者ID:dcui,项目名称:FreeBSD-9.3_kernel,代码行数:47,代码来源:nexus.c
示例12: at91_bs_map
static int
at91_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
vm_paddr_t pa, endpa;
pa = trunc_page(bpa);
if (pa >= 0xfff00000) {
*bshp = pa - 0xf0000000 + 0xd0000000;
return (0);
}
if (pa >= 0xdff00000)
return (0);
endpa = round_page(bpa + size);
*bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa);
return (0);
}
开发者ID:oza,项目名称:FreeBSD-7.3-dyntick,代码行数:19,代码来源:at91.c
示例13: uninorth_activate_resource
static int
uninorth_activate_resource(device_t bus, device_t child, int type, int rid,
struct resource *res)
{
void *p;
if (type == SYS_RES_IRQ)
return (bus_activate_resource(bus, type, rid, res));
if (type == SYS_RES_MEMORY) {
p = pmap_mapdev((vm_offset_t)rman_get_start(res),
(vm_size_t)rman_get_size(res));
if (p == NULL)
return (ENOMEM);
rman_set_virtual(res, p);
rman_set_bushandle(res, (u_long)p);
}
return (rman_activate_resource(res));
}
开发者ID:MarginC,项目名称:kame,代码行数:20,代码来源:uninorth.c
示例14: bs_gen_map
static int
bs_gen_map(bus_addr_t addr, bus_size_t size __unused, int flags __unused,
bus_space_handle_t *bshp)
{
/*
* Record what we did if we haven't enabled the MMU yet. We
* will need to remap it as soon as the MMU comes up.
*/
if (!pmap_bootstrapped) {
KASSERT(earlyboot_map_idx < MAX_EARLYBOOT_MAPPINGS,
("%s: too many early boot mapping requests", __func__));
earlyboot_mappings[earlyboot_map_idx].addr = addr;
earlyboot_mappings[earlyboot_map_idx].size = size;
earlyboot_map_idx++;
*bshp = addr;
} else {
*bshp = (bus_space_handle_t)pmap_mapdev(addr,size);
}
return (0);
}
开发者ID:DangerDexter,项目名称:FreeBSD-8.0-dyntick,代码行数:21,代码来源:bus_machdep.c
示例15: at91_bs_map
static int
at91_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
vm_paddr_t pa, endpa;
pa = trunc_page(bpa);
if (pa >= AT91_PA_BASE + 0xff00000) {
*bshp = bpa - AT91_PA_BASE + AT91_BASE;
return (0);
}
if (pa >= AT91_BASE + 0xff00000) {
*bshp = bpa;
return (0);
}
endpa = round_page(bpa + size);
*bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa) + (bpa - pa);
return (0);
}
开发者ID:jamesbjackson,项目名称:src,代码行数:21,代码来源:at91.c
示例16: nexus_activate_resource
static int
nexus_activate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
/*
* If this is a memory resource, map it into the kernel.
*/
if (type == SYS_RES_MEMORY) {
void *vaddr;
vaddr = pmap_mapdev(rman_get_start(r), rman_get_size(r));
rman_set_virtual(r, vaddr);
rman_set_bustag(r, AMD64_BUS_SPACE_MEM);
rman_set_bushandle(r, (bus_space_handle_t) vaddr);
} else if (type == SYS_RES_IOPORT) {
rman_set_bustag(r, AMD64_BUS_SPACE_IO);
rman_set_bushandle(r, rman_get_start(r));
}
return (rman_activate_resource(r));
}
开发者ID:oza,项目名称:FreeBSD-7.3-dyntick,代码行数:21,代码来源:nexus.c
示例17: pcic_pci_attach
/*
* General PCI based card dispatch routine. Right now
* it only understands the CL-PD6832.
*/
static void
pcic_pci_attach(pcici_t config_id, int unit)
{
u_long pcic_type; /* The vendor id of the PCI pcic */
pcic_type = pci_conf_read(config_id, PCI_ID_REG);
switch (pcic_type) {
case PCI_DEVICE_ID_PCIC_CLPD6832:
pd6832_legacy_init(config_id, unit);
break;
}
if (bootverbose) {
int i, j;
u_char *p;
u_long *pl;
printf("PCI Config space:\n");
for (j = 0; j < 0x98; j += 16) {
printf("%02x: ", j);
for (i = 0; i < 16; i += 4)
printf(" %08lx", pci_conf_read(config_id, i+j));
printf("\n");
}
p = (u_char *)pmap_mapdev(pci_conf_read(config_id, 0x10),
0x1000);
pl = (u_long *)p;
printf("Cardbus Socket registers:\n");
printf("00: ");
for (i = 0; i < 4; i += 1)
printf(" %08lx:", pl[i]);
printf("\n10: ");
for (i = 4; i < 8; i += 1)
printf(" %08lx:", pl[i]);
printf("\nExCa registers:\n");
for (i = 0; i < 0x40; i += 16)
printf("%02x: %16D\n", i, p + 0x800 + i, " ");
}
}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:44,代码来源:pcic_p.c
示例18: nexus_activate_resource
static int
nexus_activate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
/*
* If this is a memory resource, map it into the kernel.
*/
if (rman_get_bustag(r) == (void*)ARM_BUS_SPACE_MEM) {
caddr_t vaddr = 0;
u_int32_t paddr;
u_int32_t psize;
u_int32_t poffs;
paddr = rman_get_start(r);
psize = rman_get_size(r);
poffs = paddr - trunc_page(paddr);
vaddr = (caddr_t) pmap_mapdev(paddr-poffs, psize+poffs) + poffs;
rman_set_virtual(r, vaddr);
rman_set_bushandle(r, (bus_space_handle_t) vaddr);
}
return (rman_activate_resource(r));
}
开发者ID:edgar-pek,项目名称:PerspicuOS,代码行数:22,代码来源:nexus.c
示例19: fsl_ocotp_devmap
static void
fsl_ocotp_devmap(void)
{
phandle_t child, root;
u_long base, size;
if ((root = OF_finddevice("/")) == 0)
goto fatal;
if ((child = fdt_depth_search_compatible(root, "fsl,imx6q-ocotp", 0)) == 0)
goto fatal;
if (fdt_regsize(child, &base, &size) != 0)
goto fatal;
ocotp_size = (vm_size_t)size;
if ((ocotp_regs = pmap_mapdev((vm_offset_t)base, ocotp_size)) == NULL)
goto fatal;
return;
fatal:
panic("cannot find/map the ocotp registers");
}
开发者ID:MattDooner,项目名称:freebsd-west,代码行数:22,代码来源:fsl_ocotp.c
示例20: nexus_activate_resource
static int
nexus_activate_resource(device_t bus __unused, device_t child __unused,
int type, int rid __unused, struct resource *r)
{
if (type == SYS_RES_MEMORY) {
vm_offset_t start;
void *p;
start = (vm_offset_t) rman_get_start(r);
if (bootverbose)
printf("nexus mapdev: start %zx, len %ld\n", start,
rman_get_size(r));
p = pmap_mapdev(start, (vm_size_t) rman_get_size(r));
if (p == NULL)
return (ENOMEM);
rman_set_virtual(r, p);
rman_set_bustag(r, &bs_be_tag);
rman_set_bushandle(r, (u_long)p);
}
return (rman_activate_resource(r));
}
开发者ID:ChaosJohn,项目名称:freebsd,代码行数:23,代码来源:nexus.c
注:本文中的pmap_mapdev函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论