Loading...
Searching...
No Matches
Pool Cleanup Functions
Apache Portability Runtime library » Memory Pool Functions
Collaboration diagram for Pool Cleanup Functions:

## Functions

void | apr_pool_cleanup_register (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *), apr_status_t(*child_cleanup)(void *))
void | apr_pool_pre_cleanup_register (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *))
void | apr_pool_cleanup_kill (apr_pool_t *p, const void *data, apr_status_t(*cleanup)(void *))
void | apr_pool_child_cleanup_set (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *), apr_status_t(*child_cleanup)(void *))
apr_status_t | apr_pool_cleanup_run (apr_pool_t *p, void *data, apr_status_t(*cleanup)(void *))
apr_status_t | apr_pool_cleanup_null (void *data)
void | apr_pool_cleanup_for_exec (void)

## Detailed Description

Cleanups are performed in the reverse order they were registered. That is: Last In, First Out. A cleanup function can safely allocate memory from the pool that is being cleaned up. It can also safely register additional cleanups which will be run LIFO, directly after the current cleanup terminates. Cleanups have to take caution in calling functions that create subpools. Subpools, created during cleanup will NOT automatically be cleaned up. In other words, cleanups are to clean up after themselves.

## Function Documentation

## apr_pool_child_cleanup_set()

void apr_pool_child_cleanup_set | ( | apr_pool_t * | p,
|  | const void * | data,
|  | apr_status_t(*)(void *) | plain_cleanup,
|  | apr_status_t(*)(void *) | child_cleanup
| ) |  |

Replace the child cleanup function of a previously registered cleanup.

The cleanup most recently registered with p having the same values of data and plain_cleanup will have the registered child cleanup function replaced with child_cleanup.

Parameters

  p | The pool of the registered cleanup
  data | The data of the registered cleanup
  plain_cleanup | The plain cleanup function of the registered cleanup
  child_cleanup | The function to register as the child cleanup

## apr_pool_cleanup_for_exec()

void apr_pool_cleanup_for_exec | ( | void |  | ) |

Run all registered child cleanups, in preparation for an exec() call in a forked child – close files, etc., but don't flush I/O buffers, don't wait for subprocesses, and don't free any memory.

## apr_pool_cleanup_kill()

void apr_pool_cleanup_kill | ( | apr_pool_t * | p,
|  | const void * | data,
|  | apr_status_t(*)(void *) | cleanup
| ) |  |

Remove a previously registered cleanup function.

The cleanup most recently registered with p having the same values of data and cleanup will be removed.

Parameters

  p | The pool to remove the cleanup from
  data | The data of the registered cleanup
  cleanup | The function to remove from cleanup

Remarks
  For some strange reason only the plain_cleanup is handled by this function

## apr_pool_cleanup_null()

apr_status_t apr_pool_cleanup_null | ( | void * | data | ) |

An empty cleanup function.

Passed to apr_pool_cleanup_register() when no cleanup is required.

Parameters

  data | The data to cleanup, will not be used by this function.

## apr_pool_cleanup_register()

void apr_pool_cleanup_register | ( | apr_pool_t * | p,
|  | const void * | data,
|  | apr_status_t(*)(void *) | plain_cleanup,
|  | apr_status_t(*)(void *) | child_cleanup
| ) |  |

Register a function to be called when a pool is cleared or destroyed

Parameters

  p | The pool to register the cleanup with
  data | The data to pass to the cleanup function.
  plain_cleanup | The function to call when the pool is cleared or destroyed
  child_cleanup | The function to call when a child process is about to exec - this function is called in the child, obviously!

## apr_pool_cleanup_run()

apr_status_t apr_pool_cleanup_run | ( | apr_pool_t * | p,
|  | void * | data,
|  | apr_status_t(*)(void *) | cleanup
| ) |  |

Run the specified cleanup function immediately and unregister it.

The cleanup most recently registered with p having the same values of data and cleanup will be removed and cleanup will be called with data as the argument.

Parameters

  p | The pool to remove the cleanup from
  data | The data to remove from cleanup
  cleanup | The function to remove from cleanup

## apr_pool_pre_cleanup_register()

void apr_pool_pre_cleanup_register | ( | apr_pool_t * | p,
|  | const void * | data,
|  | apr_status_t(*)(void *) | plain_cleanup
| ) |  |

Register a function to be called when a pool is cleared or destroyed.

Unlike apr_pool_cleanup_register which registers a cleanup that is called AFTER all subpools are destroyed, this function registers a function that will be called before any of the subpools are destroyed.

Parameters

  p | The pool to register the cleanup with
  data | The data to pass to the cleanup function.
  plain_cleanup | The function to call when the pool is cleared or destroyed