X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman3%2Fposix_memalign.3;h=af0f27b6cc76f1998b2bcf3230c80e7424c86382;hb=25a9ae037fb2517d0cf4e625fb5bdbc5f06e004d;hp=bff7083124fa3902b6d364e3a085d23b5debbbe5;hpb=ce024239a1d8e74a7a44f7c24cee4375cb13b3ef;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man3/posix_memalign.3 b/release/man3/posix_memalign.3 index bff70831..af0f27b6 100644 --- a/release/man3/posix_memalign.3 +++ b/release/man3/posix_memalign.3 @@ -1,6 +1,7 @@ .\" Copyright (c) 2001 by John Levon .\" Based in part on GNU libc documentation. .\" +.\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. @@ -20,53 +21,48 @@ .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. -.\" License. +.\" %%%LICENSE_END .\" .\" 2001-10-11, 2003-08-22, aeb, added some details +.\" 2012-03-23, Michael Kerrisk +.\" Document pvalloc() and aligned_alloc() +.\"******************************************************************* .\" -.\" Japanese Version Copyright (c) 2001 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2001-11-05, Akihiro MOTOKI -.\" Updated 2003-09-05, Akihiro MOTOKI, catch up to v1.60 -.\" Updated 2005-11-19, Akihiro MOTOKI -.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24 +.\" This file was generated with po4a. Translate the source file. .\" -.\"WORD: obsolete 廃止された -.\"WORD: a multiple of 〜の倍数 -.\"WORD: a power of two 2 のべき乗 -.\" -.TH POSIX_MEMALIGN 3 2010-09-20 "GNU" "Linux Programmer's Manual" +.\"******************************************************************* +.TH POSIX_MEMALIGN 3 2012\-03\-23 GNU "Linux Programmer's Manual" .SH 名前 -posix_memalign, memalign, valloc \- アラインメントされたメモリの割り当てを行う +posix_memalign, aligned_alloc, memalign, valloc, pvalloc \- アラインメント +されたメモリの割り当てを行う .SH 書式 .nf -.B #include +\fB#include \fP .sp -.BI "int posix_memalign(void **" memptr ", size_t " alignment ", size_t " size ); +\fBint posix_memalign(void **\fP\fImemptr\fP\fB, size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB);\fP +\fBvoid *aligned_alloc(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB);\fP +\fBvoid *valloc(size_t \fP\fIsize\fP\fB);\fP .sp -.B #include +\fB#include \fP .sp -.BI "void *valloc(size_t " size ); -.BI "void *memalign(size_t " boundary ", size_t " size ); +\fBvoid *memalign(size_t \fP\fIalignment\fP\fB, size_t \fP\fIsize\fP\fB);\fP +\fBvoid *pvalloc(size_t \fP\fIsize\fP\fB);\fP .fi .sp .in -4n -glibc 向けの機能検査マクロの要件 -.RB ( feature_test_macros (7) -参照): +glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .in .sp .ad l -.BR posix_memalign (): -.RS 4 -_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 -.RE +\fBposix_memalign\fP(): _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600 +.sp +\fBaligned_alloc\fP(): _ISOC11_SOURCE .sp -.BR valloc (): +\fBvalloc\fP(): .br .PD 0 .RS 4 -.TP 4 +.TP 4 glibc 2.12 以降: .nf _BSD_SOURCE || @@ -75,191 +71,112 @@ _BSD_SOURCE || !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) .br .fi -.TP +.TP glibc 2.12 より前: -_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || -_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED +.ad b +.br +((非標準の) ヘッダファイル \fI\fP も +\fBvalloc\fP() の宣言も公開する。機能検査マクロは不要である。 .RE .PD -.ad b .SH 説明 -関数 -.BR posix_memalign () -は、 -.I size -バイトのメモリを割り当て、割り当てられたメモリのアドレスを -.I "*memptr" -に設定する。 -割り当てられたメモリのアドレスは -.I "alignment" -の倍数になっているはずである。 -.I "alignment" -は 2 のべき乗で、かつ -.IR "sizeof(void *)" -の倍数でなければならない。 -.I size -が 0 の場合、 -.BR posix_memalign () -は NULL か一意なポインタ値を返す。 -このポインタ値は、後で -.BR free (3) +.\" glibc does this: +関数 \fBposix_memalign\fP() は、 \fIsize\fP バイトのメモリを割り当て、割り当てられたメモリのアドレスを \fI*memptr\fP +に設定する。 割り当てられたメモリのアドレスは \fIalignment\fP の倍数になっているはずである。 \fIalignment\fP は 2 +のべき乗で、かつ \fIsizeof(void\ *)\fP の倍数でなければならない。 \fIsize\fP が 0 の場合、 +\fBposix_memalign\fP() は NULL か一意なポインタ値を返す。 このポインタ値は、後で \fBfree\fP(3) に問題なく渡すことができる。 -廃止された関数である -.BR memalign () -は、 -.I size -バイトのメモリを割り当て、割り当てられたメモリへのポインタを返す。 -メモリのアドレスは -.I "boundary" -の倍数になっているはずである。 -.I "boundary" -は 2 のべき乗でなければならない。 .\" The behavior of memalign() for size==0 is as for posix_memalign() .\" but no standards govern this. +廃止された関数である \fBmemalign\fP() は、 \fIsize\fP バイトのメモリを割り当て、 +割り当てられたメモリへのポインタを返す。 メモリのアドレスは \fIalignment\fP +の倍数になっているはずである。 \fIalignment\fP は 2 のべき乗でなければならない。 + +関数 \fBaligned_alloc\fP() は \fBmemalign\fP() と同じだが、\fIsize\fP が \fIalignment\fP +の倍数でなければならないという追加の制限がある点が異なる。 -廃止された関数である -.BR valloc () -は -.I size -バイトのメモリを割り当て、割り当てられたメモリへのポインタを返す。 -メモリのアドレスはページサイズの倍数になっているはずである。 -これは -.I "memalign(sysconf(_SC_PAGESIZE),size)" +廃止された関数である \fBvalloc\fP() は \fIsize\fP バイトのメモリを割り当て、割り当てられたメモリへのポインタを返す。 +メモリのアドレスはページサイズの倍数になっているはずである。 これは \fImemalign(sysconf(_SC_PAGESIZE),size)\fP と等価である。 -.\" motoki: be not zeroed ってどういう意味? -3 つの関数はいずれもメモリのゼロクリアを行わない。 +廃止された関数 \fBpvalloc\fP() は \fBvalloc\fP() と同様だが、 +割り当てられるサイズがシステムのページサイズの倍数に切り上げられる。 + +これらの関数はいずれもメモリのゼロクリアを行わない。 .SH 返り値 -.BR memalign () -と -.BR valloc () -は割り当てられたメモリへのポインタを返す。 -割り当てに失敗した場合は NULL を返す。 +\fBaligned_alloc\fP(), \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は割り当てられた +メモリへのポインタを返す。 割り当てに失敗した場合は NULL を返す。 -.BR posix_memalign () -は成功した場合は 0 を返し、 -失敗した場合は次のセクションに記載されたエラー値のいずれかを返す。 -.I errno -はセットされないことに注意すること。 +\fBposix_memalign\fP() は成功した場合は 0 を返し、 失敗した場合は次のセクションに記載されたエラー値のいずれかを返す。 +\fIerrno\fP はセットされないことに注意すること。 .SH エラー -.TP -.B EINVAL -.I alignment -引き数が 2 のべき乗でなかったか、 -.IR "sizeof(void *)" -の倍数でなかった。 -.TP -.B ENOMEM +.TP +\fBEINVAL\fP +\fIalignment\fP 引き数が 2 のべき乗でなかったか、 \fIsizeof(void\ *)\fP の倍数でなかった。 +.TP +\fBENOMEM\fP 割り当て要求を満たすのに十分なメモリがなかった。 .SH バージョン -.BR memalign () -と -.BR valloc () -はすべての Linux libc ライブラリで使用可能である。 -.BR posix_memalign () -は glibc 2.1.91 以降で使用可能である。 +関数 \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は +すべての Linux libc ライブラリで使用可能である。 + +関数 \fBaligned_alloc\fP() は glibc バージョン 2.16 で追加された。 + +関数 \fBposix_fallocate\fP() は glibc 2.1.91 以降で利用可能である。 .SH 準拠 -関数 -.BR valloc () -は 3.0BSD で登場した。4.3BSD では廃止されたと記載されており、 -SUSv2 では過去の名残だと記載されている。 -POSIX.1-2001 にはもはや存在しない。 -関数 -.BR memalign () -は SunOS 4.1.3 で登場したが、4.4BSD にはない。 -関数 -.BR posix_memalign () -は POSIX.1d に由来する。 +関数 \fBvalloc\fP() は 3.0BSD で登場した。4.3BSD では廃止されたと記載されており、 +SUSv2 では過去の名残だと記載されている。 POSIX.1\-2001 には存在しない。 + +関数 \fBpvalloc\fP() は GNU による拡張である。 + +関数 \fBmemalign\fP() は SunOS 4.1.3 で登場したが、4.4BSD にはない。 + +関数 \fBposix_memalign\fP() は POSIX.1d に由来する。 + +.\" +関数 \fIaligned_alloc\fP() は C11 標準で規定されている。 .SS ヘッダ -.BR posix_memalign () -の宣言を \fI\fP で行うことに関しては、 -皆の意見が一致している。 +\fBposix_memalign\fP() の宣言を \fI\fP で行うことに関しては、 皆の意見が一致している。 -いくつかのシステムでは、 -.BR memalign () -は \fI\fP ではなく \fI\fP で宣言されている。 +いくつかのシステムでは、 \fBmemalign\fP() は \fI\fP ではなく +\fI\fP で宣言されている。 -SUSv2 によると、 -.BR valloc () -は -.I -で宣言される。 -libc4,5 や glibc では -.I -で宣言されており、 -さらに -.I -でも宣言されることもある -(具体的には以下のいずれかの場合: -.B _GNU_SOURCE -が定義されている、 -.B _BSD_SOURCE -が定義されている、 -glibc で -.B _XOPEN_SOURCE_EXTENDED -が定義されている、 -glibc で -.B _XOPEN_SOURCE -が 500 より小さくない値に定義されている)。 +SUSv2 によると、 \fBvalloc\fP() は \fI\fP で宣言される。 libc4,5 +や glibc では \fI\fP で宣言されており、 さらに適切な機能検査 +マクロが定義された場合には \fI\fP でも宣言される(上記を参照)。 .SH 注意 -多くのシステムでは、アラインメントに関して制限がある。例えば、 -ブロックデバイスに対するダイレクト I/O に使用するバッファには -アラインメントに関する制限がある。 -POSIX では、どんなアラインメントが必要かを知るために -.I "pathconf(path,_PC_REC_XFER_ALIGN)" -コールを規定している。ここで -.BR posix_memalign () +多くのシステムでは、アラインメントに関して制限がある。例えば、 ブロックデバイスに対するダイレクト I/O に使用するバッファには +アラインメントに関する制限がある。 POSIX では、どんなアラインメントが必要かを知るために +\fIpathconf(path,_PC_REC_XFER_ALIGN)\fP コールを規定している。ここで \fBposix_memalign\fP() を使うと、この必要条件を満たすことができる。 -.BR posix_memalign () -は -.I alignment -が上で詳細に述べた必要条件を満たすかどうかを確かめる。 -.BR memalign () -は -.I boundary -引き数が正しいかどうかの確認を行わないかもしれない。 +\fBposix_memalign\fP() は \fIalignment\fP が上で詳細に述べた必要条件を満たすか +どうかを確かめる。 \fBmemalign\fP() は \fIalignment\fP 引き数が正しいかどうかの +確認を行わないかもしれない。 -POSIX では -.BR posix_memalign () -によって獲得したメモリは -.BR free (3) -を使って解放することができる必要がある。 -いくつかのシステムでは -.BR memalign () -や -.BR valloc () -で割り当てられたメモリを再利用する手段が提供されていない。 -.\" motoki: while の前後のつながりはこれでいい? -(なぜなら -.BR free (3) -に渡すことができるのは -.BR malloc (3) -から受け取ったポインタだけだが、 -例えば -.BR memalign () -は -.BR malloc (3) -を呼び出し、得た値をアラインメントしてしまうからである) .\" Other systems allow passing the result of -.\" .BR valloc () +.\" .IR valloc () .\" to -.\" .BR free (3), +.\" .IR free (3), .\" but not to -.\" .BR realloc (3). -glibc の実装では、 -ここに述べた 3 つの関数のいずれで獲得したメモリも -.BR free (3) -で再利用することができる。 +.\" .IR realloc (3). +POSIX では \fBposix_memalign\fP() によって獲得したメモリは \fBfree\fP(3) を +使って解放することができる必要がある。 いくつかのシステムでは +\fBmemalign\fP() や\fBvalloc\fP() で割り当てられたメモリを再利用する手段が +提供されていない(なぜなら \fBfree\fP(3) に渡すことができるのは +\fBmalloc\fP(3) から受け取ったポインタだけだが、例えば \fBmemalign\fP() は +\fBmalloc\fP(3) を呼び出し、得た値をアラインメントしてしまうからである)。 +glibc の実装では、 ここに述べた関数のいずれで獲得したメモリも +\fBfree\fP(3) で再利用することができる。 -glibc の -.BR malloc (3) -は常に 8 バイトにアラインメントされたメモリアドレスを返すので、 -ここで述べた関数が必要になるのは -8 バイトよりも大きなアラインメントが必要な場合だけである。 +glibc の \fBmalloc\fP(3) は常に 8 バイトにアラインメントされたメモリアドレスを +返すので、ここで述べた関数が必要になるのは 8 バイトよりも大きなアラインメント +が必要な場合だけである。 .SH 関連項目 -.BR brk (2), -.BR getpagesize (2), -.BR free (3), -.BR malloc (3) +\fBbrk\fP(2), \fBgetpagesize\fP(2), \fBfree\fP(3), \fBmalloc\fP(3) +.SH この文書について +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。