1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/netube-RingBuffer

 / Детали:

Вопрос о RBC_Get_Chapter_Free_Size

Предстоит сделать
Владелец
Создано  
30.11.2024

/**

  • \brief Получение количества свободных сегментов
  • \param[in] rbc_handle: Дескриптор кольцевого буфера главы
  • \return Возвращает количество свободных сегментов
    /
    uint32_t RBC_Get_Chapter_Free_Size(ring_buffer_chapter rbc_handle) {
    return RB_Get_FreeSize(&(rbc_handle->chapter_handle)) / 4 ;
    }
    Почему после получения размера необходимо делить на 4? В процессе отладки я обнаружил, что buffer_chapter использует только одну четвёртую часть и выдаёт сообщение о том, что он заполнен. Какова цель этого подхода?
    Похоже, это сделано для использования функций RB_Write_String и RB_Read_String. Однако использование этих функций для принудительного преобразования uint32_t
    в uint8_t
    приводит к ошибкам при вычислении длины. Поскольку RB_Write_String и RB_Read_String определяют продолжение записи на основе положения заголовка и хвоста, это может привести к преждевременному ошибочному выводу о заполнении кэша. Простое деление на 4 не решает эту проблему.
    Входное изображение
    Входное изображение
    Входное изображение
    Входное изображение

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/netube-RingBuffer.git
git@api.gitlife.ru:oschina-mirror/netube-RingBuffer.git
oschina-mirror
netube-RingBuffer
netube-RingBuffer