|
Пишу ОС РВ, Вот пишу ОС Реального времени, у какого какие предложения? пожелания? |
|
|
|
 |
Ответов
|
Jan 28 2009, 11:58
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(Rst7 @ Jan 28 2009, 13:35)  А ассерты - это другой разговор. Дык, assert - для примера только.  Я текст с alloc() сразу поленился выложить. Так лучше? Код #if (DEBUG == 0) #define MM_Alloc( a, b) \ MM_AllocFree( a, b) #else #define MM_Alloc( a, b) \ MM_AllocDebug( a, b, __LINE__, __FILE__) #endif А вот реализация: Код PVOID __stdcall MM_AllocDebug ( DWORD Size, // size of chunk in bytes BOOL bPaged, // pageble or nonpageable flag DWORD Line, // source line number PCHAR File // source file name ) { PMEM_BLOCK Result;
Result = (PMEM_BLOCK)_HeapAllocate( Size + sizeof(MEM_BLOCK), bPaged ? HEAPSWAP : 0); if (Result == NULL) { dprintf(PFX "Memory allocation failed\n"); return NULL; } Result->Size = Size; Result->Line = Line; Result->File = File;
Pushfd(); // // First write may cause paging, so we need to // disable interrupts again and do operation again. // It is not good idea to use the synchronization // objects here (it is merely for debug purposes // and is potentially dangerous - may cause the // deadlock) // Result->Next = memHeadList; Cli(); Result->Next = memHeadList; memHeadList = Result; Popfd(); return &Result->Data[0]; } Подход очень неплох - когда завершаемся - можно пробежать по списку неосвобожденной памяти и сразу ответить на вопрос "кто виноват". Но есть и минус - когда делаем MM_Free - надо пробежать по списку, найти блок (если не нашли - тоже класс - сразу assert), и удалить из списка. Когда таких блоков много и частые alloc/free - список тормозит. Но для отладки - самое оно. А в embedded я стараюсь "кучу" не пользовать - у меня обычно ясно сколько объектов будет "в деле" - для них пул блоков фиксированной длины пользуется - в TN Kernel под это дело даже системные вызовы сделаны.
|
|
|
|
Сообщений в этой теме
ddiimmaa Пишу ОС РВ Jan 27 2009, 22:58 sergeeff Это для общего развития или сейчас творческий прос... Jan 28 2009, 00:35 ddiimmaa Цитата(sergeeff @ Jan 28 2009, 04:35) Это... Jan 28 2009, 17:15  zltigo Цитата(ddiimmaa @ Jan 28 2009, 20:15) Мож... Jan 28 2009, 17:39  VslavX Посмотрите TN Kernel
Написана на чистом C, "п... Jan 28 2009, 17:42   ddiimmaa Цитата(VslavX @ Jan 28 2009, 21:42) Посмо... Jan 28 2009, 20:47    VslavX Цитата(ddiimmaa @ Jan 28 2009, 22:47) пос... Jan 28 2009, 23:29     AlexandrY В RL ARM у TCB размер 12 слов, а по функционалу о... Jan 29 2009, 11:44      VslavX Цитата(AlexandrY @ Jan 29 2009, 13:44) В ... Jan 29 2009, 16:02     ddiimmaa Цитата(VslavX @ Jan 29 2009, 03:29) Ужима... Jan 29 2009, 20:40      zltigo Цитата(ddiimmaa @ Jan 29 2009, 23:40) Стр... Jan 29 2009, 20:56       ddiimmaa Цитата(zltigo @ Jan 30 2009, 00:56) Потом... Jan 29 2009, 22:14        zltigo Цитата(ddiimmaa @ Jan 30 2009, 01:14) И р... Jan 29 2009, 23:29      VslavX Цитата(ddiimmaa @ Jan 29 2009, 22:40) Стр... Jan 30 2009, 08:16       AlexandrY Что то непонятны ваши потуги интуитивно выразить ... Jan 30 2009, 09:43        VslavX Цитата(AlexandrY @ Jan 30 2009, 11:43) Чт... Jan 30 2009, 13:08         ddiimmaa Цитата(VslavX @ Jan 30 2009, 17:08) топик... Jan 31 2009, 01:20          VslavX Цитата(ddiimmaa @ Jan 31 2009, 03:20) но ... Jan 31 2009, 07:55           AlexandrY Да, тема портирования высокомерно замалчивается, х... Jan 31 2009, 11:18            AlexandrY Кстати копнув глубже в архитектуру ARMv7-M (ядро C... Feb 1 2009, 19:44            ddiimmaa Цитата(AlexandrY @ Jan 31 2009, 15:18) На... Feb 3 2009, 08:51             aaarrr Цитата(ddiimmaa @ Feb 3 2009, 11:51) а на... Feb 3 2009, 09:12              ddiimmaa Цитата(aaarrr @ Feb 3 2009, 13:12) Сильно... Feb 4 2009, 20:37               aaarrr Цитата(ddiimmaa @ Feb 4 2009, 23:37) А се... Feb 4 2009, 20:48                ddiimmaa Цитата(aaarrr @ Feb 5 2009, 00:48) Это за... Feb 6 2009, 17:38                 aaarrr Цитата(ddiimmaa @ Feb 6 2009, 20:38) Дааа... Feb 6 2009, 17:51                  ddiimmaa Цитата(aaarrr @ Feb 6 2009, 21:51) Сначал... Feb 14 2009, 14:17                   aaarrr Цитата(ddiimmaa @ Feb 14 2009, 17:17) В т... Feb 14 2009, 14:57                    ddiimmaa Цитата(aaarrr @ Feb 14 2009, 18:57) Компи... Feb 14 2009, 20:47                     aaarrr Цитата(ddiimmaa @ Feb 14 2009, 23:47) Или... Feb 14 2009, 21:54                      ddiimmaa Вчера я выложил в Интернет более менее работаюшую ... Feb 15 2009, 14:39                 VslavX Цитата(ddiimmaa @ Feb 6 2009, 19:38) miTR... Feb 7 2009, 07:56                  dxp Цитата(VslavX @ Feb 7 2009, 13:56) Имхо, ... Feb 7 2009, 14:32                   AlexandrY Обратно никогда не хочется!
Став все время раб... Feb 7 2009, 14:57                    VslavX Цитата(AlexandrY @ Feb 7 2009, 16:57) Обр... Feb 7 2009, 23:09                     yuri_t IMXO, у С++ наиболее полезные вещи -это наследован... Feb 8 2009, 08:00 MrYuran А scmRTOS?
Вроде бы как раз, для дохленьких контро... Jan 28 2009, 05:40 AlexandrY Ну покажите класс. Кто вас знает, мож вы гений. ... Jan 28 2009, 07:40 zltigo Цитата(AlexandrY @ Jan 28 2009, 10:40) Вт... Jan 28 2009, 09:09 Rst7 Цитатавсего-то в Memory Control Block менежера пам... Jan 28 2009, 09:14 VslavX Цитата(Rst7 @ Jan 28 2009, 11:14) LR еще ... Jan 28 2009, 11:26 zltigo Цитата(Rst7 @ Jan 28 2009, 14:35) Ну адре... Jan 28 2009, 13:38  VslavX Цитата(zltigo @ Jan 28 2009, 15:38) Так я... Jan 28 2009, 13:55   zltigo Цитата(VslavX @ Jan 28 2009, 16:55) Напри... Jan 28 2009, 14:04    VslavX Цитата(zltigo @ Jan 28 2009, 16:04) Значи... Jan 28 2009, 14:38 Rst7 ЦитатаПодход очень неплох - когда завершаемся - мо... Jan 28 2009, 12:04 VslavX Цитата(Rst7 @ Jan 28 2009, 14:04) минимал... Jan 28 2009, 12:17 Rst7 ЦитатаА как Вы ищете потом процедуру по этому адре... Jan 28 2009, 12:28 VslavX Цитата(Rst7 @ Jan 28 2009, 14:28) В IDA п... Jan 28 2009, 12:42 Rst7 ЦитатаА для IAR-а тоже сработает?
Ага. 4.42 точно... Jan 28 2009, 12:43 Rst7 Цитатадля текущей задачи задачи известен указатель... Jan 28 2009, 13:41 zltigo Цитата(Rst7 @ Jan 28 2009, 16:41) Я не оч... Jan 28 2009, 13:46 Rst7 ЦитатаТогда при вызове malloc у меня можно явно ук... Jan 28 2009, 13:53 Rst7 Плохо только то, что армовский IAR почему-то не ск... Jan 28 2009, 13:57 VslavX Цитата(Rst7 @ Jan 28 2009, 15:57) Плохо т... Jan 28 2009, 14:24 Rst7 ЦитатаПопробуйте применить к функции модификатор s... Jan 28 2009, 14:27 Rst7 ЦитатаА функции, да, не конкатенирует
Дык я об эт... Jan 28 2009, 14:43 sergeeff Многие признают, что scmRTOS для микропроцессоров ... Feb 6 2009, 17:52
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|