大家好,我现在正在读Understanding the Linux Kernel,我在那里找到了:
除了每个进程描述符中包含的字段之外,还需要更多的信息来描述每个CPU正在做什么。为此,调度程序可以依赖类型为aligned_data的NR_CPUS结构的schedule_data数组。
我的问题是,在哪里可以找到NR_CPUS和schedule_data struct的定义(我指的是哪个目录和文件),谢谢
另外,如果有人知道一些站点,可以快速参考Linux内核中不同结构和宏的定义位置,也会很有帮助。
在LINQ中可以按多个组进行分组吗?
例如,我有这个查询(显然是不完整的)
from lxr in LOCATION_XREFs
join l in LOCATIONs on lxr.LOCATION_SKEY equals l.LOCATION_SKEY
join c in COMPANies on l.COMPANY_SKEY equals c.COMPANY_SKEY
join prlx in PeopleRoleLocationXrefs on lxr.LOCATION_XREF_SKEY equals prlx.LOCATION_XREF_SKEY
j
我试图弄清楚mach-omap2是如何实现挂起/唤醒的,特别是在针对TI out 3530/‘m 3730的Linux2.6.37中。
下面是一些相关代码:
static int omap3_pm_suspend(void)
{
struct power_state *pwrst;
int state, ret = 0;
if (wakeup_timer_seconds || wakeup_timer_milliseconds)
omap2_pm_wakeup_on_timer(wakeup_timer_seconds,
我试图通过修改系统调用表来挂接Linux3.x内核上的sys_execve()函数。问题是,sys_execve()应该只在执行不成功时才返回错误代码。使用我正在使用的包装器函数(见下文),当在有效的可执行文件上调用sys_execve()时,它可以很好地执行,并且一切正常。但是,当它在一个不存在的文件或其他导致错误条件的文件上被调用时,调用程序将崩溃,并显示:
segfault at 3b ip 000000000000003b...
使用strace检查挂钩的sys_execve()的返回值显示-1或ENOSYS,而不是正确的错误代码,这让我感到困惑,因为我已经检查了包装器函数的程序集以及
我在linux内核上执行各种任务,最后时不时地阅读源代码。我还没有真正需要更改内核(我擅长所谓的“可加载内核模块”),所以我没有下载内核的源代码,只使用。很多时候,我发现自己找到了一个有许多实现的函数,并开始猜测哪一个是我需要的。
例如,我在496行看到文件是对list_add的调用,点击它会给我两个选项:drivers/gpu/drm/radeon/mkregtable.c, line 84和include/linux/list.h, line 60 -很明显,kvm不会将我的文件发送到"gpu“下的某个地方,但情况并不总是这样。我已经看过这个文件的包含部分--没有多大帮助。
(我