免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3670 | 回复: 6
打印 上一主题 下一主题

[Linux] Ubuntu应用程序调用内核头文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-07 18:33 |只看该作者 |倒序浏览
小弟写了个测试的应用程序希望看看物理内存是如何分配的,
所以需要在应用程序中将虚拟地址转化为物理地址,所以用到了一些内核中的方法,以下代码是参考网上例子:
  1. unsigned long vtop(unsigned long addr){
  2.         unsigned long real_addr = 0x00;//要输出的地址
  3.         struct task_struct *cur_task;
  4.         cur_task = get_current();//获取当前进程控制块
  5.         if(cur_task==NULL){
  6.                 goto out;
  7.         }
  8.         struct mm_struct *mm = cur_task->mm;//进程虚拟空间
  9.         pgd_t *pgd;//描述页全局目录项
  10.         pmd_t *pmd;//描述页中间项
  11.         pte_t *pte;//页表项
  12.        
  13.         pgd = pgd_offset(mm, addr);//找出所在目录
  14.         if (pgd_none(*pgd)){
  15.         goto out;
  16.         }
  17.         pmd = pmd_offset(pgd, addr);//找出所在中间项

  18.         if (pmd_none(*pmd)){
  19.                 goto out;
  20.         }
  21.         pte = pte_offset(pmd, addr);//找出所在页面


  22.         if (pte_none(*pte)) {
  23.                 goto out;
  24.         }

  25.         //假设每页4KB
  26.         real_addr = addr & 0x00003fff; //取出页面偏移量
  27.         real_addr += pte;//内核空间访问的地址
  28.         real_addr -= PAGE_OFFSET;//真正物理地址()
  29.         return real_addr;

  30. out:
  31.         printk("没有内存映射",real_addr);
  32. }
复制代码
但是结构task_struct和pgd_t、pmd_t、pte_t都是未定义的,这几个结构是定义在include/linux/sched.h和include/asm/page.h两个文件里,
而usr/include/linux下的头文件其实和内核的头文件有所不同。请问在应用中应该如何调用这些内核结构?

论坛徽章:
0
2 [报告]
发表于 2015-01-23 15:25 |只看该作者
顶起同问

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
3 [报告]
发表于 2015-01-23 15:30 |只看该作者
我也有相同的困惑

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
4 [报告]
发表于 2015-01-23 16:50 |只看该作者
应用中应该是取不到的

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
5 [报告]
发表于 2015-01-23 17:03 |只看该作者
如果手动去查找呢 比如编译时 指定 -I 这样的选项呢?回复 4# super皮波


   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
6 [报告]
发表于 2015-01-23 17:31 |只看该作者
回复 5# zsszss0000

这些数据都是存放在内核空间的,你用户空间肯定是没法访问的,用户空间访问内核只能是系统调用
   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
7 [报告]
发表于 2015-01-23 17:33 |只看该作者
想研究内核 去内核版块的精华贴  里面有如何调试内核的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP