メモリ管理API

ngx_pool_t

ngx_pool_t

NGINXプールアロケータ機能のためのメモリプールを表すオブジェクト

ngx_buf_tag_t

ngx_buf_tag_t

void * がタグバッファへのポインタとして使われるためのエイリアス

構造

ngx_pool_cleanup_t

ngx_pool_cleanup_t

プールからの割り当てと、ユーザがプールの掃除をセットするためのコールバックハンドラを含む構造。これはngx_pool_cleanup_add()と一緒に使うためのものです

void (*ngx_pool_cleanup_pt)(void *data) handler

ユーザが設定するクリーナップ ハンドラ コールバック

void *data

割り当てリクエストから割り当てられたデータ

ngx_array_t

ngx_array_t

ngx_array_create()を使って割り当てられた配列の詳細を含む構造。Since a continuous block is allocated it should be relative trivial to calculate where a given element in the array is based on size.

void *elts

配列内の要素へのポインタ

ngx_uint_t nelts

配列内に格納された要素の数

ngx_uint_t nalloc

配列内に割り当てられた項目の数

size_t size

配列内の各要素のサイズ

ngx_pool_t *pool

配列のために使われるプールへのポインタ

ngx_list_t

ngx_list_t

ngx_list_create()を使って割り当てられたリンクリストの詳細を含む構造。

ngx_list_part_t *last

リスト上の要素の最後のブロックを含んでいるリストの部分へのポインタ

ngx_list_part_t part

リンクリスト内の最初の部分

size_t size

リスト上の各要素のサイズ

ngx_uint_t nalloc

リスト上の割り当てられた要素の数

ngx_list_part_t

ngx_list_part_t

A structure containing the details of a block of elements in a c:type:ngx_list_t linked-list.

void *elts

このブロック上最初の要素へのポインタ

ngx_uint_t nelts

このブロック内に格納された連続する要素の数

ngx_list_part_t *next

このリストの次の部分へのポインタ

ngx_buf_t

ngx_buf_t
unsigned char *pos

メモリバッファウィンドウ内の現在の場所

unsigned char *last

メモリバッファウィンドウの最後

off_t file_pos

ファイルバッファの現在の位置

off_t file_last

ファイルバッファの最後

unsigned char *start

メモリバッファの最初

unsigned char *end

メモリバッファの最後

ngx_buf_tag_t tag

A pointer to tag buffers with

ngx_file_t *file

ファイルバッファのためのファイルポインタ

unsigned temporary:1

書き込み可能なインメモリバッファ

unsigned memory:1

読み込みのみのインメモリバッファ

unsigned mmap:1

読み込みのみの mmap()ed バッファ

unsigned recycled:1

バッファは解放した後で再利用されます

unsigned in_file:1

バッファはファイルバッファです

unsigned flush:1

全てのバッファされたデータがフラッシュされました

unsigned last_buf:1

データのストリームの中でバッファは最後です

unsigned last_in_chain:1

バッファチェーンの中でバッファは最後です

unsigned temp_file:1

バッファは一時ファイルです

ngx_bufs_t

ngx_bufs_t

必要とされるバッファのチェーンについての詳細を含むための構造。ngx_create_chain_of_bufs()によって使われます

ngx_int_t num

チェーン内の生成するリンクの数

size_t size

チェーン内の各バッファのサイズ

ngx_chain_t

ngx_chain_t

メモリバッファのチェーンを含む構造

ngx_buf_t *buf

チェーン内のこのリンクに関連するバッファ

ngx_chain_t *next

チェーン内の次のリンク

割り当て関数

ngx_alloc

void *ngx_alloc(size_t size, ngx_log_t *log)

エラーハンドリングを持つmallocのためのラッパー。指定されたサイズのメモリを割り当て、そのメモリへのポインタを返します。エラーハンドリングのためにログファイルオブジェクトへのポインタを必要とします。失敗時にはemergencyレベルのエラーが起きます。

パラメータ:
  • size – 割り当てるメモリの総バイト数
  • log – The logging object to log errors with
返り値:

割り当てられたメモリへのポインタ、あるいは失敗時にNULL

ngx_calloc

void *ngx_calloc(size_t size, ngx_log_t *log)

各バイトをさらに0に設定するngx_alloc()のためのラッパー。

パラメータ:
  • size – 割り当てるメモリの総バイト数
  • log – The logging object to log errors with
返り値:

割り当てられたメモリへのポインタ、あるいは失敗時にNULL

ngx_free

void free(void* ptr)

標準free() 関数の定義済みのエイリアス。

パラメータ:
  • ptr – 解放されるメモリへのポインタ

メモリ プール関数

ngx_create_pool

ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log)

素早く解放および再利用することができる割り当てられたメモリのメモリプールを生成します。

The macro NGX_DEFAULT_POOL_SIZE is recommended for use in the size variable which amounts to 16KB

パラメータ:
  • size – プールのためのページサイズ
  • log – The logging object to log errors with
返り値:

新しく生成されたメモリプールへのポインタ、あるいは失敗時に NULL

ngx_destroy_pool

void ngx_destroy_pool(ngx_pool_t *pool)

関連する全ての割り当てを解放し、プールを破棄します。

パラメータ:
  • pool – 破棄するプール

ngx_reset_pool

void ngx_reset_pool(ngx_pool_t *pool)

全てのページを空いていると印をつけることでプールを再設定し、さらにその中のどのような大きさの割り当ても解放します。

パラメータ:
  • pool – 再設定されるプール

ngx_palloc

void *ngx_palloc(ngx_pool_t *pool, size_t size)

プールからメモリのブロックを割り当てます。

注意

要求されたサイズが NGX_MAX_ALLOC_FROM_POOL (system page size - 1) より大きい場合、大きな割り当てとして個々に割り当てられ、明示的に ngx_pfree() を使って解放されるまで解放されないでしょう。プール全体は再設定(ngx_reset_pool()) あるいは破壊 (ngx_destroy_pool()) されます。

パラメータ:
  • pool – 割り当てをするためのプールへのポインタ
  • size – 必要とする割り当てのサイズ
返り値:

リクエストされたメモリへのポインタ、あるいは失敗時にはNULL

ngx_pnalloc

void *ngx_pnalloc(ngx_pool_t *pool, size_t size)

ngx_palloc() に似ていますが、NGX_ALIGNMENTと提携したプールからメモリのブロックを割り当てます

パラメータ:
  • pool – 割り当てをするためのプールへのポインタ
  • size – 必要とする割り当てのサイズ
返り値:

リクエストされたメモリへのポインタ、あるいは失敗時にはNULL

ngx_pcalloc

void *ngx_pcalloc(ngx_pool_t *pool, size_t size)

各バイトを0にも設定するngx_pcalloc() のためのラッパー

パラメータ:
  • pool – 割り当てをするためのプールへのポインタ
  • size – 必要とする割り当てのサイズ
返り値:

リクエストされたメモリへのポインタ、あるいは失敗時にはNULL

ngx_pfree

ngx_int_t ngx_pfree(ngx_pool_t *pool, void *p)

大きな割り当ての解放

パラメータ:
  • pool – メモリを解放するプールへのポインタ
  • p – 解放される割り当てへのポインタ
返り値:

成功時には NGX_OK、あるいはもし割り当てがプールの大きな割り当てのリストの中で見つけることができない場合は NGX_DECLINED

ngx_pool_cleanup_add

ngx_pool_cleanup_t *ngx_pool_cleanup_add(ngx_pool_t *p, size_t size)

ユーザがクリーナップ ハンドラを追加することができる構造を返す ngx_palloc() のラッパー

パラメータ:
  • pool – 割り当てをするためのプールへのポインタ
  • size – 必要とする割り当てのサイズ
返り値:

クリーナップ コールバックとして設定する割り当てと変数を含む構造へのポインタ

配列 関数

NGINX 配列は少数の要素のためのメモリの連続するブロックを手入れする便利な方法です。特にもし配列のサイズがしばしば変更する必要が無い場合には効果的です。

ngx_array_create

ngx_array_t *ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size)

メモリプールから配列を生成し、要素のための初期の連続するメモリブロックを割り当てます

パラメータ:
  • p – 使用するメモリプール
  • n – 配列内の要素の数
  • size – 各要素のバイト数
返り値:

新しく生成された配列

ngx_array_destroy

void ngx_array_destroy(ngx_array_t *a)

配列を破壊し、プールに割り当てを解放します

パラメータ:
  • a – 破壊する配列

ngx_array_push

void *ngx_array_push(ngx_array_t *a)

配列上に新しい要素を生成し、この要素へのポインタを返す

注意

this may cause a re-allocation of the array depending on the current state of the pool which in-turn could cause a small performance hit

パラメータ:
  • a – 新しい要素を生成する先の配列
返り値:

配列上の新しい要素へのポインタ

ngx_array_push_n

void *ngx_array_push_n(ngx_array_t *a, ngx_uint_t n)

配列上に多くの新しい要素を生成し、それらの要素の最初へのポインタを返す

注意

this may cause a re-allocation of the array depending on the current state of the pool which in-turn could cause a small performance hit

パラメータ:
  • a – 新しい要素を生成する先の配列
  • n – 配列上に生成する新しい要素の数
返り値:

最初の新しい要素へのポインタ

リスト関数

NGINXでのリンクされたリストは反復することができる成長する要素のリストを維持するために使われます。NGINX はそれらを ‘parts’ と呼ばれるブロックに格納します。それぞれのpartはリスト上の幾つかの要素を含むことができます。

ngx_list_create

ngx_list_t *ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size)

メモリプールからリンク リストを作成し、そのリストのための初期メモリブロックを割り当てます

パラメータ:
  • pool – リストを割り当てる先のプール
  • n – pool上に初期に割り当てる要素の数
  • size – 各要素のサイズ
返り値:

新しく割り当てられたリンク リスト

ngx_list_push

void *ngx_list_push(ngx_list_t *list)

メモリプール上のリンクリストに新しい要素を割り当てて追加する

パラメータ:
  • list – 追加する先のリンクリスト
返り値:

リスト上の新しく割り当てられた要素

バッファ関数

ngx_alloc_buf

ngx_buf_t *ngx_alloc_buf(ngx_pool_t *pool)

メモリプール内にngx_buf_t 構造を生成するマクロ

パラメータ:
  • pool – 構造を生成する先のプール
返り値:

バッファへのポインタ

ngx_calloc_buf

ngx_buf_t *ngx_calloc_buf(ngx_pool_t *pool)

メモリプール内に綺麗な ngx_buf_t 構造を生成するマクロ

パラメータ:
  • pool – 構造を生成する先のプール
返り値:

バッファへのポインタ

ngx_create_temp_buf

ngx_buf_t *ngx_create_temp_buf(ngx_pool_t *pool, size_t size)

指定されたサイズの一時バッファを生成する

パラメータ:
  • pool – バッファを生成する先のプール
  • size – バッファに必要なサイズ
返り値:

新しく生成された一時バッファ

バッファチェーン関数

ngx_create_chain_of_bufs

ngx_chain_t *ngx_create_chain_of_bufs(ngx_pool_t *pool, ngx_bufs_t *bufs)

リンクのチェーンと、その中にバッファを指定されたメモリプールから割り当てる

パラメータ:
  • pool – チェーンを追加する先のプール
  • bufs – チェーンについてのバッファの詳細
返り値:

新しいチェーン内の最初のリンク

ngx_chain_get_free_buf

ngx_chain_t *ngx_chain_get_free_buf(ngx_pool_t *p, ngx_chain_t **free)

チェーン内の最初の空いているバッファリンクを見つけ、それを返します。空いているリンクが無い場合、1つを割り当て、それを返します

パラメータ:
  • pool – チェーンされたバッファを取得する先のプール
  • free – バッファのチェーンを示すポインタ
返り値:

最初の空いているチェーンリンク

ngx_free_chain

void ngx_free_chain(ngx_pool_t *pool, ngx_chain_t *cl)

チェーン内のリンクを解放する

パラメータ:
  • pool – リンクが入っているプール
  • cl – 解放するリンク

ngx_chain_add_copy

ngx_int_t ngx_chain_add_copy(ngx_pool_t *pool, ngx_chain_t **chain, ngx_chain_t *in)

バッファされた内容をコピーすること無しに、1つのチェーンを他のチェーンの最後にコピーする。基本的にリンクを既存のチェーンに追加します。

パラメータ:
  • pool – 新しいチェーンが向かうべきプール
  • chain – 新しいリンクが向かうべきチェーン
  • in – コピーするチェーン
返り値:

成功時にはNGX_OK、エラーが起きた場合はNGX_ERROR

ngx_chain_update_chains

void ngx_chain_update_chains(ngx_chain_t **free, ngx_chain_t **busy, ngx_chain_t **out, ngx_buf_tag_t tag)

Moves the buffers from the out to busy and processed chains in busy with tag to the free chain.

パラメータ:
  • free – 空いているバッファのチェーン
  • out – 出力バッファのチェーン
  • busy – busyバッファのチェーン
  • tag – バッファが開いていると識別するためのタグ
TOP
inserted by FC2 system