我正在尝试阅读pintos的来源。 在init.c文件中调用main()之后,当调用thread_init()时,它会将指针移动到包含main方法的页面的起始位置。然后打电话给:
thread.c文件的init_thread方法中的memset(t,0,sizeof * t)。
我需要知道,这是否清楚包含main()方法代码的内存内容?
需要帮助.....
答案 0 :(得分:-1)
我担心你的编程技能暂时禁止这方面的工作。我强烈建议你重温入门课程,尤其是C语言课程。
我认为你的意思是:
init_thread (initial_thread, "main", PRI_DEFAULT);
所以,让我们来看看init_thread:
init_thread (struct thread *t, const char *name, int priority)
首先,我们很容易看到" main"是线程的名称。与名为main的函数无关。
{
enum intr_level old_level;
ASSERT (t != NULL);
ASSERT (PRI_MIN <= priority && priority <= PRI_MAX);
ASSERT (name != NULL);
memset (t, 0, sizeof *t);
memset在t指向的内存上,这是第一个参数。从调用中可以看到它是initial_thread指向的内存。
t->status = THREAD_BLOCKED;
strlcpy (t->name, name, sizeof t->name);
此处字符串main与strlcpy一起放置。