首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pintos中与线程初始化相关的线程问题

pintos中与线程初始化相关的线程问题
EN

Stack Overflow用户
提问于 2017-05-28 17:24:50
回答 1查看 197关注 0票数 0

我正在试着通读pintos的源代码。在调用init.c文件中的main()之后,当调用thread_init()时,它会将指针移动到包含main方法的页面的开始位置。然后调用以下代码:

thread.c文件的init_thread方法中的memset (t,0,sizeof *t)。

我需要知道,这是否清除了包含main()方法代码的内存内容?

需要帮助……

EN

回答 1

Stack Overflow用户

发布于 2017-05-28 18:52:08

恐怕你的编程技能暂时不适合做这件事。我强烈建议您重新学习入门课程,尤其是C语言的入门课程。

我猜你的意思是:

代码语言:javascript
复制
init_thread (initial_thread, "main", PRI_DEFAULT);

那么,让我们来看看init_thread:

代码语言:javascript
复制
init_thread (struct thread *t, const char *name, int priority)

首先,我们很容易看到"main“是线程的一个名称。与名为main的函数没有关系。

代码语言:javascript
复制
{
  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指向的内存中,t是第一个参数。从调用中,您可以看到它是initial_thread指向的内存。

代码语言:javascript
复制
  t->status = THREAD_BLOCKED;
  strlcpy (t->name, name, sizeof t->name);

在这里,字符串main用strlcpy放在适当的位置。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44225717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档