summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-08-19 01:20:13 +0000
committerLennart Poettering <lennart@poettering.net>2006-08-19 01:20:13 +0000
commitdbc658df4129eec260619f3fd31680ad7977f46c (patch)
tree14d680ba1b5f94db9156bef9bc498ff4a1137b9e
parentc9b6d55090a22256443b0a0f4b24acfa94bf4422 (diff)
add new "disable-shm" server config option
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1286 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/daemon/daemon-conf.c22
-rw-r--r--src/daemon/daemon-conf.h3
-rw-r--r--src/daemon/main.c15
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);