免费注册 查看新帖 |

Chinaunix

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

【疑问】在suse11中断(INT3)处理函数中获取本进程ID问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-29 11:05 |只看该作者 |倒序浏览
现在遇到一个这样的问题,自己编写的一个内核模块,接管了系统的中断处理

在自己的中断处理函数中,若执行cur_pid = current->tgid,就会死机。但在suse10上是完全ok的。

不知道在suse11上为什么会出现这个问题?

suse11:Linux linux 2.6.27.45-0.1-default #1 SMP Sat Apr 24 22:32:01 CST 2010 x86_64 x86_64 x86_64 GNU/Linux
suse10:Linux 2.6.16.46-0.12-smp #1 SMP Thu May 17 14:00:09 UTC 2007 i686 i686 i386 GNU/Linux

2. 是否在内核里面访问本进程的ID只能通过current->tgid来获取,有没有别的方法?不通过直接current->tgid来获取。

论坛徽章:
0
2 [报告]
发表于 2010-06-29 12:24 |只看该作者
访问本进程的ID不是用getgid()么

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
3 [报告]
发表于 2010-06-29 12:52 |只看该作者
你的中断处理函数对current做了啥操作?
能把代码贴一下吗

论坛徽章:
0
4 [报告]
发表于 2010-06-29 13:45 |只看该作者
你的中断处理函数对current做了啥操作?
能把代码贴一下吗
openspace 发表于 2010-06-29 12:52


对current不进行写操作,只进行读取当前进程ID就行了。

论坛徽章:
0
5 [报告]
发表于 2010-06-29 13:47 |只看该作者
访问本进程的ID不是用getgid()么
aaaaa5aa 发表于 2010-06-29 12:24


这个是用户进程通过系统调用获取时,调用getpid,但在内核里面直接current来获取的。不是通过getpid来获取的。

论坛徽章:
0
6 [报告]
发表于 2010-06-29 13:48 |只看该作者
就是一条简单的赋值语句如:cur_pid = current->tgid;,若把这条语句注销掉,就没有问题,加上就会有问题。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
7 [报告]
发表于 2010-06-29 15:22 |只看该作者
cur_pid = current->pid会不会也死掉?

论坛徽章:
0
8 [报告]
发表于 2010-06-29 16:52 |只看该作者
cur_pid = current->pid会不会也死掉?
openspace 发表于 2010-06-29 15:22



    也会死掉!

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
9 [报告]
发表于 2010-06-29 16:59 |只看该作者
将cur_pid换个名字试试
比如[module_name]_cur_pid

论坛徽章:
0
10 [报告]
发表于 2010-06-29 20:53 |只看该作者
将cur_pid换个名字试试
比如[module_name]_cur_pid
openspace 发表于 2010-06-29 16:59



    这跟变量名没啥关系吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP