1

これをbrkシステムコール関数内に追加してみました:

void *addr = sbrk(0);
printk("current-add-is-%p-\n", addr);

しかし、カーネルのコンパイル中に sbrk 関数の暗黙の宣言というエラーが返されました。そして、sbrkが定義されている場所を見つけることができませんでした!! ユーザー プロセスがプログラム ブレーク アドレスを拡張しようとするたびに、現在のプログラム ブレーク アドレスがわかれば、プロセスが要求しているメモリ量を測定できます。

ありがとうございました。

4

2 に答える 2

0

何か間違ったことをしようとしているようです。

「sbrk」syscall はありません。「brk」があります。それ以外は sys_brk という名前になりますが、それを呼び出す理由はありません。したがって、現在のブレーク アドレスを知る方法を知りたい場合は、brk のソースを参照してください。

しかし、たまたまbrkのソースを見つけられなかった場合、これをどこに入れましたか?

于 2016-03-07T17:46:31.253 に答える