接續昨天寫到一半的題目,
昨天還留下了 sys_sysinfo()
沒有完成,
先來大致上分析一下這個 function 應該要做什麼,
首先他會接收到 user program 的一個型別為 struct *sysinfo
的參數
再來 sys_sysinfo()
也需要建立一個 struct sysinfo kinfo
sys_sysinfo()
把 kinfo.freemem
以及 kinfo.nproc
的值給填上
把 kinfo
給複製到傳近來的參數的地方去
uint64
sys_sysinfo(void)
{
// 2. 再來 ```sys_sysinfo()``` 也需要建立一個 ```struct sysinfo kinfo```
struct sysinfo kinfo;
struct proc *p = myproc();
uint64 info;
// 1. 首先他會接收到 user program 的一個型別為 ```struct *sysinfo``` 的參數
if(argaddr(1, &info) < 0)
return -1;
// 3. ```sys_sysinfo()``` 把 ```kinfo.freemem``` 以及 ```kinfo.nproc``` 的值給填上(未完成)
info.freemem = 0; // TODO !!
info.nproc = 0; // TODO !!
// 4. 把 ```kinfo``` 給複製到傳近來的參數的地方去
if(copyout(p->pagetable, info, (char *)&kinfo, sizeof(info)) < 0)
return -1;
return 0;
}
https://www.cnblogs.com/weijunji/p/14338408.html