From: fanyang-mono Date: Thu, 23 Apr 2020 14:39:52 +0000 (-0400) Subject: Change to platform-specific typedef approach X-Git-Tag: submit/tizen/20210909.063632~8400^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=88689914232e7096639b1393e490200f34b3c920;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Change to platform-specific typedef approach --- diff --git a/src/mono/mono/mini/mini-posix.c b/src/mono/mono/mini/mini-posix.c index f2428e3..52550c0 100644 --- a/src/mono/mono/mini/mini-posix.c +++ b/src/mono/mono/mini/mini-posix.c @@ -623,7 +623,7 @@ clock_sleep_ns_abs (guint64 ns_abs) * nanoseconds). */ do { - diff = (gint64) ns_abs - (gint64) clock_get_time_ns (); + diff = (gint64) ns_abs - (gint64) mono_clock_get_time_ns (sampling_clock); if (diff <= 0) break; @@ -691,17 +691,17 @@ init: goto init; } - mono_clock_init (&sampling_clock); + mono_clock_init (sampling_clock); clock_init_for_profiler (mode); - for (guint64 sleep = mono_clock_get_time_ns (&sampling_clock); mono_atomic_load_i32 (&sampling_thread_running); clock_sleep_ns_abs (sleep)) { + for (guint64 sleep = mono_clock_get_time_ns (sampling_clock); mono_atomic_load_i32 (&sampling_thread_running); clock_sleep_ns_abs (sleep)) { uint32_t freq; MonoProfilerSampleMode new_mode; mono_profiler_get_sample_mode (NULL, &new_mode, &freq); if (new_mode != mode) { - mono_clock_cleanup (&sampling_clock); + mono_clock_cleanup (sampling_clock); goto init; } @@ -723,7 +723,7 @@ init: } FOREACH_THREAD_SAFE_END } - mono_clock_cleanup (&sampling_clock); + mono_clock_cleanup (sampling_clock); done: mono_atomic_store_i32 (&sampling_thread_exiting, 1); diff --git a/src/mono/mono/mini/mini-runtime.c b/src/mono/mono/mini/mini-runtime.c index b2ddbd6..6f0cd19 100644 --- a/src/mono/mono/mini/mini-runtime.c +++ b/src/mono/mono/mini/mini-runtime.c @@ -2022,7 +2022,7 @@ add_file_header_info (FileHeader *header) header->elf_mach = ELF_MACHINE; header->pad1 = 0; header->pid = perf_dump_pid; - header->timestamp = mono_clock_get_time_ns (&clock_id); + header->timestamp = mono_clock_get_time_ns (clock_id); header->flags = 0; } @@ -2048,7 +2048,7 @@ mono_emit_jit_dump (MonoJitInfo *jinfo, gpointer code) // TODO: write debugInfo and unwindInfo immediately before the JitCodeLoadRecord (while lock is held). - record.header.timestamp = mono_clock_get_time_ns (&clock_id); + record.header.timestamp = mono_clock_get_time_ns (clock_id); fwrite (&record, sizeof (record), 1, perf_dump_file); fwrite (jinfo->d.method->name, nameLen + 1, 1, perf_dump_file); @@ -2062,7 +2062,7 @@ static void add_basic_JitCodeLoadRecord_info (JitCodeLoadRecord *record) { record->header.id = JIT_CODE_LOAD; - record->header.timestamp = mono_clock_get_time_ns (&clock_id); + record->header.timestamp = mono_clock_get_time_ns (clock_id); record->pid = perf_dump_pid; record->tid = syscall (SYS_gettid); } diff --git a/src/mono/mono/utils/mono-time.c b/src/mono/mono/utils/mono-time.c index 4aa9679..c21b9fd 100644 --- a/src/mono/mono/utils/mono-time.c +++ b/src/mono/mono/utils/mono-time.c @@ -235,81 +235,91 @@ mono_100ns_datetime_from_timeval (struct timeval tv) #endif -#if defined(HOST_DARWIN) || defined(HOST_LINUX) +#if defined(HOST_DARWIN) void -mono_clock_init (void *clk_id) +mono_clock_init (mono_clock_id_t clk_id) { -#ifdef HOST_DARWIN kern_return_t ret; do { - ret = host_get_clock_service (mach_host_self (), SYSTEM_CLOCK, (clock_serv_t *)clk_id); + ret = host_get_clock_service (mach_host_self (), SYSTEM_CLOCK, &clk_id); } while (ret == KERN_ABORTED); if (ret != KERN_SUCCESS) g_error ("%s: host_get_clock_service () returned %d", __func__, ret); -#endif } void -mono_clock_cleanup (void *clk_id) +mono_clock_cleanup (mono_clock_id_t clk_id) { -#ifdef HOST_DARWIN kern_return_t ret; do { - ret = mach_port_deallocate (mach_task_self (), *(clock_serv_t *)clk_id); + ret = mach_port_deallocate (mach_task_self (), clk_id); } while (ret == KERN_ABORTED); if (ret != KERN_SUCCESS) g_error ("%s: mach_port_deallocate () returned %d", __func__, ret); -#endif } guint64 -mono_clock_get_time_ns (void *clk_id) +mono_clock_get_time_ns (mono_clock_id_t clk_id) { -#ifdef HOST_DARWIN - kern_return_t ret; mach_timespec_t mach_ts; do { - ret = clock_get_time (*(clock_serv_t *)clk_id, &mach_ts); + ret = clock_get_time (clk_id, &mach_ts); } while (ret == KERN_ABORTED); if (ret != KERN_SUCCESS) g_error ("%s: clock_get_time () returned %d", __func__, ret); return ((guint64) mach_ts.tv_sec * 1000000000) + (guint64) mach_ts.tv_nsec; - -#else - +} + +#elif defined(__linux__) + +void +mono_clock_init (mono_clock_id_t clk_id) +{ +} + +void +mono_clock_cleanup (mono_clock_id_t clk_id) +{ +} + +guint64 +mono_clock_get_time_ns (mono_clock_id_t clk_id) +{ struct timespec ts; - if (clock_gettime (*(clockid_t *)clk_id, &ts) == -1) + if (clock_gettime (clk_id, &ts) == -1) g_error ("%s: clock_gettime () returned -1, errno = %d", __func__, errno); return ((guint64) ts.tv_sec * 1000000000) + (guint64) ts.tv_nsec; - -#endif } #else void -mono_clock_init (void *clk_id) +mono_clock_init (mono_clock_id_t clk_id) { + // TODO: need to implement this function for PC + g_assert_not_reached (); } void -mono_clock_cleanup (void *clk_id) +mono_clock_cleanup (mono_clock_id_t clk_id) { + // TODO: need to implement this function for PC + g_assert_not_reached (); } guint64 -mono_clock_get_time_ns (void *clk_id) +mono_clock_get_time_ns (mono_clock_id_t clk_id) { // TODO: need to implement time stamp function for PC g_assert_not_reached (); diff --git a/src/mono/mono/utils/mono-time.h b/src/mono/mono/utils/mono-time.h index 65ea0f2..67e8647 100644 --- a/src/mono/mono/utils/mono-time.h +++ b/src/mono/mono/utils/mono-time.h @@ -29,9 +29,17 @@ gint64 mono_100ns_datetime (void); gint64 mono_100ns_datetime_from_timeval (struct timeval tv); #endif -void mono_clock_init (void *clk_id); -void mono_clock_cleanup (void *clk_id); -guint64 mono_clock_get_time_ns (void *clk_id); +#if defined(HOST_DARWIN) +typedef clock_serv_t mono_clock_id_t; +#elif defined(__linux__) +typedef clockid_t mono_clock_id_t; +#else +typedef void* mono_clock_id_t; +#endif + +void mono_clock_init (mono_clock_id_t clk_id); +void mono_clock_cleanup (mono_clock_id_t clk_id); +guint64 mono_clock_get_time_ns (mono_clock_id_t clk_id); /* Stopwatch class for internal runtime use */ typedef struct {