123456789101112131415161718192021222324252627 |
- #pragma once
- #include "software-modes.h"
- // Construction d'un identificateur unique par le préprocesseur
- // http://stackoverflow.com/questions/12697709/use-function-and-line-to-construct-identifier-name
- #define CAT_FOR_UNIQUE_IDENTIFIER_2(a,b) a##b
- #define CAT_FOR_UNIQUE_IDENTIFIER(a,b) CAT_FOR_UNIQUE_IDENTIFIER_2(a,b)
- #define UNIQUE_IDENTIFIER CAT_FOR_UNIQUE_IDENTIFIER (zzUniqueIdentifier_, __COUNTER__)
- // Inscrire l'adresse de la routine dans la section '"boot.routine.array' pour exécution automatique lors du démarrage
- #define MACRO_BOOT_ROUTINE(ROUTINE) \
- static void (* UNIQUE_IDENTIFIER) (BOOT_MODE) \
- __attribute__ ((section ("boot.routine.array"))) \
- __attribute__ ((unused)) \
- __attribute__ ((used)) = ROUTINE ;
- // Inscrire l'adresse de la routine dans la section 'init.routine.array' pour exécution automatique lors du démarrage
- #define MACRO_INIT_ROUTINE(ROUTINE) \
- static void (* UNIQUE_IDENTIFIER) (INIT_MODE) \
- __attribute__ ((section ("init.routine.array"))) \
- __attribute__ ((unused)) \
- __attribute__ ((used)) = ROUTINE ;
|