From c9d92278c08a81fed1c78e495fb93b441d4ebd38 Mon Sep 17 00:00:00 2001 From: YoungHun Kim Date: Fri, 23 Aug 2024 13:36:22 +0900 Subject: [PATCH] Change to run as multimedia_fw user/group instead of root separate systemd service for gen_rm_msgq and rsc_mgr_server to apply a different setting. gen_rm_msgq: Run as User::App::Shared to make message queue sharable with clients Change rsc_mgr_ready path (/run -> /tmp) because of User::App:Shared rsc_mgr_server: Set user/group as multimedia_fw/multimedia_fw Set process label as System Add rscmgr-service.conf for dbus conf Change-Id: I6c11fdd4f563ac3a3ea258879cdcc8b7f41e5ec6 --- include_internal/rms-dbus-interface.xml | 45 ------------------------- packaging/rscmgr-msgq.service | 10 ++++++ packaging/rscmgr-service.conf | 20 +++++++++++ packaging/rscmgr-service.service | 8 +++-- packaging/rscmgr-service.spec | 44 ++++++++++++++---------- rscmgr-service.manifest | 3 ++ src/CMessageQueue.cpp | 6 ++-- src/gen_rm_msgq.cpp | 2 +- 8 files changed, 69 insertions(+), 69 deletions(-) delete mode 100644 include_internal/rms-dbus-interface.xml create mode 100644 packaging/rscmgr-msgq.service create mode 100644 packaging/rscmgr-service.conf diff --git a/include_internal/rms-dbus-interface.xml b/include_internal/rms-dbus-interface.xml deleted file mode 100644 index 9a251e1..0000000 --- a/include_internal/rms-dbus-interface.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packaging/rscmgr-msgq.service b/packaging/rscmgr-msgq.service new file mode 100644 index 0000000..ddd0570 --- /dev/null +++ b/packaging/rscmgr-msgq.service @@ -0,0 +1,10 @@ +[Unit] +Description=Generate RM Message Queue +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/usr/bin/gen_rm_msgq + +[Install] +WantedBy=rscmgr-service.service diff --git a/packaging/rscmgr-service.conf b/packaging/rscmgr-service.conf new file mode 100644 index 0000000..80f40cc --- /dev/null +++ b/packaging/rscmgr-service.conf @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/packaging/rscmgr-service.service b/packaging/rscmgr-service.service index a3e4a3f..ea9a237 100644 --- a/packaging/rscmgr-service.service +++ b/packaging/rscmgr-service.service @@ -1,12 +1,14 @@ [Unit] -Description=service for resource manager -DefaultDependencies=no +Description=Resource Manager Service +Requires=rscmgr-msgq.service +After=rscmgr-msgq.service [Service] Type=simple +User=multimedia_fw +Group=multimedia_fw SmackProcessLabel=System Environment=LD_USE_LOAD_BIAS=1 -ExecStartPre=/usr/bin/gen_rm_msgq ExecStart=/usr/bin/rscmgr-service Restart=always MemoryMax=10M diff --git a/packaging/rscmgr-service.spec b/packaging/rscmgr-service.spec index 6dcebb9..3cf9699 100644 --- a/packaging/rscmgr-service.spec +++ b/packaging/rscmgr-service.spec @@ -1,12 +1,14 @@ Name: rscmgr-service Summary: Daemon for resource manager Version: 0.1 -Release: 7 +Release: 8 Group: Multimedia/Libraries License: Apache-2.0 Source0: %{name}-%{version}.tar.gz Source1: rscmgr-service.service -Source2: rscmgr-service-asan.conf +Source2: rscmgr-msgq.service +Source3: rscmgr-service-asan.conf +Source4: rscmgr-service.conf BuildRequires: cmake >= 2.8.12 BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(glib-2.0) @@ -16,6 +18,7 @@ BuildRequires: pkgconfig(capi-system-info) BuildRequires: pkgconfig(resource-information) BuildRequires: pkgconfig(capi-system-info) BuildRequires: pkgconfig(aul) +BuildRequires: pkgconfig(dbus-1) BuildRequires: python BuildRequires: python-xml BuildRequires: pkgconfig(libtzplatform-config) @@ -23,6 +26,7 @@ BuildRequires: pkgconfig(ttrace) BuildRequires: pkgconfig(syspopup) BuildRequires: pkgconfig(syspopup-caller) BuildRequires: pkgconfig(wayland-client) +Requires: security-config %description This package provides service for vconf key usage @@ -56,32 +60,38 @@ rm -rf %{buildroot} %make_install mkdir -p %{buildroot}%{_unitdir}/basic.target.wants mkdir -p %{buildroot}%{_sbindir} -install -m 0644 %SOURCE1 %{buildroot}%{_unitdir}/rscmgr-service.service -%install_service basic.target.wants rscmgr-service.service -ln -sf ../rscmgr-service.service %{buildroot}%{_unitdir}/basic.target.wants/ +mkdir -p %{buildroot}%{_sysconfdir}/dbus-1/system.d +cp %SOURCE4 %{buildroot}%{_sysconfdir}/dbus-1/system.d + +install -m 0644 %SOURCE2 %{buildroot}%{_unitdir}/rscmgr-msgq.service +%install_service basic.target.wants rscmgr-msgq.service +ln -sf ../rscmgr-msgq.service %{buildroot}%{_unitdir}/basic.target.wants/ + +install -m 0644 %SOURCE1 %{buildroot}%{_unitdir}/%{name}.service +%install_service basic.target.wants %{name}.service +ln -sf ../rscmgr-msgq.service %{buildroot}%{_unitdir}/basic.target.wants/ + %if "%{asan}" == "1" -mkdir -p %{buildroot}%{_unitdir}/rscmgr-service.service.d -install -m 644 %SOURCE2 %{buildroot}%{_unitdir}/rscmgr-service.service.d/rscmgr-service-asan.conf +mkdir -p %{buildroot}%{_unitdir}/%{name}.service.d +install -m 644 %SOURCE3 %{buildroot}%{_unitdir}/%{name}.service.d/%{name}-asan.conf %endif +cp %SOURCE4 %{buildroot}%{_sysconfdir}/dbus-1/system.d %clean rm -rf %{buildroot} -%post - -%{TZ_SYS_BIN}/chsmack -e "System::Run" %{TZ_SYS_BIN}/gen_rm_msgq - %files %manifest rscmgr-service.manifest %license LICENSE.APLv2 -%defattr(-,root,root,-) -%{TZ_SYS_BIN}/rscmgr-service %{TZ_SYS_BIN}/gen_rm_msgq -%{_unitdir}/rscmgr-service.service -%{_unitdir}/basic.target.wants/rscmgr-service.service +%{TZ_SYS_BIN}/%{name} +%{_unitdir}/rscmgr-msgq.service +%{_unitdir}/basic.target.wants/rscmgr-msgq.service +%{_unitdir}/%{name}.service +%{_unitdir}/basic.target.wants/%{name}.service %if "%{asan}" == "1" -%{_unitdir}/rscmgr-service.service.d/rscmgr-service-asan.conf +%{_unitdir}/%{name}.service.d/${name}-asan.conf %endif +%{_sysconfdir}/dbus-1/system.d/%{name}.conf %files devel -%defattr(-,root,root,-) diff --git a/rscmgr-service.manifest b/rscmgr-service.manifest index 75b0fa5..78b4732 100644 --- a/rscmgr-service.manifest +++ b/rscmgr-service.manifest @@ -2,4 +2,7 @@ + + + diff --git a/src/CMessageQueue.cpp b/src/CMessageQueue.cpp index afccaf1..846f28d 100644 --- a/src/CMessageQueue.cpp +++ b/src/CMessageQueue.cpp @@ -77,7 +77,7 @@ int CMessageQueue::send(rms_msg_response *response) while (msgsnd(msgq_id, (void*) response, sizeof(rms_msg_response) - sizeof(long), 0) == -1) { SERVER_ERR("failed to send response message (%d), retry(%d) - type(%d)/cid(%d)", errno, retry, response->type, response->handle); - if (errno == EIDRM) { // errno 43 : identifier removed + if (errno == EIDRM) { /* errno 43 : identifier removed */ SERVER_ERR("msgid removed from system"); if (recover() != RMS_OK) return RMS_ERROR; @@ -88,11 +88,11 @@ int CMessageQueue::send(rms_msg_response *response) } } - if (retry >= 5) { //timeout + if (retry >= 5) { /* timeout */ return RMS_ERROR; } - usleep(20*1000); // 20ms + usleep(20 * 1000); /* 20ms */ retry++; } diff --git a/src/gen_rm_msgq.cpp b/src/gen_rm_msgq.cpp index 4efd82e..03d806f 100644 --- a/src/gen_rm_msgq.cpp +++ b/src/gen_rm_msgq.cpp @@ -89,7 +89,7 @@ int main() SERVER_INFO("msgq_tx (%d), msgq_rx(%d)", msgq_tx, msgq_rx); FILE *fp = NULL; - const char *flag_path = "/run/rsc_mgr_ready"; + const char *flag_path = "/tmp/rsc_mgr_ready"; fp = fopen(flag_path,"w"); -- 2.34.1