summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2018-01-22 10:07:42 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2018-01-22 10:07:42 +0100
commit2db7c770244f97c8674b6e9c78ed50319b38fea3 (patch)
tree4c3710d0f45e54d12187090f9abad8fb142b7a91
parentef97895c1a00bddb7436c928e27f767496cfea5c (diff)
afm-user-session: Create afm-user-session
This new executable is the simplest user session manager: it waits the signal SIGTERM to stop and thus release the session. Change-Id: I557f27386c19ca3e2b28b21dd6a58918e9ca47be Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/afm-user-session.c38
2 files changed, 41 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9921660..8f98c0d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -175,6 +175,9 @@ if(libsystemd_FOUND AND AFB_FOUND)
LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/afm-binding.export-map"
)
install(TARGETS afm-binding LIBRARY DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/afm)
+
+ add_executable(afm-user-session afm-user-session.c)
+ install(TARGETS afm-user-session DESTINATION ${CMAKE_INSTALL_BINDIR})
else()
MESSAGE(STATUS "Not creating daemons")
endif()
diff --git a/src/afm-user-session.c b/src/afm-user-session.c
new file mode 100644
index 0000000..51acafe
--- /dev/null
+++ b/src/afm-user-session.c
@@ -0,0 +1,38 @@
+/*
+ Copyright 2018 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#include <signal.h>
+#include <systemd/sd-daemon.h>
+
+int main()
+{
+ sigset_t ass, bss;
+
+ sigemptyset(&ass);
+ sigaddset(&ass, SIGTERM);
+
+ sigfillset(&bss);
+ sigdelset(&bss, SIGTERM);
+
+ sd_notify(0, "READY=1");
+ sigprocmask(SIG_SETMASK, &bss, 0);
+ sigwaitinfo(&ass, 0);
+
+ return 0;
+}
+