PIDUINO
Loading...
Searching...
No Matches
Piduino::Scheduler

#include <scheduler.h>

Collaboration diagram for Piduino::Scheduler:

Public Member Functions

 Scheduler (int interruptPriority=-1)
 Constructeur.
 
void noInterrupts ()
 Passage en mode "sans interruptions".
 
void interrupts ()
 Passage en mode "avec interruptions".
 
int interrupPriority () const
 Priorité affectée lors d'un appel à noInterrupts()
 
void setInterrupPriority (int value)
 Modifie la priorité affectée lors d'un appel à noInterrupts()
 

Static Public Member Functions

static void setRtPriority (int priority)
 Définis la priorité en temps réel du thread appelant.
 
static int rtPriority ()
 Priorité du thread appelant.
 
static int rtPriorityMin ()
 Priorité minimale du thread appelant.
 
static int rtPriorityMax ()
 Priorité maximale du thread appelant.
 
static void yield ()
 force le thread appelant à libérer le CPU.
 

Protected Attributes

int _interruptPriority
 
int _previousPriority
 
std::mutex _intMutex
 

Detailed Description

Author
Pascal JEAN
Date
10/03/18

Definition at line 38 of file scheduler.h.

Constructor & Destructor Documentation

◆ Scheduler()

Piduino::Scheduler::Scheduler ( int  interruptPriority = -1)
inline

Constructeur.

Parameters
interruptPrioritypriorité utilisée par noInterrupts(), -1 pour la priorité maximale

Definition at line 45 of file scheduler.h.

References _interruptPriority, _previousPriority, rtPriority(), and rtPriorityMax().

Here is the call graph for this function:

Member Function Documentation

◆ interrupPriority()

int Piduino::Scheduler::interrupPriority ( ) const
inline

Priorité affectée lors d'un appel à noInterrupts()

Definition at line 84 of file scheduler.h.

References _interruptPriority.

◆ interrupts()

void Piduino::Scheduler::interrupts ( )
inline

Passage en mode "avec interruptions".

C'est le mode normal d'un thread qui peut donc être interrompu. Cette fonction doit être appelé pour désactiver le mode "sans interruptions" activé par noInterrupts().

Definition at line 75 of file scheduler.h.

References _intMutex, _previousPriority, and setRtPriority().

Here is the call graph for this function:

◆ noInterrupts()

void Piduino::Scheduler::noInterrupts ( )
inline

Passage en mode "sans interruptions".

Le thread appelant est passé avec une priorité interrupPriority(), l'appel à cette fonction est bloqué jusqu'à libération par interrupts(). Cette fonction ne devrait être appellée que pour des portions de code extrémement critiques.
Elle nécessite de disposer des droits root.

Definition at line 61 of file scheduler.h.

References _interruptPriority, _intMutex, _previousPriority, rtPriority(), and setRtPriority().

Here is the call graph for this function:

◆ rtPriority()

static int Piduino::Scheduler::rtPriority ( )
static

Priorité du thread appelant.

Referenced by noInterrupts(), and Scheduler().

◆ rtPriorityMax()

static int Piduino::Scheduler::rtPriorityMax ( )
static

Priorité maximale du thread appelant.

Referenced by Scheduler().

◆ rtPriorityMin()

static int Piduino::Scheduler::rtPriorityMin ( )
static

Priorité minimale du thread appelant.

◆ setInterrupPriority()

void Piduino::Scheduler::setInterrupPriority ( int  value)
inline

Modifie la priorité affectée lors d'un appel à noInterrupts()

Warning
l'appel à cette fonction, alors que le mode noInterrupts() est activé, bloque le thread appelant.

Definition at line 94 of file scheduler.h.

References _interruptPriority, and _intMutex.

◆ setRtPriority()

static void Piduino::Scheduler::setRtPriority ( int  priority)
static

Définis la priorité en temps réel du thread appelant.

L'algorithme choisie est le round-robin. Sur un système Linux, la valeur normale de priorité est de 20, la valeur minimale est de 1 et la valeur maximale est de 99. Donner une valeur de 99 est une très mauvaise idée qui peut bloquer le système...

Parameters
priorityvaleur de la priorité

Referenced by interrupts(), and noInterrupts().

◆ yield()

static void Piduino::Scheduler::yield ( )
static

force le thread appelant à libérer le CPU.

Le thread est déplacé à la fin de la liste des processus prêts de sa priorité, et un autre thread sera exécuté.

Member Data Documentation

◆ _interruptPriority

int Piduino::Scheduler::_interruptPriority
protected

Definition at line 135 of file scheduler.h.

Referenced by interrupPriority(), noInterrupts(), Scheduler(), and setInterrupPriority().

◆ _intMutex

std::mutex Piduino::Scheduler::_intMutex
protected

Definition at line 137 of file scheduler.h.

Referenced by interrupts(), noInterrupts(), and setInterrupPriority().

◆ _previousPriority

int Piduino::Scheduler::_previousPriority
protected

Definition at line 136 of file scheduler.h.

Referenced by interrupts(), noInterrupts(), and Scheduler().