X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_backend.c;h=d4bec25ff956bfc21bc9c184b8230ca2963cbabc;hb=7502f47afaf537bbb67050b17ea095bb3976bf91;hp=8207f764377a34f5cb0fda0e41da8e56985dbd45;hpb=1f0ab1eb0409d23de5f67cc588c3ea4cee4d10e0;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_backend.c b/lib/ringbuffer/ring_buffer_backend.c index 8207f764..d4bec25f 100644 --- a/lib/ringbuffer/ring_buffer_backend.c +++ b/lib/ringbuffer/ring_buffer_backend.c @@ -12,11 +12,11 @@ #include #include #include -#include #include #include #include +#include #include /* for wrapper_vmalloc_sync_all() */ #include #include @@ -46,11 +46,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; /* @@ -59,7 +61,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; @@ -155,7 +157,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; @@ -172,7 +174,7 @@ depopulate: array_error: vfree(pages); pages_error: - clear_current_oom_origin(); + wrapper_clear_current_oom_origin(); not_enough_pages: return -ENOMEM; }