0

tcmallocをuclibcに移植しようとしています。Tcmallocにはsbrk関数の定義があり、sbrk関数はlibcから__sbrkを呼び出します。一方、Uclibcには__sbrk関数はありませんが、sbrkはあります。

tcmallocsbrkからuclibcs​​brkを呼び出す方法について何かアイデアはありますか?

4

1 に答える 1

1

sbrkは(古い)システムコールですが、ほとんどのメモリアロケータはmmapより上に構築されています。この質問も参照してください

エミュレートするのではなく、syscallを使用する必要があります。mmapそして、私はではなく、を使用したいと思いますsbrk

Linuxカーネルmmapからより多くのメモリを取得する唯一の方法は、システムコール(通常は)を実行することです。

アプリケーション(またはライブラリ)の観点からは、システムコールはアトミックです(ほとんどの場合、、などのような単一のマシン命令ですSYSCALL)。SYSENTERint 0x80

于 2011-12-15T07:33:06.540 に答える