Tag: minix

在C中,除了使用#define val之外,不能更改struct属性

在Minix 3.1.2a中,我有一个结构“ struct proc ”,其中存储了任何进程的PCB,但是在下面的代码p_currenthash新属性“ p_currenthash ”添加到此结构时我遇到了问题。 除了使用#define指令定义的常量外,我无法更改其值; 否则,系统停止响应。 为清楚起见,这里是结构: struct proc { struct stackframe_s p_reg; /* process’ registers saved in stack frame */ #if (CHIP == INTEL) reg_t p_ldt_sel; /* selector in gdt with ldt base and limit */ struct segdesc_s p_ldt[2+NR_REMOTE_SEGS]; /* CS, DS and remote segments */ #endif #if (CHIP == M68000) […]

MINIX内部碎片2

我正在用C编写一些软件,以递归方式列出给定目录中的所有文件,现在我需要计算出内部碎片。 我花了很长时间研究这个,并发现ext2上的内部碎片只发生在最后一个块中。 我知道从理论上的inode数字你应该能够获得第一个和最后一个块地址,但我不知道如何。 我已经研究过stat() , fcntl()和各种方法。 如何从inode编号中获取最后一个块地址? 我还想到,一旦我有了最后一个块的地址,我可以测试一下,看看该块中有多少可用空间,这将给我内部碎片。 我知道有一个get_inode和一个get_block命令,但get_block不知道!

给出pid打印子进程(MINIX)

我正在研究一个项目,作为其中的一部分,我需要在MINIX中实现系统调用/库函数。 作为其中的一部分,我需要能够使用其pid打印给定进程的子进程列表。 我想我已经找到了我需要的部分内容,但是我坚持让它与一个给定的pid一起工作。 struct task_struct *task; struct list_head *list; list_for_each(list, &current->children) { task = list_entry(list, struct task_struct, children); } 这看起来像我需要的东西吗? 我知道为了让我使用pid我需要使用: struct task_struct find_task_by_pid(pid_t pid); 但结合上述内容并不是我以前做过的事情。