X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fdefaults.c;fp=src%2Fcommon%2Fdefaults.c;h=0000000000000000000000000000000000000000;hp=2550784cf1b01cf834f695e51e16c3cadf58d7a7;hb=a6bc4ca9d659caf016ef932fcd944029737ac57c;hpb=97535efaa975ca52bf02c2d5e76351bfd2e3defa diff --git a/src/common/defaults.c b/src/common/defaults.c deleted file mode 100644 index 2550784cf..000000000 --- a/src/common/defaults.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (C) 2012 Simon Marchi - * - * SPDX-License-Identifier: GPL-2.0-only - * - */ - -#define _LGPL_SOURCE -#include -#include -#include -#include -#include - -#include "defaults.h" -#include "macros.h" -#include "error.h" - -static int pthread_attr_init_done; -static pthread_attr_t tattr; - -static size_t get_page_size(void) -{ - const long ret = sysconf(_SC_PAGE_SIZE); - - if (ret < 0) { - /* - * Fatal error since there is no safe way to recover from this. - */ - PERROR("Failed to get system page size using sysconf(_SC_PAGE_SIZE)"); - abort(); - } - - return (size_t) ret; -} - -size_t default_get_channel_subbuf_size(void) -{ - return max(_DEFAULT_CHANNEL_SUBBUF_SIZE, get_page_size()); -} - -size_t default_get_metadata_subbuf_size(void) -{ - return max(DEFAULT_METADATA_SUBBUF_SIZE, get_page_size()); -} - -size_t default_get_kernel_channel_subbuf_size(void) -{ - return max(DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE, get_page_size()); -} - -size_t default_get_ust_pid_channel_subbuf_size(void) -{ - return max(DEFAULT_UST_PID_CHANNEL_SUBBUF_SIZE, get_page_size()); -} - -size_t default_get_ust_uid_channel_subbuf_size(void) -{ - return max(DEFAULT_UST_UID_CHANNEL_SUBBUF_SIZE, get_page_size()); -} - -pthread_attr_t *default_pthread_attr(void) -{ - if (pthread_attr_init_done) { - return &tattr; - } - - WARN("Uninitialized pthread attributes, using libc defaults."); - return NULL; -} - -static void __attribute__((constructor)) init_default_pthread_attr(void) -{ - int ret; - struct rlimit rlim; - size_t pthread_ss, system_ss, selected_ss; - - ret = pthread_attr_init(&tattr); - if (ret) { - errno = ret; - PERROR("pthread_attr_init"); - goto error; - } - - /* Get system stack size limits. */ - ret = getrlimit(RLIMIT_STACK, &rlim); - if (ret < 0) { - PERROR("getrlimit"); - goto error_destroy; - } - DBG("Stack size limits: soft %lld, hard %lld bytes", - (long long) rlim.rlim_cur, - (long long) rlim.rlim_max); - - /* - * getrlimit() may return a stack size of "-1", meaning "unlimited". - * In this case, we impose a known-good default minimum value which will - * override the libc's default stack size if it is smaller. - */ - system_ss = rlim.rlim_cur != -1 ? rlim.rlim_cur : - DEFAULT_LTTNG_THREAD_STACK_SIZE; - - /* Get pthread default thread stack size. */ - ret = pthread_attr_getstacksize(&tattr, &pthread_ss); - if (ret < 0) { - PERROR("pthread_attr_getstacksize"); - goto error_destroy; - } - DBG("Default pthread stack size is %zu bytes", pthread_ss); - - selected_ss = max_t(size_t, pthread_ss, system_ss); - if (selected_ss < DEFAULT_LTTNG_THREAD_STACK_SIZE) { - DBG("Default stack size is too small, setting it to %zu bytes", - (size_t) DEFAULT_LTTNG_THREAD_STACK_SIZE); - selected_ss = DEFAULT_LTTNG_THREAD_STACK_SIZE; - } - - if (rlim.rlim_max > 0 && selected_ss > rlim.rlim_max) { - WARN("Your system's stack size restrictions (%zu bytes) may be too low for the LTTng daemons to function properly, please set the stack size limit to at least %zu bytes to ensure reliable operation", - (size_t) rlim.rlim_max, (size_t) DEFAULT_LTTNG_THREAD_STACK_SIZE); - selected_ss = (size_t) rlim.rlim_max; - } - - ret = pthread_attr_setstacksize(&tattr, selected_ss); - if (ret < 0) { - PERROR("pthread_attr_setstacksize"); - goto error_destroy; - } - pthread_attr_init_done = 1; -error: - return; -error_destroy: - ret = pthread_attr_destroy(&tattr); - if (ret) { - errno = ret; - PERROR("pthread_attr_destroy"); - } -} - -static void __attribute__((destructor)) fini_default_pthread_attr(void) -{ - int ret; - - if (!pthread_attr_init_done) { - return; - } - - ret = pthread_attr_destroy(&tattr); - if (ret) { - errno = ret; - PERROR("pthread_attr_destroy"); - } -}