X-Git-Url: https://pd.if.org/git/?p=nbds;a=blobdiff_plain;f=runtime%2Flwt.c;h=f6bd3467d81eace074f13ef07bee64193c692772;hp=8212c5cf00ecaa072a0886f9e282f8a4e80b3ec6;hb=8143ca0acc36e19d004431952e3b6f9b3d337f49;hpb=d61d7ffdfa8fab555a5086e61d2e9dfe699a14b9 diff --git a/runtime/lwt.c b/runtime/lwt.c index 8212c5c..f6bd346 100644 --- a/runtime/lwt.c +++ b/runtime/lwt.c @@ -6,7 +6,7 @@ */ #include #include "common.h" -#include "runtime_local.h" +#include "rlocal.h" #include "lwt.h" #include "mem.h" @@ -58,7 +58,7 @@ static inline void dump_record (FILE *file, int thread_id, lwt_record_t *r, uint int level = ((size_t)r->format >> 48) & 0xFF; if (flag_state_[(unsigned)flag] >= level) { char s[3] = {flag, level, '\0'}; - fprintf(file, "%09llu %d %s ", ((uint64_t)r->timestamp - offset) >> 6, thread_id, s); + fprintf(file, "%09llu %d %s ", ((uint64_t)r->timestamp - offset) >> 5, thread_id, s); const char *format = (const char *)((size_t)r->format & MASK(48)); // strip out the embedded flags fprintf(file, format, r->value1, r->value2); fprintf(file, "\n"); @@ -80,6 +80,10 @@ static void dump_buffer (FILE *file, int thread_id, uint64_t offset) } } +void lwt_halt (void) { + halt_ = 1; +} + void lwt_dump (const char *file_name) { halt_ = 1; @@ -115,8 +119,7 @@ void lwt_dump (const char *file_name) } void lwt_trace_i (const char *format, size_t value1, size_t value2) { - if (*(volatile int *)&halt_) - return; + while (halt_) {} LOCALIZE_THREAD_LOCAL(tid_, int); lwt_buffer_t *tb = lwt_buf_[tid_]; if (tb != NULL) {