- Timestamp:
- Aug 27, 2006, 9:45:16 AM (19 years ago)
- Location:
- trunk/libc
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libc/include/emx/umalloc.h
r2312 r2783 717 717 void _um_default_release (Heap_t, void *, size_t); 718 718 void _um_default_shrink (Heap_t, void *, size_t, size_t *); 719 int _um_find_bucket (size_t);720 719 void _um_free_maybe_lock (void *, int); 721 720 Heap_t _um_init_default_regular_heap (void); … … 733 732 void _um_lump_unlink_heap (Heap_t, struct _um_lump *); 734 733 int _um_walk_no_lock (Heap_t, _um_callback2 *, void *); 734 void _um_abort (const char *, ...) __attribute__((__noreturn__)); 735 735 736 736 … … 808 808 809 809 810 void _um_abort (const char *, ...) __attribute__((__noreturn__)); 810 static inline int _um_find_bucket (size_t rsize) 811 { 812 int bucket = __fls (rsize) - 1 - _UM_MIN_BUCKET; 813 if (bucket < 0) 814 bucket = 0; 815 else if (bucket >= _UM_BUCKETS) 816 return _UM_BUCKETS - 1; 817 #if defined(__LIBC_STRICT) || defined(DEBUG) 818 if ( _UM_BUCKET_SIZE (bucket) > rsize 819 || _UM_BUCKET_SIZE (bucket+1) <= rsize) 820 _um_abort ("_um_find_bucked: rsize=%x\n", rsize); 821 #endif 822 return bucket; 823 } 824 811 825 812 826 #if defined (__cplusplus) -
trunk/libc/src/libc/libc.def
r2712 r2783 1123 1123 "__um_default_release" @1136 1124 1124 "__um_default_shrink" @1137 1125 "__um_find_bucket" @11381125 "__um_find_bucket" = "___nullstub_function" @1138 1126 1126 "__um_free_maybe_lock" @1139 1127 1127 "__um_init_default_regular_heap" @1140 -
trunk/libc/src/libc/malloc/imisc.c
r2205 r2783 9 9 #include <sys/fmutex.h> 10 10 #include <emx/umalloc.h> 11 12 /* Leave FLS undefined if __fls() is not available. __fls() is13 similar to ffs(), but finds the last (most significant) bit. */14 15 #define FLS(x) __fls(x)16 17 18 int _um_find_bucket (size_t rsize)19 {20 int bucket;21 22 #ifdef FLS23 bucket = FLS (rsize) - 1 - _UM_MIN_BUCKET;24 if (bucket < 0)25 bucket = 0;26 else if (bucket >= _UM_BUCKETS)27 return _UM_BUCKETS - 1;28 assert (_UM_BUCKET_SIZE (bucket) <= rsize);29 assert (_UM_BUCKET_SIZE (bucket+1) > rsize);30 return bucket;31 #else32 for (bucket = _UM_BUCKETS - 1; bucket >= 0; --bucket)33 if (_UM_BUCKET_SIZE (bucket) <= rsize)34 return bucket;35 _um_abort ("_um_find_bucked: rsize=%x\n", rsize); /* RSIZE is probably not rounded! */36 #endif37 }38 11 39 12
Note:
See TracChangeset
for help on using the changeset viewer.