forked from M-Labs/artiq
1
0
Fork 0

Allow clearing core device log buffer.

This is useful to get a fresh environment, such as when
running tests that print to log buffer.
This commit is contained in:
whitequark 2015-08-28 00:37:46 -05:00
parent c21387dc09
commit d80be482fc
4 changed files with 32 additions and 10 deletions

View File

@ -12,23 +12,26 @@ logger = logging.getLogger(__name__)
class _H2DMsgType(Enum): class _H2DMsgType(Enum):
LOG_REQUEST = 1 LOG_REQUEST = 1
IDENT_REQUEST = 2 LOG_CLEAR = 2
SWITCH_CLOCK = 3
LOAD_LIBRARY = 4 IDENT_REQUEST = 3
RUN_KERNEL = 5 SWITCH_CLOCK = 4
RPC_REPLY = 6 LOAD_LIBRARY = 5
RPC_EXCEPTION = 7 RUN_KERNEL = 6
FLASH_READ_REQUEST = 8 RPC_REPLY = 7
FLASH_WRITE_REQUEST = 9 RPC_EXCEPTION = 8
FLASH_ERASE_REQUEST = 10
FLASH_REMOVE_REQUEST = 11 FLASH_READ_REQUEST = 9
FLASH_WRITE_REQUEST = 10
FLASH_ERASE_REQUEST = 11
FLASH_REMOVE_REQUEST = 12
class _D2HMsgType(Enum): class _D2HMsgType(Enum):
LOG_REPLY = 1 LOG_REPLY = 1
IDENT_REPLY = 2 IDENT_REPLY = 2
CLOCK_SWITCH_COMPLETED = 3 CLOCK_SWITCH_COMPLETED = 3
CLOCK_SWITCH_FAILED = 4 CLOCK_SWITCH_FAILED = 4
@ -235,6 +238,11 @@ class CommGeneric:
self._read_expect(_D2HMsgType.LOG_REPLY) self._read_expect(_D2HMsgType.LOG_REPLY)
return self._read_chunk(self._read_length).decode('utf-8') return self._read_chunk(self._read_length).decode('utf-8')
def clear_log(self):
self._write_empty(_H2DMsgType.LOG_CLEAR)
self._read_empty(_D2HMsgType.LOG_REPLY)
def flash_storage_read(self, key): def flash_storage_read(self, key):
self._write_header(_H2DMsgType.FLASH_READ_REQUEST) self._write_header(_H2DMsgType.FLASH_READ_REQUEST)
self._write_string(key) self._write_string(key)

View File

@ -61,3 +61,8 @@ void log_get(char *outbuf)
j = (j + 1) % LOG_BUFFER_SIZE; j = (j + 1) % LOG_BUFFER_SIZE;
} }
} }
void log_clear()
{
memset(buffer, 0, sizeof(buffer));
}

View File

@ -12,5 +12,6 @@ void log_va(const char *fmt, va_list args);
void log(const char *fmt, ...); void log(const char *fmt, ...);
void log_get(char *outbuf); void log_get(char *outbuf);
void log_clear();
#endif /* __LOG_H */ #endif /* __LOG_H */

View File

@ -310,6 +310,8 @@ void session_end(void)
/* host to device */ /* host to device */
enum { enum {
REMOTEMSG_TYPE_LOG_REQUEST = 1, REMOTEMSG_TYPE_LOG_REQUEST = 1,
REMOTEMSG_TYPE_LOG_CLEAR,
REMOTEMSG_TYPE_IDENT_REQUEST, REMOTEMSG_TYPE_IDENT_REQUEST,
REMOTEMSG_TYPE_SWITCH_CLOCK, REMOTEMSG_TYPE_SWITCH_CLOCK,
@ -328,6 +330,7 @@ enum {
/* device to host */ /* device to host */
enum { enum {
REMOTEMSG_TYPE_LOG_REPLY = 1, REMOTEMSG_TYPE_LOG_REPLY = 1,
REMOTEMSG_TYPE_IDENT_REPLY, REMOTEMSG_TYPE_IDENT_REPLY,
REMOTEMSG_TYPE_CLOCK_SWITCH_COMPLETED, REMOTEMSG_TYPE_CLOCK_SWITCH_COMPLETED,
REMOTEMSG_TYPE_CLOCK_SWITCH_FAILED, REMOTEMSG_TYPE_CLOCK_SWITCH_FAILED,
@ -383,6 +386,11 @@ static int process_input(void)
out_packet_finish(); out_packet_finish();
break; break;
case REMOTEMSG_TYPE_LOG_CLEAR:
log_clear();
out_packet_empty(REMOTEMSG_TYPE_LOG_REPLY);
break;
case REMOTEMSG_TYPE_FLASH_READ_REQUEST: { case REMOTEMSG_TYPE_FLASH_READ_REQUEST: {
#if SPIFLASH_SECTOR_SIZE - 4 > BUFFER_OUT_SIZE - 9 #if SPIFLASH_SECTOR_SIZE - 4 > BUFFER_OUT_SIZE - 9
#error Output buffer cannot hold the flash storage data #error Output buffer cannot hold the flash storage data