added more log options in std.c

This commit is contained in:
hyunghwan.chung 2021-07-20 00:57:22 +00:00
parent 3aa232ab3e
commit 8e507223c0
3 changed files with 62 additions and 36 deletions

View File

@ -166,28 +166,35 @@ class System(Apex)
// TODO: Do i have to protected this in an exception handler??? // TODO: Do i have to protected this in an exception handler???
//TODO: Execute Handler for signo. //TODO: Execute Handler for signo.
System logNl: "Interrupt dectected - signal no - " & signo asString. System logNl: "Interrupt detected - signal no - " & signo asString.
System logNl: "WWWWWWWWWWWWWWWWWWWWWWWWW ".
// user-defined signal handler is not allowed for 16rFF // user-defined signal handler is not allowed for 16rFF
if (signo == 16rFF) { goto done }. if (signo == 16rFF) { goto done }.
System logNl: "OHHHHHHHHHHHHHH ".
ifnot (self.shr isEmpty) ifnot (self.shr isEmpty)
{ {
System logNl: "About to execute handler for the signal detected - " & signo asString.
self.shr do: [ :handler | handler value: signo ]. self.shr do: [ :handler | handler value: signo ].
} }
else else
{ {
System logNl: "Jumping to done detected - signal no - " & signo asString.
if (signo == 2) { goto done }. if (signo == 2) { goto done }.
}. }.
}. }.
System logNl: "Waiting for signal on os_intr_sem...".
os_intr_sem wait. os_intr_sem wait.
}. }.
done: done:
System logNl: "Jumped to done detected - signal no - " & signo asString.
nil. nil.
] ]
ensure: [ ensure: [
| pid proc oldps | | pid proc oldps |
System logNl: "Aborting signal handler......".
// stop subscribing to signals. // stop subscribing to signals.
os_intr_sem signal. os_intr_sem signal.
os_intr_sem unsignal. os_intr_sem unsignal.

View File

@ -1105,26 +1105,26 @@ struct moo_dbgi_method_t
enum moo_log_mask_t enum moo_log_mask_t
{ {
MOO_LOG_DEBUG = (1u << 0), MOO_LOG_DEBUG = ((moo_bitmask_t)1 << 0),
MOO_LOG_INFO = (1u << 1), MOO_LOG_INFO = ((moo_bitmask_t)1 << 1),
MOO_LOG_WARN = (1u << 2), MOO_LOG_WARN = ((moo_bitmask_t)1 << 2),
MOO_LOG_ERROR = (1u << 3), MOO_LOG_ERROR = ((moo_bitmask_t)1 << 3),
MOO_LOG_FATAL = (1u << 4), MOO_LOG_FATAL = ((moo_bitmask_t)1 << 4),
MOO_LOG_UNTYPED = (1u << 6), /* only to be used by MOO_DEBUGx() and MOO_INFOx() */ MOO_LOG_UNTYPED = ((moo_bitmask_t)1 << 6), /* only to be used by MOO_DEBUGx() and MOO_INFOx() */
MOO_LOG_COMPILER = (1u << 7), MOO_LOG_COMPILER = ((moo_bitmask_t)1 << 7),
MOO_LOG_VM = (1u << 8), MOO_LOG_VM = ((moo_bitmask_t)1 << 8),
MOO_LOG_MNEMONIC = (1u << 9), /* bytecode mnemonic */ MOO_LOG_MNEMONIC = ((moo_bitmask_t)1 << 9), /* bytecode mnemonic */
MOO_LOG_GC = (1u << 10), MOO_LOG_GC = ((moo_bitmask_t)1 << 10),
MOO_LOG_IC = (1u << 11), /* instruction cycle, fetch-decode-execute */ MOO_LOG_IC = ((moo_bitmask_t)1 << 11), /* instruction cycle, fetch-decode-execute */
MOO_LOG_PRIMITIVE = (1u << 12), MOO_LOG_PRIMITIVE = ((moo_bitmask_t)1 << 12),
MOO_LOG_APP = (1u << 13), /* moo applications, set by moo logging primitive */ MOO_LOG_APP = ((moo_bitmask_t)1 << 13), /* moo applications, set by moo logging primitive */
MOO_LOG_ALL_LEVELS = (MOO_LOG_DEBUG | MOO_LOG_INFO | MOO_LOG_WARN | MOO_LOG_ERROR | MOO_LOG_FATAL), MOO_LOG_ALL_LEVELS = (MOO_LOG_DEBUG | MOO_LOG_INFO | MOO_LOG_WARN | MOO_LOG_ERROR | MOO_LOG_FATAL),
MOO_LOG_ALL_TYPES = (MOO_LOG_UNTYPED | MOO_LOG_COMPILER | MOO_LOG_VM | MOO_LOG_MNEMONIC | MOO_LOG_GC | MOO_LOG_IC | MOO_LOG_PRIMITIVE | MOO_LOG_APP), MOO_LOG_ALL_TYPES = (MOO_LOG_UNTYPED | MOO_LOG_COMPILER | MOO_LOG_VM | MOO_LOG_MNEMONIC | MOO_LOG_GC | MOO_LOG_IC | MOO_LOG_PRIMITIVE | MOO_LOG_APP),
MOO_LOG_STDOUT = (1u << 14), /* write log messages to stdout without timestamp. MOO_LOG_STDOUT wins over MOO_LOG_STDERR. */ MOO_LOG_STDOUT = ((moo_bitmask_t)1 << 14), /* write log messages to stdout without timestamp. MOO_LOG_STDOUT wins over MOO_LOG_STDERR. */
MOO_LOG_STDERR = (1u << 15) /* write log messages to stderr without timestamp. */ MOO_LOG_STDERR = ((moo_bitmask_t)1 << 15) /* write log messages to stderr without timestamp. */
}; };
typedef enum moo_log_mask_t moo_log_mask_t; typedef enum moo_log_mask_t moo_log_mask_t;

View File

@ -3958,29 +3958,42 @@ static LONG WINAPI msw_exception_filter (struct _EXCEPTION_POINTERS* exinfo)
static struct static struct
{ {
const char* name; const char* name;
int op;
moo_bitmask_t mask; moo_bitmask_t mask;
} log_mask_table[] = } log_mask_table[] =
{ {
{ "app", MOO_LOG_APP }, { "app", 0, MOO_LOG_APP },
{ "compiler", MOO_LOG_COMPILER }, { "compiler", 0, MOO_LOG_COMPILER },
{ "vm", MOO_LOG_VM }, { "vm", 0, MOO_LOG_VM },
{ "mnemonic", MOO_LOG_MNEMONIC }, { "mnemonic", 0, MOO_LOG_MNEMONIC },
{ "gc", MOO_LOG_GC }, { "gc", 0, MOO_LOG_GC },
{ "ic", MOO_LOG_IC }, { "ic", 0, MOO_LOG_IC },
{ "primitive", MOO_LOG_PRIMITIVE }, { "primitive", 0, MOO_LOG_PRIMITIVE },
{ "all", MOO_LOG_ALL_TYPES }, { "all", 0, MOO_LOG_ALL_TYPES },
{ "fatal", MOO_LOG_FATAL }, { "fatal", 0, MOO_LOG_FATAL },
{ "error", MOO_LOG_ERROR }, { "error", 0, MOO_LOG_ERROR },
{ "warn", MOO_LOG_WARN }, { "warn", 0, MOO_LOG_WARN },
{ "info", MOO_LOG_INFO }, { "info", 0, MOO_LOG_INFO },
{ "debug", MOO_LOG_DEBUG }, { "debug", 0, MOO_LOG_DEBUG },
{ "fatal+", MOO_LOG_FATAL }, { "fatal+", 0, MOO_LOG_FATAL },
{ "error+", MOO_LOG_FATAL | MOO_LOG_ERROR }, { "error+", 0, MOO_LOG_FATAL | MOO_LOG_ERROR },
{ "warn+", MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN }, { "warn+", 0, MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN },
{ "info+", MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN | MOO_LOG_INFO }, { "info+", 0, MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN | MOO_LOG_INFO },
{ "debug+", MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN | MOO_LOG_INFO | MOO_LOG_DEBUG } { "debug+", 0, MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN | MOO_LOG_INFO | MOO_LOG_DEBUG },
{ "fatal-", 0, MOO_LOG_FATAL | MOO_LOG_ERROR | MOO_LOG_WARN | MOO_LOG_INFO | MOO_LOG_DEBUG },
{ "error-", 0, MOO_LOG_ERROR | MOO_LOG_WARN | MOO_LOG_INFO | MOO_LOG_DEBUG },
{ "warn-", 0, MOO_LOG_WARN | MOO_LOG_INFO | MOO_LOG_DEBUG },
{ "info-", 0, MOO_LOG_INFO | MOO_LOG_DEBUG },
{ "debug-", 0, MOO_LOG_DEBUG },
{ "-fatal", 1, ~MOO_LOG_FATAL },
{ "-error", 1, ~MOO_LOG_ERROR },
{ "-warn", 1, ~MOO_LOG_WARN },
{ "-info", 1, ~MOO_LOG_INFO },
{ "-debug", 1, ~MOO_LOG_DEBUG },
}; };
static struct static struct
@ -4021,7 +4034,10 @@ static int parse_logoptb (moo_t* moo, const moo_bch_t* str, moo_oow_t* xpathlen,
{ {
if (moo_comp_bchars_bcstr(flt, len, log_mask_table[i].name) == 0) if (moo_comp_bchars_bcstr(flt, len, log_mask_table[i].name) == 0)
{ {
logmask |= log_mask_table[i].mask; if (log_mask_table[i].op)
logmask &= log_mask_table[i].mask;
else
logmask |= log_mask_table[i].mask;
break; break;
} }
} }
@ -4076,7 +4092,10 @@ static int parse_logoptu (moo_t* moo, const moo_uch_t* str, moo_oow_t* xpathlen,
{ {
if (moo_comp_uchars_bcstr(flt, len, log_mask_table[i].name) == 0) if (moo_comp_uchars_bcstr(flt, len, log_mask_table[i].name) == 0)
{ {
logmask |= log_mask_table[i].mask; if (log_mask_table[i].op)
logmask &= log_mask_table[i].mask;
else
logmask |= log_mask_table[i].mask;
break; break;
} }
} }