X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_backend.c;h=d430f71cc837d578f3ec179d4a81759b4badf8d4;hb=b1ddb9416fae4adb1e74d5218cecc4d152e36468;hp=d300980dd7fec1204ce8732d0fd0404bdba88c70;hpb=362fee9413ea3b73587f53f2574ce6b5efaea14e;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_backend.c b/lib/ringbuffer/ring_buffer_backend.c index d300980d..d430f71c 100644 --- a/lib/ringbuffer/ring_buffer_backend.c +++ b/lib/ringbuffer/ring_buffer_backend.c @@ -25,11 +25,11 @@ #include #include #include -#include #include #include #include +#include #include /* for wrapper_vmalloc_sync_all() */ #include #include @@ -59,11 +59,13 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config num_pages = size >> PAGE_SHIFT; /* - * Verify that the number of pages requested for that buffer is smaller - * than the number of available pages on the system. si_mem_available() - * returns an _estimate_ of the number of available pages. + * Verify that there is enough free pages available on the system for + * the current allocation request. + * wrapper_check_enough_free_pages uses si_mem_available() if available + * and returns if there should be enough free pages based on the + * current estimate. */ - if (num_pages > si_mem_available()) + if (!wrapper_check_enough_free_pages(num_pages)) goto not_enough_pages; /* @@ -72,7 +74,7 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config * end up running out of memory because of this buffer allocation, we * want to kill the offending app first. */ - set_current_oom_origin(); + wrapper_set_current_oom_origin(); num_pages_per_subbuf = num_pages >> get_count_order(num_subbuf); subbuf_size = chanb->subbuf_size; @@ -168,7 +170,7 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config * will not fault. */ wrapper_vmalloc_sync_all(); - clear_current_oom_origin(); + wrapper_clear_current_oom_origin(); vfree(pages); return 0; @@ -185,7 +187,7 @@ depopulate: array_error: vfree(pages); pages_error: - clear_current_oom_origin(); + wrapper_clear_current_oom_origin(); not_enough_pages: return -ENOMEM; }