X-Git-Url: http://git.osdn.net/view?p=linuxjm%2FLDP_man-pages.git;a=blobdiff_plain;f=release%2Fman3%2Fmalloc_hook.3;h=0cd4de0f6c98a091269014fea8e7be231141ea6c;hp=66a5d5d90aa3b21d9e3034b927258114ec47c8c1;hb=b71c465683d7fb2e031a5a7335243572d99388a6;hpb=088554e2c389a5d0faa2b8c0b7a271ce1f5e4e47 diff --git a/release/man3/malloc_hook.3 b/release/man3/malloc_hook.3 index 66a5d5d9..0cd4de0f 100644 --- a/release/man3/malloc_hook.3 +++ b/release/man3/malloc_hook.3 @@ -3,85 +3,61 @@ .\" Heavily based on glibc documentation .\" Polished, added docs, removed glibc doc bug, 2002-07-20, aeb .\" -.\" FIXME -.\" According to a Fedora downstream patch, malloc hooks are deprecated -.\" https://bugzilla.redhat.com/show_bug.cgi?id=450187 -.\" Integrate this upstream? +.\"******************************************************************* .\" -.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI all rights reserved. -.\" Translated Thu 05 Dec 2002 by Akihiro MOTOKI +.\" This file was generated with po4a. Translate the source file. .\" -.TH MALLOC_HOOK 3 2002-07-20 "GNU" "Linux Programmer's Manual" +.\"******************************************************************* +.TH MALLOC_HOOK 3 2010\-10\-13 GNU "Linux Programmer's Manual" .SH 名前 -__malloc_hook, __malloc_initialize_hook, -__memalign_hook, __free_hook, __realloc_hook, -__after_morecore_hook \- malloc デバッグ用の変数 +__malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook, +__realloc_hook, __after_morecore_hook \- malloc デバッグ用の変数 .SH 書式 .nf -.B "#include " +\fB#include \fP .sp -.BI "void *(*__malloc_hook)(size_t " size ", const void *" caller ); +\fBvoid *(*__malloc_hook)(size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP .sp -.BI "void *(*__realloc_hook)(void *" ptr ", size_t " size \ -", const void *" caller ); +\fBvoid *(*__realloc_hook)(void *\fP\fIptr\fP\fB, size_t \fP\fIsize\fP\fB, const void *\fP\fIcaller\fP\fB);\fP .sp -.BI "void *(*__memalign_hook)(size_t " alignment ", size_t " size , -.BI " const void *" caller ); +\fBvoid *(*__memalign_hook)(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB,\fP +\fB const void *\fP\fIcaller\fP\fB);\fP .sp -.BI "void (*__free_hook)(void *" ptr ", const void *" caller ); +\fBvoid (*__free_hook)(void *\fP\fIptr\fP\fB, const void *\fP\fIcaller\fP\fB);\fP .sp -.B "void (*__malloc_initialize_hook)(void);" +\fBvoid (*__malloc_initialize_hook)(void);\fP .sp -.B "void (*__after_morecore_hook)(void);" +\fBvoid (*__after_morecore_hook)(void);\fP .fi .SH 説明 -GNU C ライブラリでは、適切なフック関数 (hook function) を指定することで -.BR malloc (3), -.BR realloc (3), -.BR free (3) -の動作を変更することができる。例えば、動的にメモリ割り当てを行う -プログラムのデバッグにこれらのフックを使うことができる。 +GNU C ライブラリでは、適切なフック関数 (hook function) を指定することで \fBmalloc\fP(3), \fBrealloc\fP(3), +\fBfree\fP(3) の動作を変更することができる。例えば、動的にメモリ割り当てを行う プログラムのデバッグにこれらのフックを使うことができる。 .LP -変数 -.B __malloc_initialize_hook -は malloc の実装が初期化される際に一度だけ呼ばれる関数へのポインタである。 -この変数は書き換え可能 (weak) であり、アプリケーション内で -以下のような定義で上書きできる: - +変数 \fB__malloc_initialize_hook\fP は malloc の実装が初期化される際に一度だけ呼ばれる関数へのポインタである。 +この変数は書き換え可能 (weak) であり、アプリケーション内で 以下のような定義で上書きできる: .nf + void (*__malloc_initialize_hook)(void) = my_init_hook; -.fi -なお、関数 -.IR my_init_hook () -で全てのフックの初期化をすることができる。 +.fi +なお、関数 \fImy_init_hook\fP() で全てのフックの初期化をすることができる。 .LP -.BR __malloc_hook , -.BR __realloc_hook , -.BR __memalign_hook , -.B __free_hook -で指される 4 つの関数は、各々 -.BR malloc (3), -.BR realloc (3), -.BR memalign (3), -.BR free (3) -とよく似たプロトタイプを持っているが、 -一番最後の引き数 -.I caller -をとる点が異なる。 -引き数 -.I caller -には、 -.BR malloc (3) -などの呼び出し元 (caller) のアドレスが格納される。 +\fB__malloc_hook\fP, \fB__realloc_hook\fP, \fB__memalign_hook\fP, \fB__free_hook\fP +で指される 4 つの関数は、各々 \fBmalloc\fP(3), \fBrealloc\fP(3), \fBmemalign\fP(3), \fBfree\fP(3) +とよく似たプロトタイプを持っているが、 一番最後の引き数 \fIcaller\fP をとる点が異なる。 引き数 \fIcaller\fP には、 +\fBmalloc\fP(3) などの呼び出し元 (caller) のアドレスが格納される。 .LP -変数 -.B __after_morecore_hook -は、領域の追加要求があり -.BR sbrk (2) +変数 \fB__after_morecore_hook\fP は、領域の追加要求があり \fBsbrk\fP(2) が呼ばれた後で毎回呼び出される関数へのポインタである。 .SH 準拠 これらの関数は GNU による拡張である。 +.SH 注意 +.\" https://bugzilla.redhat.com/show_bug.cgi?id=450187 +.\" http://sourceware.org/bugzilla/show_bug.cgi?id=9957 +The use of these hook functions is not safe in multithreaded programs, and +they are now deprecated. Programmers should instead preempt calls to the +relevant functions by defining and exporting functions such as "malloc" and +"free". .SH 例 これらの変数の使い方の簡単な例を以下に示す。 .sp @@ -122,7 +98,7 @@ my_malloc_hook(size_t size, const void *caller) /* printf() は malloc() を呼び出す可能性があるので ここでもガードを行う (元々のフックのままにしておく) */ - printf("malloc(%u) called from %p returns %p\\n", + printf("malloc(%u) called from %p returns %p\en", (unsigned int) size, caller, result); /* ユーザが使おうとするフックを再設定する */ @@ -132,7 +108,8 @@ my_malloc_hook(size_t size, const void *caller) } .fi .SH 関連項目 -.BR mallinfo (3), -.BR malloc (3), -.BR mcheck (3), -.BR mtrace (3) +\fBmallinfo\fP(3), \fBmalloc\fP(3), \fBmcheck\fP(3), \fBmtrace\fP(3) +.SH この文書について +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。