我尝试在brk系统调用函数中添加它:
void *addr = sbrk(0);
printk("current-add-is-%p-\n", addr);
但它在内核编译期间返回错误,即隐式声明sbrk函数。而且我找不到sbrk的定义! 我需要测量的是,只要某个用户进程尝试扩展其程序中断地址,我就会知道它当前的程序中断地址,以便我可以测量请求的内存进程数。
谢谢。
答案 0 :(得分:0)
看起来你正试图做错事。
没有'sbrk'系统调用,有'brk'。除此之外它将被命名为sys_brk,但你没有理由调用它。因此,如果您想了解如何学习当前的休息地址,请阅读brk的消息来源。
但是,如果你没有碰巧找到brk的消息来源,你究竟在哪里放了这个?
答案 1 :(得分:0)
添加以下代码行:
printf("Address of program break is %p\n", (void *)sbrk(0));
它将以终止的十六进制地址向终端返回一条消息(例如0x #### #### ####。)
如果您要使用十六进制以外的地址,请使用%u 或类似的地址。手册页中记录了sbrk(0)
的使用(Linux程序员手册)。
要查看文档,请在命令行中输入:man sbrk
,然后会弹出文档。