~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.1.0/third_party/srtp/crypto/kernel/alloc.c

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2015-01-07 14:51:16 UTC
  • mfrom: (4.3.5 sid)
  • Revision ID: package-import@ubuntu.com-20150107145116-yxnafinf4lrdvrmx
Tags: 1.4.1-0.1ubuntu1
* Merge with Debian, remaining changes:
 - Drop soprano, nepomuk build-dep
* Drop ubuntu patches, now upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * alloc.c
3
 
 *
4
 
 * memory allocation and deallocation 
5
 
 *
6
 
 * David A. McGrew
7
 
 * Cisco Systems, Inc.
8
 
 */
9
 
/*
10
 
 *      
11
 
 * Copyright (c) 2001-2006 Cisco Systems, Inc.
12
 
 * All rights reserved.
13
 
 * 
14
 
 * Redistribution and use in source and binary forms, with or without
15
 
 * modification, are permitted provided that the following conditions
16
 
 * are met:
17
 
 * 
18
 
 *   Redistributions of source code must retain the above copyright
19
 
 *   notice, this list of conditions and the following disclaimer.
20
 
 * 
21
 
 *   Redistributions in binary form must reproduce the above
22
 
 *   copyright notice, this list of conditions and the following
23
 
 *   disclaimer in the documentation and/or other materials provided
24
 
 *   with the distribution.
25
 
 * 
26
 
 *   Neither the name of the Cisco Systems, Inc. nor the names of its
27
 
 *   contributors may be used to endorse or promote products derived
28
 
 *   from this software without specific prior written permission.
29
 
 * 
30
 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31
 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32
 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
33
 
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
34
 
 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
35
 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36
 
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
37
 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
 
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40
 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
41
 
 * OF THE POSSIBILITY OF SUCH DAMAGE.
42
 
 *
43
 
 */
44
 
 
45
 
#include "alloc.h"
46
 
#include "crypto_kernel.h"
47
 
 
48
 
/* the debug module for memory allocation */
49
 
 
50
 
debug_module_t mod_alloc = {
51
 
  0,                  /* debugging is off by default */
52
 
  "alloc"             /* printable name for module   */
53
 
};
54
 
 
55
 
/*
56
 
 * Nota bene: the debugging statements for crypto_alloc() and
57
 
 * crypto_free() have identical prefixes, which include the addresses
58
 
 * of the memory locations on which they are operating.  This fact can
59
 
 * be used to locate memory leaks, by turning on memory debugging,
60
 
 * grepping for 'alloc', then matching alloc and free calls by
61
 
 * address.
62
 
 */
63
 
 
64
 
#ifdef SRTP_KERNEL_LINUX
65
 
 
66
 
#include <linux/interrupt.h>
67
 
 
68
 
void *
69
 
crypto_alloc(size_t size) {
70
 
  void *ptr;
71
 
 
72
 
  ptr = kmalloc(size, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
73
 
 
74
 
  if (ptr) {
75
 
    debug_print(mod_alloc, "(location: %p) allocated", ptr);
76
 
  } else
77
 
    debug_print(mod_alloc, "allocation failed (asked for %d bytes)\n", size);
78
 
 
79
 
  return ptr;
80
 
}
81
 
 
82
 
void 
83
 
crypto_free(void *ptr) {
84
 
 
85
 
  debug_print(mod_alloc, "(location: %p) freed", ptr);
86
 
 
87
 
  kfree(ptr);
88
 
}
89
 
 
90
 
 
91
 
#elif defined(HAVE_STDLIB_H)
92
 
 
93
 
void *
94
 
crypto_alloc(size_t size) {
95
 
  void *ptr;
96
 
 
97
 
  ptr = malloc(size);
98
 
    
99
 
  if (ptr) {
100
 
    debug_print(mod_alloc, "(location: %p) allocated", ptr);
101
 
  } else
102
 
    debug_print(mod_alloc, "allocation failed (asked for %d bytes)\n", size);
103
 
    
104
 
  return ptr;
105
 
}
106
 
 
107
 
void 
108
 
crypto_free(void *ptr) {
109
 
 
110
 
  debug_print(mod_alloc, "(location: %p) freed", ptr);
111
 
 
112
 
  free(ptr);
113
 
}
114
 
 
115
 
#else  /* we need to define our own memory allocation routines */
116
 
 
117
 
#error no memory allocation defined yet 
118
 
 
119
 
#endif