mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
libsysprof-capture: remove use of GAtomicRCBox
If we backport to an older GLib release, we won't have the newer atomic helpers available. It's really not too much burden to do that manually if it means we can run on older systems.
This commit is contained in:
@ -61,6 +61,7 @@ G_STATIC_ASSERT (sizeof (MappedRingHeader) == 16);
|
|||||||
*/
|
*/
|
||||||
struct _MappedRingBuffer
|
struct _MappedRingBuffer
|
||||||
{
|
{
|
||||||
|
volatile gint ref_count;
|
||||||
int mode;
|
int mode;
|
||||||
int fd;
|
int fd;
|
||||||
void *map;
|
void *map;
|
||||||
@ -199,7 +200,8 @@ mapped_ring_buffer_new_reader (gsize buffer_size)
|
|||||||
header->offset = page_size;
|
header->offset = page_size;
|
||||||
header->size = buffer_size - page_size;
|
header->size = buffer_size - page_size;
|
||||||
|
|
||||||
self = g_atomic_rc_box_new0 (MappedRingBuffer);
|
self = g_slice_new0 (MappedRingBuffer);
|
||||||
|
self->ref_count = 1;
|
||||||
self->mode = MODE_READER;
|
self->mode = MODE_READER;
|
||||||
self->body_size = buffer_size - page_size;
|
self->body_size = buffer_size - page_size;
|
||||||
self->fd = fd;
|
self->fd = fd;
|
||||||
@ -296,7 +298,8 @@ mapped_ring_buffer_new_writer (gint fd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
self = g_atomic_rc_box_new0 (MappedRingBuffer);
|
self = g_slice_new0 (MappedRingBuffer);
|
||||||
|
self->ref_count = 1;
|
||||||
self->mode = MODE_WRITER;
|
self->mode = MODE_WRITER;
|
||||||
self->fd = fd;
|
self->fd = fd;
|
||||||
self->body_size = buffer_size - page_size;
|
self->body_size = buffer_size - page_size;
|
||||||
@ -325,13 +328,22 @@ mapped_ring_buffer_finalize (MappedRingBuffer *self)
|
|||||||
void
|
void
|
||||||
mapped_ring_buffer_unref (MappedRingBuffer *self)
|
mapped_ring_buffer_unref (MappedRingBuffer *self)
|
||||||
{
|
{
|
||||||
g_atomic_rc_box_release_full (self, (GDestroyNotify)mapped_ring_buffer_finalize);
|
g_return_if_fail (self != NULL);
|
||||||
|
g_return_if_fail (self->ref_count > 0);
|
||||||
|
|
||||||
|
if (g_atomic_int_dec_and_test (&self->ref_count))
|
||||||
|
mapped_ring_buffer_finalize (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
MappedRingBuffer *
|
MappedRingBuffer *
|
||||||
mapped_ring_buffer_ref (MappedRingBuffer *self)
|
mapped_ring_buffer_ref (MappedRingBuffer *self)
|
||||||
{
|
{
|
||||||
return g_atomic_rc_box_acquire (self);
|
g_return_val_if_fail (self != NULL, NULL);
|
||||||
|
g_return_val_if_fail (self->ref_count > 0, NULL);
|
||||||
|
|
||||||
|
g_atomic_int_inc (&self->ref_count);
|
||||||
|
|
||||||
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
gint
|
||||||
|
|||||||
Reference in New Issue
Block a user