Met behulp van IPC voor draadloze codering met Intel Galileo (6 / 10 stap)

Stap 6: De schrijven/lezen functies

Om te schrijven aan de buffer, probeert de schets eerst te verlagen van sem_space met de semop functie. Het maakt gebruik van een struct (gedefinieerd in IPCBuffer.h als sem_up en sem_down), waarvan de drie waarden de index in de array van de semafoor geven (weer, altijd 0 voor deze code), hoeveel we willen increment (positief getal) of verlagende (negatieve integer geretourneerd), en optionele besturingsvlaggen, respectievelijk. De derde waarde 0 hier betekent dat het proces wordt geblokkeerd als is het onvermogend voor het verlagen van de semafoor (dat wil zeggen de telling is op 0).

Nadat de decrement naar sem_space lukt, weten we dat er ruimte voor ten minste één gegevenseenheid is. We staan alleen een proces te lezen of schrijven van een eenheid van gegevens tegelijk of anders wij zou indruisen tegen de interpretatie van de semafoor de graaf. We weten niet de waarde van de semafoor, alleen dat het was niet 0 toen we semop genoemd op sem_space. We proberen daarna te verlagen van sem_lock. Als het blokkeert dan dat betekent is een ander proces toegang krijgen tot het gedeelde geheugen segment. Wanneer de schets opgeheven wordt zal het het hoofd index en een breedte van waarde van bytes uit geheugen adres bron te kopiëren naar de juiste locatie in het gedeelde geheugen lezen. De hoofd index is verhoogd en teruggeschreven naar gedeeld geheugen voordat het verhogen van de sem_lock.

De laatste stap is het verhogen van sem_data. Hierdoor kunnen andere processen om te zien dat nieuwe geldige gegevens in de buffer is gelegd. Het is de moeite waard erop te wijzen dat we niet extra staat hoeven om de situatie waar de kop en staart waarden gelijk zijn. Dit gebeurt zowel wanneer de buffer leeg is en als het vol is. De semaforen sem_space en sem_data bijhouden van hoeveel ruimte er is om gegevens te worden gelezen uit of weggeschreven naar de buffer. Wanneer sem_space waarde 0 heeft bereikt, bijvoorbeeld, betekent dit dat de buffer vol is en geen proces probeert te schrijven naar de buffer slagen zullen tot een ander proces element uit de buffer leest.

De Lees methode volgt de dezelfde grondgedachte voor schrijven, maar het verlaagt sem_data eerst en de bijbehorende sem_space aan het einde samen met de staart-index gebruikt om te lezen uit de buffer. De Python script volgt hetzelfde patroon voor lezen en schrijven alleen met de API van de sysv_ipc module.

Gerelateerde Artikelen

Aan de slag met Intel Galileo

Aan de slag met Intel Galileo

Ik heb onlangs Intel Galileo vanuitMicroscoop aangezien ik behoor tot de finalistIoT concurrentie. Nu ben ik mijn tijd doen een heleboel creatieve materialen met mijn Galileo doorbrengen. Ik schrijf dit instructable zijn voor iedereen die wilde aan d
Interfacing Keypad en LCD-scherm met Intel Galileo

Interfacing Keypad en LCD-scherm met Intel Galileo

IntroductieIn deze tutorial ga je laten zien hoe interface van vloeibare kristallendisplay en een toetsenbord met Intel Galileo. In deze tutorial zullen we gebruiken een 16 x 2 LCD, 2 rijen of teken in 16 kolommen weergegeven.Stap 1: De onderdelen;On
Raadselachtig Ladenkastje opent met behulp van twitter en draadloze energie

Raadselachtig Ladenkastje opent met behulp van twitter en draadloze energie

Een raadselachtige cadeau! Mijn "slachtoffer" wordt gegeven drie vakken:Een zeer kleine doos vergrendeld met ketting en een hangslot.Een vergrendelde kleine doos met geen buiten sloten, dat is gesloten en heeft een reflecterende bovenste deksel.
Robo-auto met behulp van 360 ° servomotor draadloze

Robo-auto met behulp van 360 ° servomotor draadloze

smart auto robot met behulp van 360 graden continue rotatie servomotor.Stap 1: onderdelen Stap 2: maken van stappen Stap 3: prototype Stap 4: draadloze communicatie systeem - zigbee Stap 5: programma #include < Servo.h >/////////////////////////////
Met behulp van Codea voor de iPad

Met behulp van Codea voor de iPad

Codea door twee woont links is een van de hoogste kwaliteit codering omgevingen beschikbaar voor de iPad. Met behulp van Codea op de iPad is veruit de beste codering van de ervaring die men zou kunnen hopen op een iPad. Voor degenen onder u die nieuw
Met behulp van gelatine voor schimmels en protheses

Met behulp van gelatine voor schimmels en protheses

na mijn ' ible over alginaat gebruiken als een mal maken materiaal, er waren veel vragen over materialen en het verkrijgen van hen. Hier is een andere methode die gebruikmaakt van alleen de items die beschikbaar zijn.Gelatine is een veel genegeerde p
Disco Party licht met behulp van decoraties voor de feestdagen van de overgebleven

Disco Party licht met behulp van decoraties voor de feestdagen van de overgebleven

mijn nichtje is van plan om een Disco thema verjaardagsfeest dit jaar, en dus we hebben al op zoek naar goedkoop disco lichten voor haar partij.  Voor Halloween hadden we verschillende knipperende LED decoratieve geest die waren gekocht van de dollar
A maken 3D Print van begin tot het bestand met behulp van Zbrush voor Beginners

A maken 3D Print van begin tot het bestand met behulp van Zbrush voor Beginners

U moet:Een computer Zbrush 4R4 of een vergelijkbare groep Z plugin 3D Printer exporteur (vrij van Pixologic van web-pagina)Tijd: 2-3 uurOK, dit is mijn eerste instructable en ik hoop dat u het nuttig vinden. Het doel is om te laten zien dat jullie he
Met behulp van Diodes voor ventilator controle.

Met behulp van Diodes voor ventilator controle.

Dit in alternatief voor het gebruik van reostaten en chips voor het beheersen van de snelheid van de ventilator.Het idee voor deze kwam uit http://www.cpemma.co.uk/sdiodes.html nu http://www.pcsilencioso.com/cpemma/sdiodes.html en ik wilde uitleggen
Met behulp van Printcraft voor afdrukken in 3D

Met behulp van Printcraft voor afdrukken in 3D

3D printen kunnen een heleboel plezier. Er zijn zoveel gratis printables op sites zoals Thingiverse die u zal nooit opraken van de dingen om af te drukken. Maar wat als u liever uw eigen oorspronkelijke object zou afdrukken? SketchUp en blender zijn
Met behulp van curven voor kleur enhacement

Met behulp van curven voor kleur enhacement

Deze tutorial is bedoeld voor beginners, het is een eenvoudige manier om kleuren te verbeteren en het aantal drama toevoegen aan uw foto's met behulp van curven in Photoshop. Ik heb een oudere versie van Photoshop CS5 die ik op Mac draait ben, er zij
Maken van foto's van truc met behulp van Gimp voor Windows software

Maken van foto's van truc met behulp van Gimp voor Windows software

In de foto hierboven, lijkt het dat ik heb een 32 Ford coupe in mijn oprit met draaiende motor en uitlaat dampen die uit de dubbele uitlaat pijpen.  Dit is eigenlijk een schaalmodel 1/24, die ik uitgebreid aan het passen van de scène.  Terwijl sommig
Met behulp van Sugru voor een nieuwe crockpot deksel greep

Met behulp van Sugru voor een nieuwe crockpot deksel greep

de plastic handvat brak het glas deksel van onze crockpot deksel.Ik heb besloten dat ik de Sugru genadig kopen van Instructables en Sugru voor een wedstrijd zou gebruiken om het maken van een nieuwe greep voor het deksel.Stap 1: Maak het handvat-onde
Pirate's hoed met behulp van papier voor Halloween

Pirate's hoed met behulp van papier voor Halloween

Hoi allemaalIn dit instructable. Ik zal delen hoe ik maakte een eenvoudige pirate's hoed voor mijn zoon voor Halloween.Dit is eenvoudige ambacht, zeer eenvoudig te maken, nauwelijks neemt 2 uurStap 1: materialenWat we nodig hebben?Zwarte grafiek papi