mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
libsysprof-profile: fix logic of future checks
This commit is contained in:
@ -149,6 +149,8 @@ sysprof_cpu_usage_record_fiber (gpointer user_data)
|
|||||||
values = g_alloca (sizeof *values * ((n_cpu * 2) + 1));
|
values = g_alloca (sizeof *values * ((n_cpu * 2) + 1));
|
||||||
|
|
||||||
cpu_info = g_array_new (FALSE, TRUE, sizeof (CpuInfo));
|
cpu_info = g_array_new (FALSE, TRUE, sizeof (CpuInfo));
|
||||||
|
g_array_set_size (cpu_info, n_cpu);
|
||||||
|
|
||||||
freq_info = g_array_new (FALSE, TRUE, sizeof (CpuFreq));
|
freq_info = g_array_new (FALSE, TRUE, sizeof (CpuFreq));
|
||||||
g_array_set_clear_func (freq_info, freq_info_clear);
|
g_array_set_clear_func (freq_info, freq_info_clear);
|
||||||
|
|
||||||
@ -235,8 +237,10 @@ sysprof_cpu_usage_record_fiber (gpointer user_data)
|
|||||||
}
|
}
|
||||||
cpu_future = dex_aio_read (NULL, stat_fd, read_buffer, PROC_STAT_BUF_SIZE, 0);
|
cpu_future = dex_aio_read (NULL, stat_fd, read_buffer, PROC_STAT_BUF_SIZE, 0);
|
||||||
g_ptr_array_add (futures, dex_ref (cpu_future));
|
g_ptr_array_add (futures, dex_ref (cpu_future));
|
||||||
g_ptr_array_add (futures, dex_ref (record->cancellable));
|
if (!dex_await (dex_future_any (dex_ref (record->cancellable),
|
||||||
if (!dex_await (dex_future_allv ((DexFuture **)futures->pdata, futures->len), NULL))
|
dex_future_allv ((DexFuture **)futures->pdata, futures->len),
|
||||||
|
NULL),
|
||||||
|
NULL))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
g_print ("Waiting for completions\n");
|
g_print ("Waiting for completions\n");
|
||||||
@ -350,9 +354,9 @@ sysprof_cpu_usage_record_fiber (gpointer user_data)
|
|||||||
g_print ("adding counters\n");
|
g_print ("adding counters\n");
|
||||||
|
|
||||||
/* Wait for cancellation or ½ second */
|
/* Wait for cancellation or ½ second */
|
||||||
dex_await (dex_future_any (dex_ref (record->cancellable),
|
dex_await (dex_future_first (dex_ref (record->cancellable),
|
||||||
dex_timeout_new_usec (G_USEC_PER_SEC / 2),
|
dex_timeout_new_usec (G_USEC_PER_SEC / 2),
|
||||||
NULL),
|
NULL),
|
||||||
NULL);
|
NULL);
|
||||||
if (dex_future_get_status (record->cancellable) != DEX_FUTURE_STATUS_PENDING)
|
if (dex_future_get_status (record->cancellable) != DEX_FUTURE_STATUS_PENDING)
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user