mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-09 14:40:54 +00:00
libsysprof-capture: Drop GError usage from SysprofCaptureReader
Use `errno` instead, which is icky, but given that all of the failure modes are from POSIX I/O functions, it’s at least in keeping with them. This is a major API break. Signed-off-by: Philip Withnall <withnall@endlessm.com> Helps: #40
This commit is contained in:
@ -90,29 +90,24 @@ struct _SysprofCaptureReader
|
|||||||
unsigned int st_buf_set : 1;
|
unsigned int st_buf_set : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Sets @errno on failure. Sets @errno to EBADMSG if the file magic doesn’t
|
||||||
|
* match, and otherwise can return any error as for read(). */
|
||||||
static bool
|
static bool
|
||||||
sysprof_capture_reader_read_file_header (SysprofCaptureReader *self,
|
sysprof_capture_reader_read_file_header (SysprofCaptureReader *self,
|
||||||
SysprofCaptureFileHeader *header,
|
SysprofCaptureFileHeader *header)
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
assert (self != NULL);
|
assert (self != NULL);
|
||||||
assert (header != NULL);
|
assert (header != NULL);
|
||||||
|
|
||||||
if (sizeof *header != _sysprof_pread (self->fd, header, sizeof *header, 0L))
|
if (sizeof *header != _sysprof_pread (self->fd, header, sizeof *header, 0L))
|
||||||
{
|
{
|
||||||
g_set_error (error,
|
/* errno is propagated */
|
||||||
G_FILE_ERROR,
|
|
||||||
g_file_error_from_errno (errno),
|
|
||||||
"%s", g_strerror (errno));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (header->magic != SYSPROF_CAPTURE_MAGIC)
|
if (header->magic != SYSPROF_CAPTURE_MAGIC)
|
||||||
{
|
{
|
||||||
g_set_error (error,
|
errno = EBADMSG;
|
||||||
G_FILE_ERROR,
|
|
||||||
G_FILE_ERROR_FAILED,
|
|
||||||
"Capture file magic does not match");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,17 +196,17 @@ sysprof_capture_reader_discover_end_time (SysprofCaptureReader *self)
|
|||||||
/**
|
/**
|
||||||
* sysprof_capture_reader_new_from_fd:
|
* sysprof_capture_reader_new_from_fd:
|
||||||
* @fd: an fd to take ownership from
|
* @fd: an fd to take ownership from
|
||||||
* @error: a location for a #GError or %NULL
|
|
||||||
*
|
*
|
||||||
* Creates a new reader using the file-descriptor.
|
* Creates a new reader using the file-descriptor.
|
||||||
*
|
*
|
||||||
* This is useful if you don't necessarily have access to the filename itself.
|
* This is useful if you don't necessarily have access to the filename itself.
|
||||||
*
|
*
|
||||||
|
* If this function fails, `errno` is set.
|
||||||
|
*
|
||||||
* Returns: (transfer full): an #SysprofCaptureReader or %NULL upon failure.
|
* Returns: (transfer full): an #SysprofCaptureReader or %NULL upon failure.
|
||||||
*/
|
*/
|
||||||
SysprofCaptureReader *
|
SysprofCaptureReader *
|
||||||
sysprof_capture_reader_new_from_fd (int fd,
|
sysprof_capture_reader_new_from_fd (int fd)
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
SysprofCaptureReader *self;
|
SysprofCaptureReader *self;
|
||||||
|
|
||||||
@ -220,7 +215,7 @@ sysprof_capture_reader_new_from_fd (int fd,
|
|||||||
self = sysprof_malloc0 (sizeof (SysprofCaptureReader));
|
self = sysprof_malloc0 (sizeof (SysprofCaptureReader));
|
||||||
if (self == NULL)
|
if (self == NULL)
|
||||||
{
|
{
|
||||||
g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, "No memory");
|
errno = ENOMEM;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +225,7 @@ sysprof_capture_reader_new_from_fd (int fd,
|
|||||||
if (self->buf == NULL)
|
if (self->buf == NULL)
|
||||||
{
|
{
|
||||||
free (self);
|
free (self);
|
||||||
g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, "No memory");
|
errno = ENOMEM;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,9 +234,11 @@ sysprof_capture_reader_new_from_fd (int fd,
|
|||||||
self->fd = fd;
|
self->fd = fd;
|
||||||
self->fd_off = sizeof (SysprofCaptureFileHeader);
|
self->fd_off = sizeof (SysprofCaptureFileHeader);
|
||||||
|
|
||||||
if (!sysprof_capture_reader_read_file_header (self, &self->header, error))
|
if (!sysprof_capture_reader_read_file_header (self, &self->header))
|
||||||
{
|
{
|
||||||
|
int errsv = errno;
|
||||||
sysprof_capture_reader_finalize (self);
|
sysprof_capture_reader_finalize (self);
|
||||||
|
errno = errsv;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,8 +258,7 @@ sysprof_capture_reader_new_from_fd (int fd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SysprofCaptureReader *
|
SysprofCaptureReader *
|
||||||
sysprof_capture_reader_new (const char *filename,
|
sysprof_capture_reader_new (const char *filename)
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
SysprofCaptureReader *self;
|
SysprofCaptureReader *self;
|
||||||
int fd;
|
int fd;
|
||||||
@ -271,16 +267,15 @@ sysprof_capture_reader_new (const char *filename,
|
|||||||
|
|
||||||
if (-1 == (fd = open (filename, O_RDONLY, 0)))
|
if (-1 == (fd = open (filename, O_RDONLY, 0)))
|
||||||
{
|
{
|
||||||
g_set_error (error,
|
/* errno is propagated */
|
||||||
G_FILE_ERROR,
|
|
||||||
g_file_error_from_errno (errno),
|
|
||||||
"%s", g_strerror (errno));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == (self = sysprof_capture_reader_new_from_fd (fd, error)))
|
if (NULL == (self = sysprof_capture_reader_new_from_fd (fd)))
|
||||||
{
|
{
|
||||||
|
int errsv = errno;
|
||||||
close (fd);
|
close (fd);
|
||||||
|
errno = errsv;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -996,9 +991,8 @@ sysprof_capture_reader_unref (SysprofCaptureReader *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
sysprof_capture_reader_splice (SysprofCaptureReader *self,
|
sysprof_capture_reader_splice (SysprofCaptureReader *self,
|
||||||
SysprofCaptureWriter *dest,
|
SysprofCaptureWriter *dest)
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
assert (self != NULL);
|
assert (self != NULL);
|
||||||
assert (self->fd != -1);
|
assert (self->fd != -1);
|
||||||
@ -1007,10 +1001,7 @@ sysprof_capture_reader_splice (SysprofCaptureReader *self,
|
|||||||
/* Flush before writing anything to ensure consistency */
|
/* Flush before writing anything to ensure consistency */
|
||||||
if (!sysprof_capture_writer_flush (dest))
|
if (!sysprof_capture_writer_flush (dest))
|
||||||
{
|
{
|
||||||
g_set_error (error,
|
/* errno is propagated */
|
||||||
G_FILE_ERROR,
|
|
||||||
g_file_error_from_errno (errno),
|
|
||||||
"%s", g_strerror (errno));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1019,30 +1010,32 @@ sysprof_capture_reader_splice (SysprofCaptureReader *self,
|
|||||||
* track the current position to avoid reseting it.
|
* track the current position to avoid reseting it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Perform the splice */
|
/* Perform the splice; errno is propagated on failure */
|
||||||
return _sysprof_capture_writer_splice_from_fd (dest, self->fd, error);
|
return _sysprof_capture_writer_splice_from_fd (dest, self->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sysprof_capture_reader_save_as:
|
* sysprof_capture_reader_save_as:
|
||||||
* @self: An #SysprofCaptureReader
|
* @self: An #SysprofCaptureReader
|
||||||
* @filename: the file to save the capture as
|
* @filename: the file to save the capture as
|
||||||
* @error: a location for a #GError or %NULL.
|
|
||||||
*
|
*
|
||||||
* This is a convenience function for copying a capture file for which
|
* This is a convenience function for copying a capture file for which
|
||||||
* you may have already discarded the writer for.
|
* you may have already discarded the writer for.
|
||||||
*
|
*
|
||||||
* Returns: %TRUE on success; otherwise %FALSE and @error is set.
|
* `errno` is set on failure. It may be any of the errors returned by
|
||||||
|
* `open()`, `fstat()`, `ftruncate()`, `lseek()` or `sendfile()`.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE on success; otherwise %FALSE.
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
sysprof_capture_reader_save_as (SysprofCaptureReader *self,
|
sysprof_capture_reader_save_as (SysprofCaptureReader *self,
|
||||||
const char *filename,
|
const char *filename)
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
off_t in_off;
|
off_t in_off;
|
||||||
size_t to_write;
|
size_t to_write;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
|
int errsv;
|
||||||
|
|
||||||
assert (self != NULL);
|
assert (self != NULL);
|
||||||
assert (filename != NULL);
|
assert (filename != NULL);
|
||||||
@ -1087,13 +1080,12 @@ sysprof_capture_reader_save_as (SysprofCaptureReader *self,
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
handle_errno:
|
handle_errno:
|
||||||
|
errsv = errno;
|
||||||
|
|
||||||
if (fd != -1)
|
if (fd != -1)
|
||||||
close (fd);
|
close (fd);
|
||||||
|
|
||||||
g_set_error (error,
|
errno = errsv;
|
||||||
G_FILE_ERROR,
|
|
||||||
g_file_error_from_errno (errno),
|
|
||||||
"%s", g_strerror (errno));
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,11 +67,9 @@ SYSPROF_BEGIN_DECLS
|
|||||||
typedef struct _SysprofCaptureReader SysprofCaptureReader;
|
typedef struct _SysprofCaptureReader SysprofCaptureReader;
|
||||||
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
SysprofCaptureReader *sysprof_capture_reader_new (const char *filename,
|
SysprofCaptureReader *sysprof_capture_reader_new (const char *filename);
|
||||||
GError **error);
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
SysprofCaptureReader *sysprof_capture_reader_new_from_fd (int fd,
|
SysprofCaptureReader *sysprof_capture_reader_new_from_fd (int fd);
|
||||||
GError **error);
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
SysprofCaptureReader *sysprof_capture_reader_copy (SysprofCaptureReader *self);
|
SysprofCaptureReader *sysprof_capture_reader_copy (SysprofCaptureReader *self);
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
@ -128,12 +126,10 @@ SYSPROF_AVAILABLE_IN_ALL
|
|||||||
bool sysprof_capture_reader_reset (SysprofCaptureReader *self);
|
bool sysprof_capture_reader_reset (SysprofCaptureReader *self);
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
bool sysprof_capture_reader_splice (SysprofCaptureReader *self,
|
bool sysprof_capture_reader_splice (SysprofCaptureReader *self,
|
||||||
SysprofCaptureWriter *dest,
|
SysprofCaptureWriter *dest);
|
||||||
GError **error);
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
bool sysprof_capture_reader_save_as (SysprofCaptureReader *self,
|
bool sysprof_capture_reader_save_as (SysprofCaptureReader *self,
|
||||||
const char *filename,
|
const char *filename);
|
||||||
GError **error);
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
bool sysprof_capture_reader_get_stat (SysprofCaptureReader *self,
|
bool sysprof_capture_reader_get_stat (SysprofCaptureReader *self,
|
||||||
SysprofCaptureStat *st_buf);
|
SysprofCaptureStat *st_buf);
|
||||||
|
|||||||
@ -464,14 +464,16 @@ sysprof_proxy_source_complete_monitor (SysprofProxySource *self,
|
|||||||
Monitor *monitor)
|
Monitor *monitor)
|
||||||
{
|
{
|
||||||
g_autoptr(SysprofCaptureReader) reader = NULL;
|
g_autoptr(SysprofCaptureReader) reader = NULL;
|
||||||
g_autoptr(GError) error = NULL;
|
|
||||||
|
|
||||||
g_assert (SYSPROF_IS_PROXY_SOURCE (self));
|
g_assert (SYSPROF_IS_PROXY_SOURCE (self));
|
||||||
g_assert (monitor != NULL);
|
g_assert (monitor != NULL);
|
||||||
g_assert (monitor->self == self);
|
g_assert (monitor->self == self);
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new_from_fd (steal_fd (&monitor->fd), &error)))
|
if (!(reader = sysprof_capture_reader_new_from_fd (steal_fd (&monitor->fd))))
|
||||||
g_warning ("Failed to load reader from peer FD: %s", error->message);
|
{
|
||||||
|
int errsv = errno;
|
||||||
|
g_warning ("Failed to load reader from peer FD: %s", g_strerror (errsv));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
sysprof_proxy_source_cat (self, reader);
|
sysprof_proxy_source_cat (self, reader);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -259,7 +259,7 @@ sysprof_tracefd_source_stop (SysprofSource *source)
|
|||||||
{
|
{
|
||||||
g_autoptr(SysprofCaptureReader) reader = NULL;
|
g_autoptr(SysprofCaptureReader) reader = NULL;
|
||||||
|
|
||||||
if ((reader = sysprof_capture_reader_new_from_fd (priv->tracefd, 0)))
|
if ((reader = sysprof_capture_reader_new_from_fd (priv->tracefd)))
|
||||||
sysprof_capture_writer_cat (priv->writer, reader, NULL);
|
sysprof_capture_writer_cat (priv->writer, reader, NULL);
|
||||||
|
|
||||||
priv->tracefd = -1;
|
priv->tracefd = -1;
|
||||||
|
|||||||
@ -134,9 +134,10 @@ main (gint argc,
|
|||||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||||
textdomain (GETTEXT_PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -205,9 +205,10 @@ main (gint argc,
|
|||||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||||
textdomain (GETTEXT_PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -116,7 +116,6 @@ main (gint argc,
|
|||||||
{
|
{
|
||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
const gchar *filename = argv[1];
|
const gchar *filename = argv[1];
|
||||||
g_autoptr(GError) error = NULL;
|
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
{
|
{
|
||||||
@ -124,9 +123,10 @@ main (gint argc,
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -141,7 +141,6 @@ main (gint argc,
|
|||||||
{
|
{
|
||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
const gchar *filename = argv[1];
|
const gchar *filename = argv[1];
|
||||||
g_autoptr(GError) error = NULL;
|
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
{
|
{
|
||||||
@ -149,9 +148,10 @@ main (gint argc,
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -77,9 +77,10 @@ main (gint argc,
|
|||||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||||
textdomain (GETTEXT_PACKAGE);
|
textdomain (GETTEXT_PACKAGE);
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -168,7 +168,6 @@ main (gint argc,
|
|||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
const gchar *filename = argv[1];
|
const gchar *filename = argv[1];
|
||||||
g_autoptr(SysprofProfile) memprof = NULL;
|
g_autoptr(SysprofProfile) memprof = NULL;
|
||||||
g_autoptr(GError) error = NULL;
|
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
{
|
{
|
||||||
@ -178,9 +177,10 @@ main (gint argc,
|
|||||||
|
|
||||||
main_loop = g_main_loop_new (NULL, FALSE);
|
main_loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,6 @@ main (gint argc,
|
|||||||
{
|
{
|
||||||
g_autoptr(SysprofCaptureReader) reader = NULL;
|
g_autoptr(SysprofCaptureReader) reader = NULL;
|
||||||
g_autoptr(SysprofSymbolResolver) resolver = NULL;
|
g_autoptr(SysprofSymbolResolver) resolver = NULL;
|
||||||
g_autoptr(GError) error = NULL;
|
|
||||||
SysprofCaptureFrameType type;
|
SysprofCaptureFrameType type;
|
||||||
|
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
@ -20,9 +19,10 @@ main (gint argc,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (argv[1], &error)))
|
if (!(reader = sysprof_capture_reader_new (argv[1])))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -92,9 +92,10 @@ main (gint argc,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (argv[1], &error)))
|
if (!(reader = sysprof_capture_reader_new (argv[1])))
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -37,20 +37,18 @@ test_cursor_basic (void)
|
|||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
SysprofCaptureWriter *writer;
|
SysprofCaptureWriter *writer;
|
||||||
SysprofCaptureCursor *cursor;
|
SysprofCaptureCursor *cursor;
|
||||||
GError *error = NULL;
|
|
||||||
gint64 t = SYSPROF_CAPTURE_CURRENT_TIME;
|
gint64 t = SYSPROF_CAPTURE_CURRENT_TIME;
|
||||||
guint i;
|
guint i;
|
||||||
gint r;
|
gint r;
|
||||||
gint count = 0;
|
gint count = 0;
|
||||||
|
|
||||||
writer = sysprof_capture_writer_new ("capture-cursor-file", 0);
|
writer = sysprof_capture_writer_new ("capture-cursor-file", 0);
|
||||||
g_assert (writer != NULL);
|
g_assert_nonnull (writer);
|
||||||
|
|
||||||
sysprof_capture_writer_flush (writer);
|
sysprof_capture_writer_flush (writer);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("capture-cursor-file", &error);
|
reader = sysprof_capture_reader_new ("capture-cursor-file");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
for (i = 0; i < 100; i++)
|
for (i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -61,9 +61,8 @@ test_reader_basic (void)
|
|||||||
|
|
||||||
sysprof_capture_writer_flush (writer);
|
sysprof_capture_writer_flush (writer);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("capture-file", &error);
|
reader = sysprof_capture_reader_new ("capture-file");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
for (i = 0; i < 100; i++)
|
for (i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
@ -430,9 +429,8 @@ test_reader_basic (void)
|
|||||||
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
||||||
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("capture-file.bak", &error);
|
reader = sysprof_capture_reader_new ("capture-file.bak");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
@ -481,9 +479,8 @@ test_writer_splice (void)
|
|||||||
g_clear_pointer (&writer1, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer1, sysprof_capture_writer_unref);
|
||||||
g_clear_pointer (&writer2, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer2, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("writer2.syscap", &error);
|
reader = sysprof_capture_reader_new ("writer2.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
for (i = 0; i < 1000; i++)
|
for (i = 0; i < 1000; i++)
|
||||||
{
|
{
|
||||||
@ -511,7 +508,6 @@ test_reader_splice (void)
|
|||||||
SysprofCaptureWriter *writer2;
|
SysprofCaptureWriter *writer2;
|
||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
SysprofCaptureFrameType type;
|
SysprofCaptureFrameType type;
|
||||||
GError *error = NULL;
|
|
||||||
guint i;
|
guint i;
|
||||||
guint count;
|
guint count;
|
||||||
gint r;
|
gint r;
|
||||||
@ -527,9 +523,8 @@ test_reader_splice (void)
|
|||||||
|
|
||||||
g_clear_pointer (&writer1, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer1, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("writer1.syscap", &error);
|
reader = sysprof_capture_reader_new ("writer1.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
/* advance to the end of the reader to non-start boundary for fd */
|
/* advance to the end of the reader to non-start boundary for fd */
|
||||||
|
|
||||||
@ -546,14 +541,14 @@ test_reader_splice (void)
|
|||||||
r = sysprof_capture_reader_peek_type (reader, &type);
|
r = sysprof_capture_reader_peek_type (reader, &type);
|
||||||
g_assert_cmpint (r, ==, FALSE);
|
g_assert_cmpint (r, ==, FALSE);
|
||||||
|
|
||||||
r = sysprof_capture_reader_splice (reader, writer2, &error);
|
r = sysprof_capture_reader_splice (reader, writer2);
|
||||||
g_assert_no_error (error);
|
g_assert_true (r);
|
||||||
g_assert_cmpint (r, ==, TRUE);
|
|
||||||
|
|
||||||
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
||||||
g_clear_pointer (&writer2, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer2, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("writer2.syscap", 0);
|
reader = sysprof_capture_reader_new ("writer2.syscap");
|
||||||
|
g_assert_nonnull (reader);
|
||||||
|
|
||||||
for (i = 0; i < 1000; i++)
|
for (i = 0; i < 1000; i++)
|
||||||
{
|
{
|
||||||
@ -570,19 +565,16 @@ test_reader_splice (void)
|
|||||||
|
|
||||||
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("writer2.syscap", &error);
|
reader = sysprof_capture_reader_new ("writer2.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
r = sysprof_capture_reader_save_as (reader, "writer3.syscap", &error);
|
r = sysprof_capture_reader_save_as (reader, "writer3.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_true (r);
|
||||||
g_assert_cmpint (r, ==, TRUE);
|
|
||||||
|
|
||||||
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
g_clear_pointer (&reader, sysprof_capture_reader_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("writer3.syscap", &error);
|
reader = sysprof_capture_reader_new ("writer3.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
while (sysprof_capture_reader_skip (reader))
|
while (sysprof_capture_reader_skip (reader))
|
||||||
@ -603,7 +595,6 @@ test_reader_writer_log (void)
|
|||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
const SysprofCaptureLog *log;
|
const SysprofCaptureLog *log;
|
||||||
SysprofCaptureFrameType type;
|
SysprofCaptureFrameType type;
|
||||||
GError *error = NULL;
|
|
||||||
gint r;
|
gint r;
|
||||||
|
|
||||||
writer = sysprof_capture_writer_new ("log1.syscap", 0);
|
writer = sysprof_capture_writer_new ("log1.syscap", 0);
|
||||||
@ -614,9 +605,8 @@ test_reader_writer_log (void)
|
|||||||
|
|
||||||
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("log1.syscap", &error);
|
reader = sysprof_capture_reader_new ("log1.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
log = sysprof_capture_reader_read_log (reader);
|
log = sysprof_capture_reader_read_log (reader);
|
||||||
g_assert_nonnull (log);
|
g_assert_nonnull (log);
|
||||||
@ -657,7 +647,6 @@ test_reader_writer_mark (void)
|
|||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
const SysprofCaptureMark *mark;
|
const SysprofCaptureMark *mark;
|
||||||
SysprofCaptureFrameType type;
|
SysprofCaptureFrameType type;
|
||||||
GError *error = NULL;
|
|
||||||
gint r;
|
gint r;
|
||||||
|
|
||||||
writer = sysprof_capture_writer_new ("mark1.syscap", 0);
|
writer = sysprof_capture_writer_new ("mark1.syscap", 0);
|
||||||
@ -667,9 +656,8 @@ test_reader_writer_mark (void)
|
|||||||
|
|
||||||
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("mark1.syscap", &error);
|
reader = sysprof_capture_reader_new ("mark1.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
mark = sysprof_capture_reader_read_mark (reader);
|
mark = sysprof_capture_reader_read_mark (reader);
|
||||||
g_assert_nonnull (mark);
|
g_assert_nonnull (mark);
|
||||||
@ -704,7 +692,6 @@ test_reader_writer_metadata (void)
|
|||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
const SysprofCaptureMetadata *metadata;
|
const SysprofCaptureMetadata *metadata;
|
||||||
SysprofCaptureFrameType type;
|
SysprofCaptureFrameType type;
|
||||||
GError *error = NULL;
|
|
||||||
gint r;
|
gint r;
|
||||||
|
|
||||||
writer = sysprof_capture_writer_new ("metadata1.syscap", 0);
|
writer = sysprof_capture_writer_new ("metadata1.syscap", 0);
|
||||||
@ -717,9 +704,8 @@ test_reader_writer_metadata (void)
|
|||||||
|
|
||||||
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("metadata1.syscap", &error);
|
reader = sysprof_capture_reader_new ("metadata1.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
metadata = sysprof_capture_reader_read_metadata (reader);
|
metadata = sysprof_capture_reader_read_metadata (reader);
|
||||||
g_assert_nonnull (metadata);
|
g_assert_nonnull (metadata);
|
||||||
@ -752,7 +738,6 @@ test_reader_writer_file (void)
|
|||||||
SysprofCaptureWriter *writer;
|
SysprofCaptureWriter *writer;
|
||||||
SysprofCaptureReader *reader;
|
SysprofCaptureReader *reader;
|
||||||
SysprofCaptureFrameType type;
|
SysprofCaptureFrameType type;
|
||||||
GError *error = NULL;
|
|
||||||
gsize data_len;
|
gsize data_len;
|
||||||
guint count = 0;
|
guint count = 0;
|
||||||
gint fd;
|
gint fd;
|
||||||
@ -775,9 +760,8 @@ test_reader_writer_file (void)
|
|||||||
|
|
||||||
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
g_clear_pointer (&writer, sysprof_capture_writer_unref);
|
||||||
|
|
||||||
reader = sysprof_capture_reader_new ("file1.syscap", &error);
|
reader = sysprof_capture_reader_new ("file1.syscap");
|
||||||
g_assert_no_error (error);
|
g_assert_nonnull (reader);
|
||||||
g_assert (reader != NULL);
|
|
||||||
|
|
||||||
while (count < 2)
|
while (count < 2)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -43,8 +43,12 @@ main (gint argc,
|
|||||||
g_ptr_array_add (resolvers, sysprof_jitmap_symbol_resolver_new ());
|
g_ptr_array_add (resolvers, sysprof_jitmap_symbol_resolver_new ());
|
||||||
g_ptr_array_add (resolvers, sysprof_kernel_symbol_resolver_new ());
|
g_ptr_array_add (resolvers, sysprof_kernel_symbol_resolver_new ());
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (filename, &error)))
|
if (!(reader = sysprof_capture_reader_new (filename)))
|
||||||
g_error ("%s", error->message);
|
{
|
||||||
|
int errsv = errno;
|
||||||
|
g_error ("%s", g_strerror (errsv));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
for (guint r = 0; r < resolvers->len; r++)
|
for (guint r = 0; r < resolvers->len; r++)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -59,9 +59,9 @@ main (gint argc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (g_strcmp0 ("-", argv[1]) == 0)
|
if (g_strcmp0 ("-", argv[1]) == 0)
|
||||||
reader = sysprof_capture_reader_new_from_fd (dup (STDIN_FILENO), 0);
|
reader = sysprof_capture_reader_new_from_fd (dup (STDIN_FILENO));
|
||||||
else
|
else
|
||||||
reader = sysprof_capture_reader_new (argv[1], 0);
|
reader = sysprof_capture_reader_new (argv[1]);
|
||||||
|
|
||||||
if (reader == NULL)
|
if (reader == NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -73,10 +73,11 @@ main (gint argc,
|
|||||||
g_autoptr(SysprofCaptureReader) reader = NULL;
|
g_autoptr(SysprofCaptureReader) reader = NULL;
|
||||||
g_autoptr(GError) error = NULL;
|
g_autoptr(GError) error = NULL;
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (argv[i], &error)))
|
if (!(reader = sysprof_capture_reader_new (argv[i])))
|
||||||
{
|
{
|
||||||
|
int errsv = errno;
|
||||||
g_printerr ("Failed to create reader for \"%s\": %s\n",
|
g_printerr ("Failed to create reader for \"%s\": %s\n",
|
||||||
argv[i], error->message);
|
argv[i], g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -136,10 +136,11 @@ merge_files (gint argc,
|
|||||||
g_autoptr(SysprofCaptureReader) reader = NULL;
|
g_autoptr(SysprofCaptureReader) reader = NULL;
|
||||||
g_autoptr(GError) error = NULL;
|
g_autoptr(GError) error = NULL;
|
||||||
|
|
||||||
if (!(reader = sysprof_capture_reader_new (argv[i], &error)))
|
if (!(reader = sysprof_capture_reader_new (argv[i])))
|
||||||
{
|
{
|
||||||
|
int errsv = errno;
|
||||||
g_printerr ("Failed to create reader for \"%s\": %s\n",
|
g_printerr ("Failed to create reader for \"%s\": %s\n",
|
||||||
argv[i], error->message);
|
argv[i], g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -56,9 +56,10 @@ main (gint argc,
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((reader = sysprof_capture_reader_new (argv[1], &error)) == NULL)
|
if ((reader = sysprof_capture_reader_new (argv[1])) == NULL)
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
int errsv = errno;
|
||||||
|
g_printerr ("%s\n", g_strerror (errsv));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user