1
This commit is contained in:
parent
ae48477b57
commit
18a1238512
@ -44,6 +44,21 @@ namespace a8
|
|||||||
return (char*)malloc(len);
|
return (char*)malloc(len);
|
||||||
} else {
|
} else {
|
||||||
size_t index = GetIndex(real_len);
|
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)
|
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;
|
return 0;
|
||||||
} else if (size <= 128 * std::pow(2, 1)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 1)) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (size <= 128 * std::pow(2, 2)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 2)) {
|
||||||
return 2;
|
return 2;
|
||||||
} else if (size <= 128 * std::pow(2, 3)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 3)) {
|
||||||
return 3;
|
return 3;
|
||||||
} else if (size <= 128 * std::pow(2, 4)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 4)) {
|
||||||
return 4;
|
return 4;
|
||||||
} else if (size <= 128 * std::pow(2, 5)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 5)) {
|
||||||
return 5;
|
return 5;
|
||||||
} else if (size <= 128 * std::pow(2, 6)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 6)) {
|
||||||
return 6;
|
return 6;
|
||||||
} else if (size <= 128 * std::pow(2, 7)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 7)) {
|
||||||
return 7;
|
return 7;
|
||||||
} else if (size <= 128 * std::pow(2, 8)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 8)) {
|
||||||
return 8;
|
return 8;
|
||||||
} else if (size <= 128 * std::pow(2, 9)) {
|
} else if (size <= BASE_BLOCK_SIZE * std::pow(2, 9)) {
|
||||||
return 9;
|
return 9;
|
||||||
} else {
|
} else {
|
||||||
abort();
|
abort();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user