X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=draft%2Fman3%2Fposix_memalign.3;h=dede68b64b43adfc2324b7b4ab721f00a0591a6a;hb=40274b7d79d419993de4a745e3ae86ca6d0f417f;hp=bd23ea97d320f38871942ccd0e45fce8f3aaeb7a;hpb=ce024239a1d8e74a7a44f7c24cee4375cb13b3ef;p=linuxjm%2FLDP_man-pages.git diff --git a/draft/man3/posix_memalign.3 b/draft/man3/posix_memalign.3 index bd23ea97..dede68b6 100644 --- a/draft/man3/posix_memalign.3 +++ b/draft/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,9 +21,16 @@ .\" .\" 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() +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2001 Akihiro MOTOKI .\" all rights reserved. @@ -30,49 +38,43 @@ .\" 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 +.\" Updated 2012-05-01, Akihiro MOTOKI +.\" Updated 2012-05-08, Akihiro MOTOKI +.\" Updated 2013-03-26, Akihiro MOTOKI +.\" Updated 2013-07-22, Akihiro MOTOKI .\" -.\"WORD: obsolete 廃止された -.\"WORD: a multiple of 〜の倍数 -.\"WORD: a power of two 2 のべき乗 -.\" -.TH POSIX_MEMALIGN 3 2010-09-20 "GNU" "Linux Programmer's Manual" -.\"O .SH NAME +.TH POSIX_MEMALIGN 3 2012\-03\-23 GNU "Linux Programmer's Manual" .SH 名前 -.\"O posix_memalign, memalign, valloc \- Allocate aligned memory -posix_memalign, memalign, valloc \- アラインメントされたメモリの割り当てを行う -.\"O .SH SYNOPSIS +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 -.\"O Feature Test Macro Requirements for glibc (see -.\"O .BR feature_test_macros (7)): -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 -.BR valloc (): +\fBaligned_alloc\fP(): _ISOC11_SOURCE +.sp +\fBvalloc\fP(): .br .PD 0 .RS 4 -.TP 4 -.\"O Since glibc 2.12: +.TP 4 glibc 2.12 以降: .nf _BSD_SOURCE || @@ -81,332 +83,112 @@ _BSD_SOURCE || !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) .br .fi -.TP -.\"O Before glibc 2.12: +.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 -.\"O .SH DESCRIPTION .SH 説明 -.\"O The function -.\"O .BR posix_memalign () -.\"O allocates -.\"O .I size -.\"O bytes and places the address of the allocated memory in -.\"O .IR "*memptr" . -.\"O The address of the allocated memory will be a multiple of -.\"O .IR "alignment" , -.\"O which must be a power of two and a multiple of -.\"O .IR "sizeof(void *)". -関数 -.BR posix_memalign () -は、 -.I size -バイトのメモリを割り当て、割り当てられたメモリのアドレスを -.I "*memptr" -に設定する。 -割り当てられたメモリのアドレスは -.I "alignment" -の倍数になっているはずである。 -.I "alignment" -は 2 のべき乗で、かつ -.IR "sizeof(void *)" -の倍数でなければならない。 -.\"O If -.\"O .I size -.\"O is 0, then -.\"O .BR posix_memalign () -.\"O returns either NULL, -.\"O .\" glibc does this: -.\"O or a unique pointer value that can later be successfully passed to -.\"O .BR free (3). -.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) に問題なく渡すことができる。 -.\"O The obsolete function -.\"O .BR memalign () -.\"O allocates -.\"O .I size -.\"O bytes and returns a pointer to the allocated memory. -.\"O The memory address will be a multiple of -.\"O .IR "boundary" , -.\"O which must be a power of two. -廃止された関数である -.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 のべき乗でなければならない。 -.\"O The obsolete function -.\"O .BR valloc () -.\"O allocates -.\"O .I size -.\"O bytes and returns a pointer to the allocated memory. -.\"O The memory address will be a multiple of the page size. -.\"O It is equivalent to -.\"O .IR "memalign(sysconf(_SC_PAGESIZE),size)" . -廃止された関数である -.BR valloc () -は -.I size -バイトのメモリを割り当て、割り当てられたメモリへのポインタを返す。 -メモリのアドレスはページサイズの倍数になっているはずである。 -これは -.I "memalign(sysconf(_SC_PAGESIZE),size)" +関数 \fBaligned_alloc\fP() は \fBmemalign\fP() と同じだが、\fIsize\fP が \fIalignment\fP +の倍数でなければならないという追加の制限がある点が異なる。 + +廃止された関数である \fBvalloc\fP() は \fIsize\fP バイトのメモリを割り当て、割り当てられたメモリへのポインタを返す。 +メモリのアドレスはページサイズの倍数になっているはずである。 これは \fImemalign(sysconf(_SC_PAGESIZE),size)\fP と等価である。 -.\"O For all three routines, the memory is not zeroed. -.\" motoki: be not zeroed ってどういう意味? -3 つの関数はいずれもメモリのゼロクリアを行わない。 -.\"O .SH "RETURN VALUE" +廃止された関数 \fBpvalloc\fP() は \fBvalloc\fP() と同様だが、 +割り当てられるサイズがシステムのページサイズの倍数に切り上げられる。 + +これらの関数はいずれもメモリのゼロクリアを行わない。 .SH 返り値 -.\"O .BR memalign () -.\"O and -.\"O .BR valloc () -.\"O return the pointer to the allocated memory, or NULL if the request fails. -.BR memalign () -と -.BR valloc () -は割り当てられたメモリへのポインタを返す。 -割り当てに失敗した場合は NULL を返す。 +\fBaligned_alloc\fP(), \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は割り当てられた +メモリへのポインタを返す。 割り当てに失敗した場合は NULL を返す。 -.\"O .BR posix_memalign () -.\"O returns zero on success, or one of the error values listed in the -.\"O next section on failure. -.\"O Note that -.\"O .I errno -.\"O is not set. -.BR posix_memalign () -は成功した場合は 0 を返し、 -失敗した場合は次のセクションに記載されたエラー値のいずれかを返す。 -.I errno -はセットされないことに注意すること。 -.\"O .SH "ERRORS" +\fBposix_memalign\fP() は成功した場合は 0 を返し、 失敗した場合は次のセクションに記載されたエラー値のいずれかを返す。 +\fIerrno\fP はセットされないことに注意すること。 .SH エラー -.TP -.B EINVAL -.\"O The -.\"O .I alignment -.\"O argument was not a power of two, or was not a multiple of -.\"O .IR "sizeof(void *)" . -.I alignment -引き数が 2 のべき乗でなかったか、 -.IR "sizeof(void *)" -の倍数でなかった。 -.TP -.B ENOMEM -.\"O There was insufficient memory to fulfill the allocation request. +.TP +\fBEINVAL\fP +\fIalignment\fP 引き数が 2 のべき乗でなかったか、 \fIsizeof(void\ *)\fP の倍数でなかった。 +.TP +\fBENOMEM\fP 割り当て要求を満たすのに十分なメモリがなかった。 -.\"O .SH VERSIONS .SH バージョン -.\"O The functions -.\"O .BR memalign () -.\"O and -.\"O .BR valloc () -.\"O have been available in all Linux libc libraries. -.BR memalign () -と -.BR valloc () -はすべての Linux libc ライブラリで使用可能である。 -.\"O The function -.\"O .BR posix_memalign () -.\"O is available since glibc 2.1.91. -.BR posix_memalign () -は glibc 2.1.91 以降で使用可能である。 -.\"O .SH "CONFORMING TO" +関数 \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は +すべての Linux libc ライブラリで使用可能である。 + +関数 \fBaligned_alloc\fP() は glibc バージョン 2.16 で追加された。 + +関数 \fBposix_fallocate\fP() は glibc 2.1.91 以降で利用可能である。 .SH 準拠 -.\"O The function -.\"O .BR valloc () -.\"O appeared in 3.0BSD. -.\"O It is documented as being obsolete in 4.3BSD, -.\"O and as legacy in SUSv2. -.\"O It does not appear in POSIX.1-2001. -関数 -.BR valloc () -は 3.0BSD で登場した。4.3BSD では廃止されたと記載されており、 -SUSv2 では過去の名残だと記載されている。 -POSIX.1-2001 にはもはや存在しない。 -.\"O The function -.\"O .BR memalign () -.\"O appears in SunOS 4.1.3 but not in 4.4BSD. -関数 -.BR memalign () -は SunOS 4.1.3 で登場したが、4.4BSD にはない。 -.\"O The function -.\"O .BR posix_memalign () -.\"O comes from POSIX.1d. -関数 -.BR posix_memalign () -は POSIX.1d に由来する。 -.\"O .SS Headers +関数 \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 ヘッダ -.\"O Everybody agrees that -.\"O .BR posix_memalign () -.\"O is declared in \fI\fP. -.BR posix_memalign () -の宣言を \fI\fP で行うことに関しては、 -皆の意見が一致している。 +\fBposix_memalign\fP() の宣言を \fI\fP で行うことに関しては、 皆の意見が一致している。 -.\"O On some systems -.\"O .BR memalign () -.\"O is declared in \fI\fP instead of \fI\fP. -いくつかのシステムでは、 -.BR memalign () -は \fI\fP ではなく \fI\fP で宣言されている。 +いくつかのシステムでは、 \fBmemalign\fP() は \fI\fP ではなく +\fI\fP で宣言されている。 -.\"O According to SUSv2, -.\"O .BR valloc () -.\"O is declared in \fI\fP. -.\"O Libc4,5 and glibc declare it in \fI\fP and perhaps also in -.\"O \fI\fP -.\"O (namely, if -.\"O .B _GNU_SOURCE -.\"O is defined, or -.\"O .B _BSD_SOURCE -.\"O is defined, or, -.\"O for glibc, if -.\"O .B _XOPEN_SOURCE_EXTENDED -.\"O is defined, or, equivalently, -.\"O .B _XOPEN_SOURCE -.\"O is defined to a value not less than 500). -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 より小さくない値に定義されている)。 -.\"O .SH NOTES +SUSv2 によると、 \fBvalloc\fP() は \fI\fP で宣言される。 libc4,5 +や glibc では \fI\fP で宣言されており、 さらに適切な機能検査 +マクロが定義された場合には \fI\fP でも宣言される(上記を参照)。 .SH 注意 -.\"O On many systems there are alignment restrictions, for example, on buffers -.\"O used for direct block device I/O. -.\"O POSIX specifies the -.\"O .I "pathconf(path,_PC_REC_XFER_ALIGN)" -.\"O call that tells what alignment is needed. -.\"O Now one can use -.\"O .BR posix_memalign () -.\"O to satisfy this requirement. -多くのシステムでは、アラインメントに関して制限がある。例えば、 -ブロックデバイスに対するダイレクト 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() を使うと、この必要条件を満たすことができる。 -.\"O .BR posix_memalign () -.\"O verifies that -.\"O .I alignment -.\"O matches the requirements detailed above. -.BR posix_memalign () -は -.I alignment -が上で詳細に述べた必要条件を満たすかどうかを確かめる。 -.\"O .BR memalign () -.\"O may not check that the -.\"O .I boundary -.\"O argument is correct. -.BR memalign () -は -.I boundary -引き数が正しいかどうかの確認を行わないかもしれない。 +\fBposix_memalign\fP() は \fIalignment\fP が上で詳細に述べた必要条件を満たすか +どうかを確かめる。 \fBmemalign\fP() は \fIalignment\fP 引き数が正しいかどうかの +確認を行わないかもしれない。 -.\"O POSIX requires that memory obtained from -.\"O .BR posix_memalign () -.\"O can be freed using -.\"O .BR free (3). -POSIX では -.BR posix_memalign () -によって獲得したメモリは -.BR free (3) -を使って解放することができる必要がある。 -.\"O Some systems provide no way to reclaim memory allocated with -.\"O .BR memalign () -.\"O or -.\"O .BR valloc () -いくつかのシステムでは -.BR memalign () -や -.BR valloc () -で割り当てられたメモリを再利用する手段が提供されていない。 -.\"O (because one can only pass to -.\"O .BR free (3) -.\"O a pointer gotten from -.\"O .BR malloc (3), -.\"O while, for example, -.\"O .BR memalign () -.\"O would call -.\"O .BR malloc (3) -.\"O and then align the obtained value). -.\" 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). -.\"O The glibc implementation -.\"O allows memory obtained from any of these three routines to be -.\"O reclaimed with -.\"O .BR free (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) で再利用することができる。 -.\"O glibc -.\"O .BR malloc (3) -.\"O always returns 8-byte aligned memory addresses, so these routines are only -.\"O needed if you require larger alignment values. -glibc の -.BR malloc (3) -は常に 8 バイトにアラインメントされたメモリアドレスを返すので、 -ここで述べた関数が必要になるのは -8 バイトよりも大きなアラインメントが必要な場合だけである。 -.\"O .SH "SEE ALSO" +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.53 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。