From dbc658df4129eec260619f3fd31680ad7977f46c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Aug 2006 01:20:13 +0000 Subject: add new "disable-shm" server config option git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1286 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/daemon/daemon-conf.c | 22 +++++++++++++--------- src/daemon/daemon-conf.h | 3 ++- src/daemon/main.c | 15 +++++++++------ 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c index 2cb06697..dd478126 100644 --- a/src/daemon/daemon-conf.c +++ b/src/daemon/daemon-conf.c @@ -73,7 +73,8 @@ static const pa_daemon_conf default_conf = { .config_file = NULL, .use_pid_file = 1, .system_instance = 0, - .no_cpu_limit = 0 + .no_cpu_limit = 0, + .disable_shm = 0 #ifdef HAVE_SYS_RESOURCE_H , .rlimit_as = { .value = 0, .is_set = 0 }, .rlimit_core = { .value = 0, .is_set = 0 }, @@ -248,6 +249,7 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) { { "use-pid-file", pa_config_parse_bool, NULL }, { "system-instance", pa_config_parse_bool, NULL }, { "no-cpu-limit", pa_config_parse_bool, NULL }, + { "disable-shm", pa_config_parse_bool, NULL }, #ifdef HAVE_SYS_RESOURCE_H { "rlimit-as", parse_rlimit, NULL }, { "rlimit-core", parse_rlimit, NULL }, @@ -281,21 +283,22 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) { table[13].data = &c->use_pid_file; table[14].data = &c->system_instance; table[15].data = &c->no_cpu_limit; + table[16].data = &c->disable_shm; #ifdef HAVE_SYS_RESOURCE_H - table[16].data = &c->rlimit_as; - table[17].data = &c->rlimit_core; - table[18].data = &c->rlimit_data; - table[19].data = &c->rlimit_fsize; - table[20].data = &c->rlimit_nofile; - table[21].data = &c->rlimit_stack; + table[17].data = &c->rlimit_as; + table[18].data = &c->rlimit_core; + table[19].data = &c->rlimit_data; + table[20].data = &c->rlimit_fsize; + table[21].data = &c->rlimit_nofile; + table[22].data = &c->rlimit_stack; #ifdef RLIMIT_NPROC - table[22].data = &c->rlimit_nproc; + table[23].data = &c->rlimit_nproc; #endif #ifdef RLIMIT_MEMLOCK #ifndef RLIMIT_NPROC #error "Houston, we have a numbering problem!" #endif - table[23].data = &c->rlimit_memlock; + table[24].data = &c->rlimit_memlock; #endif #endif @@ -367,6 +370,7 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) { pa_strbuf_printf(s, "use-pid-file = %i\n", c->use_pid_file); pa_strbuf_printf(s, "system-instance = %i\n", !!c->system_instance); pa_strbuf_printf(s, "no-cpu-limit = %i\n", !!c->no_cpu_limit); + pa_strbuf_printf(s, "disable_shm = %i\n", !!c->disable_shm); #ifdef HAVE_SYS_RESOURCE_H pa_strbuf_printf(s, "rlimit-as = %li\n", c->rlimit_as.is_set ? (long int) c->rlimit_as.value : -1); pa_strbuf_printf(s, "rlimit-core = %li\n", c->rlimit_core.is_set ? (long int) c->rlimit_core.value : -1); diff --git a/src/daemon/daemon-conf.h b/src/daemon/daemon-conf.h index 84208336..b4b833ad 100644 --- a/src/daemon/daemon-conf.h +++ b/src/daemon/daemon-conf.h @@ -59,7 +59,8 @@ typedef struct pa_daemon_conf { auto_log_target, use_pid_file, system_instance, - no_cpu_limit; + no_cpu_limit, + disable_shm; char *script_commands, *dl_search_path, *default_script_file; pa_log_target_t log_target; pa_log_level_t log_level; diff --git a/src/daemon/main.c b/src/daemon/main.c index 95ba6dd5..8b816b9a 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -306,10 +306,10 @@ static void set_all_rlimits(const pa_daemon_conf *conf) { #endif int main(int argc, char *argv[]) { - pa_core *c; + pa_core *c = NULL; pa_strbuf *buf = NULL; - pa_daemon_conf *conf; - pa_mainloop *mainloop; + pa_daemon_conf *conf = NULL; + pa_mainloop *mainloop = NULL; char *s; int r, retval = 1, d = 0; @@ -559,8 +559,9 @@ int main(int argc, char *argv[]) { mainloop = pa_mainloop_new(); assert(mainloop); - c = pa_core_new(pa_mainloop_get_api(mainloop), 1); - assert(c); + if (!(c = pa_core_new(pa_mainloop_get_api(mainloop), !conf->disable_shm))) + goto finish; + c->is_system_instance = !!conf->system_instance; r = pa_signal_init(pa_mainloop_get_api(mainloop)); @@ -651,12 +652,14 @@ int main(int argc, char *argv[]) { pa_cpu_limit_done(); pa_signal_done(); - pa_mainloop_free(mainloop); pa_log_info("Daemon terminated."); finish: + if (mainloop) + pa_mainloop_free(mainloop); + if (conf) pa_daemon_conf_free(conf); -- cgit