Forum: PC Hard- und Software Memory Pool - GrundsätzlichsTes


von ichbinblöd (Gast)


Lesenswert?

Hallo Forum.
Ich bin dabei mich in ein Echtzeitbetriebssystem einzulesen (CMSIS-RTX) 
und muss nun meinen C Code dafür anpassen.
Die Funktionen die malloc() und free() verwenden muss ich umschreiben, 
am besten mit Memory Pools.
http://www.keil.com/pack/doc/cmsis_rtx/group___c_m_s_i_s___r_t_o_s___pool_mgmt.html
Ich muss sagen alles was im Internet steht scheint schon für Leute 
geschrieben sein, die die Dinger schon kennen, ausserdem ist mein 
Englisch anscheinend zu schlecht.
Ich bin eigentlich auf der Suche nach den EINFACHSTEN Antworten, alle 
Tutorials erzeugen nur einen Memory Pool und Löschen ihn wieder, ich 
möchte aber wissen:
-Wie schreib ich nun Daten da rein?
-Wie lese ich wieder Daten raus?
-Kann ich einen Pool Initialisieren der sich wie ein Array verhält?
-Ich möchte auch Funktionen wie vsnprintf oder sprintf damit verwenden, 
gibt mir der Memory Pool einfach einen Zeiger in den ich reinschreiben 
kann?
Glaubt mir, die EINFACHSTEN Sachen erklärt das Internet nicht.

von ichbinblöd (Gast)


Lesenswert?

huch, nochdazu im falschen Forum.
tut leid.

von Mr.T (Gast)


Lesenswert?

ichbinblöd schrieb:
> -Wie schreib ich nun Daten da rein?
Du kriegst doch die Startadr. des Pools zurück.
> -Wie lese ich wieder Daten raus?
Auch über die Adresse
> -Kann ich einen Pool Initialisieren der sich wie ein Array verhält?
Solange sizeof(array) <= sizeof(memoryBlock) gilt, sehe ich erstmal 
keinen Hinderungsgrund
> -Ich möchte auch Funktionen wie vsnprintf oder sprintf damit verwenden,
Nimm snprintf statt sprintf und gib als size die Größe eine Blocks an.

Du kannst anscheinend auch Pools anlegen, deren Blockgröße sich 
unterscheidet und nimmst den passenden, der gerade noch deine Anfordeung 
erfüllen kann.

Oder du nimmst ein RTOS, das malloc() free() gleich unterstützt.

von Mr.T (Gast)


Lesenswert?

Mr.T schrieb:
>> -Wie schreib ich nun Daten da rein?
> Du kriegst doch die Startadr. des Pools zurück.

Muss heißen: Du kriegst doch die Startadr. des Blocks zurück.

von ichbinblöd (Gast)


Lesenswert?

Hallo Mr T.
Ich schreibe einfach in den Memory Pool so rein wie in jeden anderen 
Speicher mit Pointer?
So einfach?
Warum schreibt diese Offensichtlichkeit niemand in die Tutorials...

von Mr.T (Gast)


Lesenswert?

So wie ich das verstehe, besteht ein Pool aus N Blöcken gleicher Größe.
Ergo arbeitest Du mit Blöcken (im Pool).

> Warum schreibt diese Offensichtlichkeit niemand in die Tutorials...
Weil es offensichtlich ist? Vielleicht? ;-)

von ichbinblöd (Gast)


Lesenswert?

najaa.. grml
danke auf jeden fall!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.