OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man3 / posix_memalign.3
index bff7083..f28871b 100644 (file)
 .\" License.
 .\"
 .\" 2001-10-11, 2003-08-22, aeb, added some details
+.\" 2012-03-23, Michael Kerrisk <mtk.manpages@mail.com>
+.\"     Document pvalloc() and aligned_alloc()
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 2001 Akihiro MOTOKI
-.\"       all rights reserved.
-.\" Translated 2001-11-05, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" 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 <stdlib.h>
+\fB#include <stdlib.h>\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 <malloc.h>
+\fB#include <malloc.h>\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
-.BR valloc ():
+\fBaligned_alloc\fP(): _ISOC11_SOURCE
+.sp
+\fBvalloc\fP():
 .br
 .PD 0
 .RS 4
-.TP 4
+.TP  4
 glibc 2.12 以降:
 .nf
 _BSD_SOURCE ||
@@ -75,191 +70,108 @@ _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<malloc.h>\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 ()
\81¨
-.BR valloc ()
-はすべての Linux libc ライブラリで使用可能である
-.BR posix_memalign ()
-は glibc 2.1.91 以降で使用可能である。
+関数 \fBmemalign\fP(), \fBvalloc\fP(), \fBpvalloc\fP() は
\81\99ã\81¹ã\81¦ã\81® Linux libc ã\83©ã\82¤ã\83\96ã\83©ã\83ªã\81§ä½¿ç\94¨å\8f¯è\83½ã\81§ã\81\82ã\82\8bã\80\82
+
+関数 \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<stdlib.h>\fP で行うことに関しては、
-皆の意見が一致している。
+\fBposix_memalign\fP()  の宣言を \fI<stdlib.h>\fP で行うことに関しては、 皆の意見が一致している。
 
-いくつかのシステムでは、
-.BR memalign ()
-は \fI<malloc.h>\fP ではなく \fI<stdlib.h>\fP で宣言されている。
+いくつかのシステムでは、 \fBmemalign\fP()  は \fI<malloc.h>\fP ではなく
+\fI<stdlib.h>\fP で宣言されている。
 
-SUSv2 によると、
-.BR valloc ()
-は
-.I <stdlib.h>
-で宣言される。
-libc4,5 や glibc では
-.I <malloc.h>
-で宣言されており、
-さらに
-.I <stdlib.h>
-でも宣言されることもある
-(具体的には以下のいずれかの場合:
-.B _GNU_SOURCE
-が定義されている、
-.B _BSD_SOURCE
-が定義されている、
-glibc で
-.B _XOPEN_SOURCE_EXTENDED
-が定義されている、
-glibc で
-.B _XOPEN_SOURCE
-が 500 より小さくない値に定義されている)。
+SUSv2 によると、 \fBvalloc\fP() は \fI<stdlib.h>\fP で宣言される。 libc4,5
+や glibc では \fI<malloc.h>\fP で宣言されており、 さらに適切な機能検査
+マクロが定義された場合には \fI<stdlib.h>\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)