| 53 | } |
| 54 | |
| 55 | Status SystemAllocator::Allocate(int64_t len, BufferPool::BufferHandle* buffer) { |
| 56 | DCHECK_GE(len, min_buffer_len_); |
| 57 | DCHECK_LE(len, BufferPool::MAX_BUFFER_BYTES); |
| 58 | DCHECK(BitUtil::IsPowerOf2(len)) << len; |
| 59 | |
| 60 | uint8_t* buffer_mem; |
| 61 | if (FLAGS_mmap_buffers) { |
| 62 | RETURN_IF_ERROR(AllocateViaMMap(len, &buffer_mem)); |
| 63 | } else { |
| 64 | RETURN_IF_ERROR(AllocateViaMalloc(len, &buffer_mem)); |
| 65 | } |
| 66 | buffer->Open(buffer_mem, len, CpuInfo::GetCurrentCore()); |
| 67 | return Status::OK(); |
| 68 | } |
| 69 | |
| 70 | Status SystemAllocator::AllocateViaMMap(int64_t len, uint8_t** buffer_mem) { |
| 71 | int64_t map_len = len; |