59 lines
2.1 KiB
C
59 lines
2.1 KiB
C
/**
|
||
* @file log_to_mem.h
|
||
* @brief Разметка внешней памяти и состояние кольцевого журнала.
|
||
*
|
||
* LOG_PAGE_START и LOG_PAGE_LEN обязаны совпадать с картой линковщика. Флаги
|
||
* no_write/never_write запрещают запись на разных уровнях, а clear_mem()
|
||
* полностью обнуляет область и потому является длительной операцией.
|
||
*/
|
||
/****************************************************************/
|
||
/* TMS320C32 */
|
||
/* ====== BIOS, КЛАИН, КЛВСП ====== */
|
||
/* ЦНИИ СЭТ (с) 1998-2001г. */
|
||
/****************************************************************/
|
||
/* log_to_mem.h
|
||
****************************************************************
|
||
* Запись логов в памyть *
|
||
****************************************************************/
|
||
|
||
#ifndef _LOG_TO_MEM
|
||
#define _LOG_TO_MEM
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/* Определениa длa работы логгера */
|
||
#define LOG_PAGE_START 0x0200000
|
||
#define LOG_PAGE_LEN 0xFA00
|
||
|
||
extern int no_write, never_write; // Флаги, чтобы не писать (если что)
|
||
|
||
typedef struct
|
||
{
|
||
unsigned long Start;
|
||
unsigned long Finis;
|
||
unsigned long Adres;
|
||
unsigned int Circl;
|
||
|
||
} LOG;
|
||
|
||
extern LOG Log;
|
||
|
||
/* Запись словa в памать, где логи лежат */
|
||
#define Log_to_mem(x) *(int *)(Log.Adres++) = x
|
||
|
||
/* Проверка границы памати дла логов */
|
||
//#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres = Log.Start
|
||
#define Test_mem_limit(x) if(Log.Adres > (Log.Finis - (x))) Log.Adres -=(x)
|
||
|
||
/* Очистка памати (обнуление) */
|
||
/** Полностью обнуляет область журнала и возвращает указатель записи в начало. */
|
||
void clear_mem();
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* _LOG_TO_MEM */
|