mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-24 03:04:22 +00:00
lwip: log thread and sleep forever in assert()
This commit is contained in:
parent
7e3bcb1e39
commit
6616bd4593
@ -36,15 +36,19 @@ typedef unsigned long mem_ptr_t;
|
|||||||
#define X32_F "x"
|
#define X32_F "x"
|
||||||
|
|
||||||
void lwip_printf(const char *format, ...);
|
void lwip_printf(const char *format, ...);
|
||||||
|
void lwip_sleep_forever(void);
|
||||||
|
|
||||||
#define LWIP_PLATFORM_DIAG(x) do { lwip_printf x; } while(0)
|
#define LWIP_PLATFORM_DIAG(x) do { lwip_printf x; } while(0)
|
||||||
|
|
||||||
#ifdef GENODE_RELEASE
|
#ifdef GENODE_RELEASE
|
||||||
#define LWIP_PLATFORM_ASSERT(x)
|
#define LWIP_PLATFORM_ASSERT(x)
|
||||||
#else /* GENODE_RELEASE */
|
#else /* GENODE_RELEASE */
|
||||||
#define LWIP_PLATFORM_ASSERT(x) do { \
|
#define LWIP_PLATFORM_ASSERT(x) \
|
||||||
lwip_printf("Assertion \"%s\" failed at line %d in %s\n", \
|
do { \
|
||||||
x, __LINE__, __FILE__); } while(0)
|
lwip_printf("Assertion \"%s\" failed at %s:%u\n", \
|
||||||
|
x, __FILE__, __LINE__); \
|
||||||
|
lwip_sleep_forever(); \
|
||||||
|
} while (0)
|
||||||
#endif /* GENODE_RELEASE */
|
#endif /* GENODE_RELEASE */
|
||||||
|
|
||||||
#define PACK_STRUCT_FIELD(x) x
|
#define PACK_STRUCT_FIELD(x) x
|
||||||
|
@ -530,21 +530,23 @@ extern "C" {
|
|||||||
if (!mbox)
|
if (!mbox)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
u32_t ret = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Mailbox* _mbox = reinterpret_cast<Mailbox*>(mbox->ptr);
|
Mailbox* _mbox = reinterpret_cast<Mailbox *>(mbox->ptr);
|
||||||
if (!_mbox) {
|
if (!_mbox)
|
||||||
//PERR("Invalid mailbox pointer at %lx", *mbox->ptr);
|
return 0;
|
||||||
return EINVAL;
|
ret = _mbox->get(msg, timeout);
|
||||||
}
|
|
||||||
return _mbox->get(msg, timeout);
|
|
||||||
} catch (Genode::Timeout_exception) {
|
} catch (Genode::Timeout_exception) {
|
||||||
return SYS_ARCH_TIMEOUT;
|
ret = SYS_ARCH_TIMEOUT;
|
||||||
} catch (Genode::Nonblocking_exception) {
|
} catch (Genode::Nonblocking_exception) {
|
||||||
return SYS_MBOX_EMPTY;
|
ret = SYS_MBOX_EMPTY;
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
PERR("Unknown Exception occured!");
|
PERR("Unknown Exception occured!");
|
||||||
return -1;
|
ret = SYS_ARCH_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -652,3 +654,11 @@ extern "C" {
|
|||||||
Genode::memcpy(dst, src, size);
|
Genode::memcpy(dst, src, size);
|
||||||
}
|
}
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" void lwip_sleep_forever()
|
||||||
|
{
|
||||||
|
int dummy = 1;
|
||||||
|
PDBG("thread %u", (unsigned)(((Genode::addr_t)&dummy)>>20)&0xff);
|
||||||
|
Genode::sleep_forever();
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user