src/os/unix/ngx_alloc.c - nginx-1.7.10

Global variables defined

Functions defined

Source code


  1. /*
  2. * Copyright (C) Igor Sysoev
  3. * Copyright (C) Nginx, Inc.
  4. */


  5. #include <ngx_config.h>
  6. #include <ngx_core.h>


  7. ngx_uint_t  ngx_pagesize;
  8. ngx_uint_t  ngx_pagesize_shift;
  9. ngx_uint_t  ngx_cacheline_size;


  10. void *
  11. ngx_alloc(size_t size, ngx_log_t *log)
  12. {
  13.     void  *p;

  14.     p = malloc(size);
  15.     if (p == NULL) {
  16.         ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
  17.                       "malloc(%uz) failed", size);
  18.     }

  19.     ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, log, 0, "malloc: %p:%uz", p, size);

  20.     return p;
  21. }


  22. void *
  23. ngx_calloc(size_t size, ngx_log_t *log)
  24. {
  25.     void  *p;

  26.     p = ngx_alloc(size, log);

  27.     if (p) {
  28.         ngx_memzero(p, size);
  29.     }

  30.     return p;
  31. }


  32. #if (NGX_HAVE_POSIX_MEMALIGN)

  33. void *
  34. ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
  35. {
  36.     void  *p;
  37.     int    err;

  38.     err = posix_memalign(&p, alignment, size);

  39.     if (err) {
  40.         ngx_log_error(NGX_LOG_EMERG, log, err,
  41.                       "posix_memalign(%uz, %uz) failed", alignment, size);
  42.         p = NULL;
  43.     }

  44.     ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,
  45.                    "posix_memalign: %p:%uz @%uz", p, size, alignment);

  46.     return p;
  47. }

  48. #elif (NGX_HAVE_MEMALIGN)

  49. void *
  50. ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
  51. {
  52.     void  *p;

  53.     p = memalign(alignment, size);
  54.     if (p == NULL) {
  55.         ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
  56.                       "memalign(%uz, %uz) failed", alignment, size);
  57.     }

  58.     ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,
  59.                    "memalign: %p:%uz @%uz", p, size, alignment);

  60.     return p;
  61. }

  62. #endif