Не могу въехать, что означает 3-й параметр функции setup_timer, какие он может принимать значения? И судя по макросу есть еще и 4-й параметр, какие флаги можно передать туда?
// my_timer.function, my_timer.data setup_timer( &my_timer, my_timer_callback, 0 );
#define __setup_timer(_timer, _fn, _data, _flags) \
do { \
__init_timer((_timer), (_flags)); \
(_timer)->function = (_fn); \
(_timer)->data = (_data); \
} while (0)