Projekte
workwind
Multitasking optimiert
mutex.h
Projekte
Forum
Doku
Öffentliche Projekte
Startseite
Beispielprogramme
Projekte von anderen
Welcome
Username
Passwort
Eingeloggt bleiben
Zugangsdaten vergessen?
Registrieren
Projektverwaltung
⇨ Please choose! ⇦
——————————————————
✎ Create new project...
★ Browse existing projects...
——————————————————
⚬ MotorTest#1
⚬ C Tutorial 8#1
⚬ NIBO2 C Project#1
⚙ C Tutorial 15#1
⚬ 2010_11_18_el_test001#1
Multitask...optimiert
cdll.c
cdll.h
condition.c
condition.h
main.c
mutex.c
mutex.h
scheduler.S
semaphore.c
semaphore.h
thread.c
thread.h
Project details
Compiler settings
Nachrichten
Sie sind nicht eingeloggt.
Neuigkeiten
★
NiboRoboLib 3.6
2017-01-17: Neue Version 3.6
★
NiboRoboLib 3.4.1
2016-04-16: Neue Version 3.4.1
★
Coding Tutorial
2015-11-22: Jetzt auch für den NIBO burger!
Site-Statistic
7426 private projects
385 public projects
16180353 lines compiled
58212 builds
NIBO
@
multitasking_opt/mutex.h [read only]
#ifndef MUTEX_H #define MUTEX_H #include "thread.h" /** * Mit einem Mutex kann eine einzelne Resource vor gleichzeitigem Zugriff geschützt werden: * Es gibt immer höchstens einen Besitzer, der den Mutex "gelockt" hat! Erst nach einem "unlock" kann * ein anderer Thread auf den Mutex zugreifen. */ typedef struct _mutex_s { cdll_t waiting_threads; thread_t * locker; uint16_t counter; } mutex_t; /** * Mutex initialisieren */ void mutext_init(mutex_t * mutex); /** * */ void mutext_delete(mutex_t * mutex); /** * Nach dem Erfolgreichen Aufruf dieser Funktion gehört der Mutext dem aufrufenden Thread. * Andere Threads die mutext_lock aufrufen müssen solange warten bis der Mutex wieder freigegeben wird. * Der Besitzende Thread darf die Funktion mehrmals aufrufen, der Mutex wird dann erst wieder freigegeben * wenn mutext_unlock genausooft aufgerufen wurde. * @param timeout: Wert in Ticks / TO_POLL (nicht warten) / TO_INF (ewig warten) * @result 1=Erfolgreich / 0=Fehler */ uint8_t mutext_lock(mutex_t * mutex, uint16_t timeout); /** * Freigabe des Mutex. Falls mutext_lock vom besitzenden Thread mehrfach aufgerufen wurde muss auch die * Funktion mutext_unlock mehrfach aufgerufen werden! */ void mutext_unlock(mutex_t * mutex); /** * Nach dem Erfolgreichen Aufruf dieser Funktion gehört der Mutext dem Interrupt. * Die Funktion kehrt direkt mit dem Ergebnis zurück ob der Mutex gelockt werden konnte. * Andere Threads die mutext_lock aufrufen müssen solange warten bis der Mutex wieder freigegeben wird. * Der Interrupt darf die Funktion mehrmals aufrufen, der Mutex wird jedoch erst wieder freigegeben * wenn mutext_unlockISR genausooft aufgerufen wurde. */ uint8_t mutext_lockISR(mutex_t * mutex); /** * Freigabe des Mutex. Falls mutext_lock vom Interrupt mehrfach aufgerufen wurde muss auch die * Funktion mutext_unlockISR mehrfach aufgerufen werden! */ void mutext_unlockISR(mutex_t * mutex); #endif
Compiler results:
Werbung
Online
almeda92990951273114
celindapillinger3
eddieachen364927
gilbertvaldivia87
kimlindberg1853496
shawnacropper6613309