C макросом я пока париться не стал.
А со стеком вот что прикрутил:
Код
template<TPriority pr, word stack_size>
class process : public TBaseProcess
{
public:
INLINE process() : TBaseProcess(&Stack[stack_size/sizeof(TStackItem)], pr, (void (*)())Exec) { }
OS_PROCESS static void Exec();
dword Used_Stack_Size() {return (dword)(StackPointer - Stack);};Код
private:
TStackItem Stack[stack_size/sizeof(TStackItem)];
};
Потом в IdleProcessUserHook() использовал:
Код
debug_printf("EMAC stack %d ",DataShower_Proc.Used_Stack_Size());
debug_printf("DBG stack %d ",DBG_Output_Proc.Used_Stack_Size());
Как я понимаю, когда выполняется идл-процесс, окружение остальных процессов находится в их стеках и это какраз подходящее время чтобы узнать использованный размер. Поправте если не прав. А вообсче работает.
Как насчет прикрутить нечто подобное в исходник?

И еще одно пожелание - ИМХО, удобнее задавать (дефайнить) тип используемого процессора прямо в файле device.h. Или вынести в конфиг.аш А лазить по настройкам проекта для этого - ИМХО неудобно.