1
This commit is contained in:
parent
ae48477b57
commit
18a1238512
@ -44,6 +44,21 @@ namespace a8
|
||||
return (char*)malloc(len);
|
||||
} else {
|
||||
size_t index = GetIndex(real_len);
|
||||
|
||||
list_head* free_node = nullptr;
|
||||
{
|
||||
lock_.lock();
|
||||
free_node = &free_list_[index];
|
||||
if (list_empty(free_node)) {
|
||||
free_node = nullptr;
|
||||
} else {
|
||||
list_del(free_node);
|
||||
}
|
||||
lock_.unlock();
|
||||
}
|
||||
if (free_node) {
|
||||
return (char*)free_node + sizeof(BufHead);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,25 +68,25 @@ namespace a8
|
||||
|
||||
size_t FifoBuffer::GetIndex(size_t size)
|
||||
{
|
||||
if (size <= 128 * std::pow(2, 0)) {
|
||||
if (size <= BASE_BLOCK_SIZE * std::pow(2, 0)) {
|
||||
return 0;
|
||||
} else if (size <= 128 * std::pow(2, 1)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 1)) {
|
||||
return 1;
|
||||
} else if (size <= 128 * std::pow(2, 2)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 2)) {
|
||||
return 2;
|
||||
} else if (size <= 128 * std::pow(2, 3)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 3)) {
|
||||
return 3;
|
||||
} else if (size <= 128 * std::pow(2, 4)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 4)) {
|
||||
return 4;
|
||||
} else if (size <= 128 * std::pow(2, 5)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 5)) {
|
||||
return 5;
|
||||
} else if (size <= 128 * std::pow(2, 6)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 6)) {
|
||||
return 6;
|
||||
} else if (size <= 128 * std::pow(2, 7)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 7)) {
|
||||
return 7;
|
||||
} else if (size <= 128 * std::pow(2, 8)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 8)) {
|
||||
return 8;
|
||||
} else if (size <= 128 * std::pow(2, 9)) {
|
||||
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 9)) {
|
||||
return 9;
|
||||
} else {
|
||||
abort();
|
||||
|
Loading…
x
Reference in New Issue
Block a user