【问题标题】:how to printk the return value of void * ioremap_nocache()?如何打印 void * ioremap_nocache() 的返回值?
【发布时间】:2013-07-16 10:26:08
【问题描述】:

如何用 printk 打印函数 ioremap_nocache 返回的地址值?

void * ioremap_nocache (unsigned long phys_addr, unsigned long size);  

http://mirror.linux.org.au/linux-mandocs/2.6.4-cset-20040312_2111/ioremap_nocache.html

我需要知道存储的虚拟地址的值来调试函数的打开、读取和写入。

【问题讨论】:

    标签: c linux linux-kernel kernel linux-device-driver


    【解决方案1】:

    您可以同时使用%lu%p 来打印指针。他们有不同的表现

    void *pointer = ioremap_nocache(phys_addr, size);
    unsigned long cast = pointer;
    printk("%lu - %p", cast, pointer);    // '15294563 - 0x499602d2'
    

    这项工作也适用于printf()

    【讨论】:

    • 谢谢,我选择用%p比较好用,因为它不会改变变量的定义
    【解决方案2】:

    你可以使用关注

    unsigned long x = ioremap_nocache (addr, size);  
    
    printk(" %lu",x);
    

    【讨论】:

    • 一个unsigned long 需要%lu
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2018-04-22
    • 1970-01-01
    相关资源
    最近更新 更多