zoukankan      html  css  js  c++  java
  • __iomem作用

    最近在看网卡驱动时查看ioremap函数发现调用最低层用__iomem修饰了ioremap的第一个参数(unsigned int)ioremap(S3C24XX_PA_CS8900, SZ_1M) + 0x300;

    因为第一个参数是一个定义的地址,逐层调用用关系查看如下:

    #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) 封装了底层的ioremap调用,将cookie传递下去

    void __iomem *__arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)

    {

       return (void __iomem *)phys_addr;

    }

    这里将phys_addr;修饰成了一个iomem类型的指针。

    __iomem介绍如下:

      __iomem是linux2.6.9内核中加入的特性。是用来个表示指针是指向一个I/O的内存空间。主要是为了驱动程序的通用性考虑。由于不同的CPU体系结构对I/O空间的表示可能不同。当使用__iomem时,编译器会忽略对变量的检查(因为用的是void __iomem)。若要对它进行检查,当__iomem的指针和正常的指针混用时,就会发出一些警告。

  • 相关阅读:
    meta标签
    html5新增标签
    jQuery鼠标事件
    Jenkins在Linux环境安装
    3、jQuery的DOM基础
    2、jQuery选择器
    1、jQuery概述
    伪分布模式安装hadoop
    poj 2773欧几里德
    poj 1298(水题)
  • 原文地址:https://www.cnblogs.com/edver/p/7567923.html
Copyright © 2011-2022 走看看