RT-Thread / RT-Thread/rt-thread

ringbuffer write bug?

Offen
#703 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C
Sterne
12.2k
Forks
5.4k
Ø Merge
4 T. 12 Std.
Gemergte PRs (30 T.)
40

Beschreibung

rt_size_t rt_ringbuffer_put_force(struct rt_ringbuffer *rb,
                            const rt_uint8_t     *ptr,
                            rt_uint16_t           length)
{
    if (rb->buffer_size - rb->write_index > length)
    {
        /* read_index - write_index = empty space */
        memcpy(&rb->buffer_ptr[rb->write_index], ptr, length);
    }

如果rb->buffer_size - rb->write_index == length,这种情况理论上是可以一次性写入的吧?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie bei der im Issue gezeigten Funktion rt_ringbuffer_put_force und untersuchen Sie, wie buffer_size, write_index und length den beschreibbaren Bereich definieren. Überprüfen Sie den Grenzfall, in dem der verbleibende Speicherplatz length entspricht, und bestimmen Sie anschließend anhand der umgebenden Ringpuffer-Implementierung das erwartete Verhalten, bevor Sie die Bedingung aktualisieren oder dokumentieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c
Bereich
embedded-iot, operating-systems
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.