~ubuntu-branches/ubuntu/maverick/dietlibc/maverick

« back to all changes in this revision

Viewing changes to lib/alloc.c

  • Committer: Bazaar Package Importer
  • Author(s): Gerrit Pape
  • Date: 2004-12-23 14:18:36 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20041223141836-laencoi55y3khwy0
Tags: 0.27-7
* debian/diff/ia64-no-fno-omit-frame-pointer.diff: new; don't use
  -fno-omit-frame-pointer on ia64 (works around #286840).
* debian/rules: get VERSION from debian/changelog.
* debian/diff/nice.diff: update; set errno=EPERM on error.

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
#define PAGE_ALIGN(s)   (((s)+MEM_BLOCK_SIZE-1)&(unsigned long)(~(MEM_BLOCK_SIZE-1)))
44
44
 
45
45
/* a simple mmap :) */
 
46
#if defined(__i386__)
 
47
#define REGPARM(x) __attribute__((regparm(x)))
 
48
#else
 
49
#define REGPARM(x)
 
50
#endif
46
51
 
47
 
static void __attribute__((regparm(1))) *do_mmap(size_t size) {
 
52
static void REGPARM(1) *do_mmap(size_t size) {
48
53
  return mmap(0, size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, (size_t)0);
49
54
}
50
55
 
63
68
 
64
69
static inline int __ind_shift() { return (MEM_BLOCK_SIZE==4096)?4:5; }
65
70
 
66
 
static size_t __attribute__((regparm(1))) get_index(size_t _size) {
 
71
static size_t REGPARM(1) get_index(size_t _size) {
67
72
  register size_t idx=0;
68
 
  if (_size) {
 
73
//  if (_size) {        /* we already check this in the callers */
69
74
    register size_t size=((_size-1)&(MEM_BLOCK_SIZE-1))>>__ind_shift();
70
75
    while(size) { size>>=1; ++idx; }
71
 
  }
 
76
//  }
72
77
  return idx;
73
78
}
74
79
 
75
80
/* small mem */
76
 
static void __small_free(void*_ptr,size_t _size) __attribute__((regparm(2)));
 
81
static void __small_free(void*_ptr,size_t _size) REGPARM(2);
77
82
 
78
 
static void __attribute__((regparm(2))) __small_free(void*_ptr,size_t _size) {
 
83
static void REGPARM(2) __small_free(void*_ptr,size_t _size) {
79
84
  __alloc_t* ptr=BLOCK_START(_ptr);
80
85
  size_t size=_size;
81
86
  size_t idx=get_index(size);
86
91
  __small_mem[idx]=ptr;
87
92
}
88
93
 
89
 
static void* __attribute__((regparm(1))) __small_malloc(size_t _size) {
 
94
static void* REGPARM(1) __small_malloc(size_t _size) {
90
95
  __alloc_t *ptr;
91
96
  size_t size=_size;
92
97
  size_t idx;