optinal load_avg to fix
This commit is contained in:
21
user/sysinfo.c
Normal file
21
user/sysinfo.c
Normal file
@@ -0,0 +1,21 @@
|
||||
#include "kernel/param.h"
|
||||
#include "kernel/types.h"
|
||||
#include "kernel/stat.h"
|
||||
#include "user/user.h"
|
||||
|
||||
int main() {
|
||||
struct sysinfo info;
|
||||
|
||||
if (sysinfo(&info) < 0) {
|
||||
printf("sysinfo: failed to retrieve system information\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("System Information:\n");
|
||||
printf(" Free Memory: %d bytes\n", info.freemem);
|
||||
printf(" Number of Processes: %d\n", info.nproc);
|
||||
printf(" Unused Process Slots: %d\n", info.unused_proc_num);
|
||||
printf(" Load Average: %d\n", info.load_avg);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
@@ -6,24 +6,19 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
//存储待跟踪程序的名称和参数
|
||||
char *nargv[MAXARG];
|
||||
|
||||
//保证trace的参数不少于三个,并且跟踪的系统调用号在0-99之间
|
||||
if(argc < 3 || (argv[1][0] < '0' || argv[1][0] > '9')){
|
||||
fprintf(2, "Usage: %s mask command\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
//调用trace系统调用,传入待跟踪系统调用号
|
||||
if (trace(atoi(argv[1])) < 0) {
|
||||
fprintf(2, "%s: trace failed\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
//保存待跟踪程序的名称和参数
|
||||
for(i = 2; i < argc && i < MAXARG; i++){
|
||||
nargv[i-2] = argv[i];
|
||||
}
|
||||
//运行待跟踪的程序
|
||||
exec(nargv[0], nargv);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user